单片机用的是AT89S52,以下程序能正常运行,且用串口调试助手观察,每发送一个数据,发回这个数据+1的值,其余时间均在while(RI==0)处等待,真是不明白其中为什么RI位硬件没有自动置1,似乎是仅仅在接收的时候RI才是1啊,如果这样的话,中断服务程序怎么编啊,求助啊。
#include<reg52.h> unsigned char num; void UART_init() { SCON=0x50; TMOD|=0x20; TMOD&=0xef; TH1=0xfd; TL1=0xfd; TR1=1; } void UART_receive() { while(RI==0); num=SBUF; num++; SBUF=num; } void main() { UART_init(); while(1) { UART_receive(); } } |