Обработчик прерывания:
Код
void UART_IRQHandler(void)
{
Byte B;
Byte Er;
Byte Src;
do {
Src = U1IIR;
switch(Src & 0x0E) {
//Er
case 0x06: {
Er = U1LSR;
break;
}
//RxData
case 0x04: {
while (U1LSR_bit.DR != 0)
InQueue.Put(U1RBR);
break;
}
//CTI
case 0x0C: {
while (U1LSR_bit.DR != 0)
InQueue.Put(U1RBR);
break;
}
//THRE
case 0x02: {
if (OutQueue.Get(&B))
U1THR = B;
break;
}
}
}
while((Src & 0x01) == 0);
}
{
Byte B;
Byte Er;
Byte Src;
do {
Src = U1IIR;
switch(Src & 0x0E) {
//Er
case 0x06: {
Er = U1LSR;
break;
}
//RxData
case 0x04: {
while (U1LSR_bit.DR != 0)
InQueue.Put(U1RBR);
break;
}
//CTI
case 0x0C: {
while (U1LSR_bit.DR != 0)
InQueue.Put(U1RBR);
break;
}
//THRE
case 0x02: {
if (OutQueue.Get(&B))
U1THR = B;
break;
}
}
}
while((Src & 0x01) == 0);
}
Заранее спасибо.