[原创]INT0 作模拟串口的收。数据经常收错,大家来看看什么原因。程序如下
INT0_INTERRUPT: procedure interrupt X0_VECT using X0_REG_BANK;
declare COUNT byte,
cc byte;
TL2 = 020H;
TH2 = 0FFH; /*保证第一位是1.5bit*/
TR2 = 1;
TF2 = 0;
cc = 0;
do COUNT = 0 to 7;
TF2 = 0;
do while (TF2 =0);
SDA =not SDA;
end;
cc = shr(cc,1);
if(RXD1 = 1)then cc = cc + 80H;
end;
TL2 = 0A0H;
TH2 = 0FFH; /*保证第一位是0.5bit*/
TF2 = 0;
JFQ_RX_FIFO(JFQ_RX_INP_PTR) = cc;
JFQ_RX_INP_PTR =JFQ_RX_INP_PTR + 1;
if JFQ_RX_INP_PTR =JFQ_RX_BUF_SIZE
then JFQ_RX_INP_PTR =0;
do while (TF2 =0);
SDA =not SDA;
end;
TR2 = 0;
end INT0_INTERRUPT;
串口数据的开始位为0时,进入中断。然后接收数据。我分析是不是进入中断是有延时的,从而影响以后的时序