用C8051F410, 需要从串口接收两个字节,收到后置标志位,程序如下 vvoid comm0_rx(void) interrupt 4 { m=0; while(m<2) { if(RI0) { RI0=0; recdata[m]=SBUF0; m++; } } m=0; while(m<2) { SBUF0=recdata[m]; while(!TI0); TI0=0; m++; } flag0=1; flag1=1; ES0=0; } 程序运行后,接收及发送都没问题,但就是最后置标志位语句不是每次都能执行,偶尔接收一次就能执行,大多数要接收好几次才能置位(次数不定)。开始时接收和发送是在一起,后来分开,甚至置位语句放在接收与发送之间也没用。哪位大侠遇到过这种问题? |