Привожу кусок кода с обработкой 9-ого бита, может кому пригодится. Здесь 0x81, 0x3F и 0xC2 это адресные байты, которые мне надо обрабатывать. У вас могут быть свои.
// Initialize the UART for 9600-9-N
GP1CON = BIT0 + BIT4; // Select UART functionality for P1.0/P1.1
COMCON0 = BIT7; // Enable access to COMDIV registers
COMDIV0 = 0x21; // Set baud rate to 9600.
COMDIV1 = 0x00;
COMCON0 = BIT0 + BIT1 + BIT3+BIT4
COMIEN0 = BIT0 + BIT1; // Enable UART interrupts when Rx full and Tx buffer empty.
// Прерывания
#pragma vector = 0x18
__irq __arm void IRQ_Handler(void)
{
unsigned long IRQSTATUS = 0;
unsigned char ucCOMIID0 = 0;
unsigned char ucCOMSTA0 = 0;
unsigned char UDR_t;
IRQSTATUS = IRQSTA; // Read off IRQSTA register
if ((IRQSTATUS & BIT11) == BIT11) //UART interrupt source
{
ucCOMIID0 = COMIID0;
if ((ucCOMIID0 & 0x4) == 0x4) // Receive buffer empty
{
UDR_t=COMRX;
ucCOMSTA0=COMSTA0;
if (((ucCOMSTA0 & 0x4) == 0x4)&&((UDR_t==0x81)||(UDR_t==0x3F))) bit9=1;
else if (((ucCOMSTA0 & 0x4) != 0x4)&&(UDR_t==0xC2)) bit9=1;
else bit9=0;
....................
}
}
}
Сообщение отредактировал gmp - Nov 24 2010, 10:17
Причина редактирования: Вопросы таблеток здесь не обсуждаются