251
{
if( rsiostat() )
{
c = rsio();
switch( c )
{
case '1': type("\r\ntest 1\r\n"); break;
case '2': type("\r\ntest 2\r\n"); break;
case '3': type("\r\ntest 3\r\n"); break;
default: wsio( c ); break;
}
}
}
}
При организации асинхронного обмена по прерыванию при приеме байта с
линии происходит прерывание и передача управления соответствующей
программе-обработчику, который читает принятый байт из порта данных
контроллера UART и, к примеру, помещает его в специальный буфер-очередь
принятых байт, доступный прерванной программе (см. раздел А.2.4). По
завершении процедуры обработки прерывания управление передается в
прерванную программу, которая при желании (в любом удобном месте
алгоритма) может забрать принятый байт. С другой стороны, при завершении
отправки контроллером очередного байта также происходит прерывание,
сигнализирующее о том, что байт послан и в буфер UART можно поместить
новые данные. Обработчик прерывания, при наличии данных в исходящей
очереди, записывает очередной байт в порт данных контроллера и запускает
посылку. Основная же программа может, не заботясь о готовности или
неготовности контроллера принять очередной байт, может спокойно помещать
данные в исходящий буфер, а всю работу с устройством выполнит обработчик
прерываний, когда оно (устройство) будет готово.
Достарыңызбен бөлісу: