相关设置:通讯速率是9600bps
U1FCR = 0x01; // 使能FIFO,设置1个字节触发点
U1IER = 0x01; // 使能接收中断
中断程序:
void IRQ_UART1(void)
{
uint8 Dummy;
u1GNum = 0;
while ((U1IIR & 0x01) == 0) // 判断是否有中断挂起
{
switch (U1IIR & 0x0F) // 判断中断标志
{
case 0x04: // 接收数据中断
u1GRcvNew = 1; // 置接收新数据标志
Dummy = U1RBR; // 读数据
if (u1GNum < 25)
{
u1GRcvBuf[u1GNum] = Dummy; // 接收到的数据进缓存
u1GNum++;
}
break;
case 0x0C: // 字符超时中断(字符数不足上边设定的数值时)
u1GRcvNew = 1;
while ((U1LSR & 0x01) == 0x01) // 判断数据是否接收完毕
{
u1GRcvBuf[u1GNum] = U1RBR;
u1GNum++;
}
break;
default:
break;
}
}
VICVectAddr = 0x00;
}
|