Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Листинг 14.2. Функция Serial Read.

Алгоритм 13.3. Шаблоны со случайным выбором. | Листинг 13.2. Муха (FLY.C). | Листинг 13.3. Одинокая муха. (DFLY.C). | Листинг 13.4. Умная «Муха» (BFLY.C). | Состояние Существо 3: Хныкалка | Алгоритм 13.6. Использование плотности вероятностей в выборе состояния. | Алгоритм 13.7. Путь наружу. | Последовательный порт Базовый адрес порта | Штырьковый разъем | Вектор Номер Адресная функция |


Читайте также:
  1. IV. Перепишите и переведите предложения, обращая внимание на употребление герундия в разных функциях.
  2. IV. Перепишите и переведите предложения, обращая внимание на употребление герундия в разных функциях.
  3. X. Прочитайте и переведите предложения, обращая внимание на употребление инфинитива в различных функциях.
  4. XIV. Прочитайте и переведите предложения, обращая внимание на употребление Participle I в разных функциях.
  5. XV. Прочитайте и переведите предложения, обращая внимание на употребление Participle II в разных функциях.
  6. Бала кездегі қалқанша бездің гипофункциялық көріністері
  7. В.7. Производная функции комплексного переменного. Геометрический смысл аргумента и модуля производной. Условия Коши – Римана. Аналитическая функция.

int Serial_Read()

{

// функция возвращает последний записанный

//в программный буфер символ

int ch;

//ждем завершения функции обработки прерывания

while(serial_lock){}

//проверяем, есть ли символы в буфере

if (ser_end!= ser_start)

{

// меняем значение начальной позиции буфера

if (++ser_start > SERIAL_BUFF_SIZE-1) ser_start = 0;

// читаем символ

ch = ser_buffer[ser_start];

// в буфере стало одним символом меньше

if (char_ready > 0) --char_ready;

// возвращаем символ'вызвавшей функции

return(ch);

} // конец действий, если буфер не пуст

else

// буфер был пуст - возвращаем 0

return(0);

} // конец функции

Функция serial_read получает следующий доступный символ из буфера и возвращает его. Если в буфере не осталось данных, она возвращает 0.

Запись в последовательный порт

Нам осталось сделать функцию, которая могла бы записывать символы в последовательный порт. Для выполнения этого достаточно записать данные в регистр поддержки передачи. Однако мы должны сделать так, чтобы одновременно выполнялись два условия:

§ Во-первых, ISR не может быть активен;

§ Во-вторых, регистр поддержки передачи должен быть пуст.

Первое условие выполняется как само собой разумеющееся. Однако второе должно быть проверено с помощью пятого бита регистра состояния линии. Если этот бит установлен, передатчик пуст и мы можем послать в порт следующий символ.

Листинг 14.3 содержит программу для передачи символа.


Дата добавления: 2015-07-12; просмотров: 81 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Листинг 14.1. Операция ISR.| Листинг 14.4. Коммуникационная программа NLINK (NLINK.C).

mybiblioteka.su - 2015-2024 год. (0.006 сек.)