用到m051 UART ,用的UART中断接收数据,为什么我每接受一次就得加点延时才能正确接收呢?
下面是我接收中断的代码:
void UART0_IRQHandler(void)
{
receiver_count = 0;
while(UA0_ISR&RDA_IF)
{
while (UA0_FSR & RX_EMPTY);
rec_buff[receiver_count] = UA0_RBR;
receiver_count++;
delay_ms(1);
}
if((CRCSS(rec_buff,receiver_count))==0&&(receiver_count==5+rec_buff[2]))
{
receive_right=1; //接收数据正确标志位
rec_err_count=0;
}
data_save(); //保存,校验不成功,不保存
} |