我有一段程序,大家看一下,有什么问题 #include <reg52.h>
void initial(); void Uart_SendByte(char buf);
void delay(int count); void main() { initial(); Uart_SendByte('U'); // while(1); }
void initial() { IE=0x90; //中断允许寄存器 SCON=0x50; //串行口控制寄存器 方式1 TMOD=0x20; //timer1 方式2 PCON=0x80; //波特率加倍 TH1=0xFA; TR1=1; }
void Uart_SendByte(char buf) { SBUF = buf; while(TI == 0); TI = 0; } void delay(int count) { for(;count>0;count--); }
void serial () interrupt 4 using 3 { unsigned char temp; if(RI) { RI = 0; temp = SBUF; } Uart_SendByte(temp); }
程序结果就是单片机不停的发U; 如果加上main()函数中的while(1),单片机就在发了一个U之后,不停的发0x00; 如果去掉void serial () interrupt 4 的中断接受函数,同时去掉main()中的while(1),程序才得以正常。 不明白串口的中断接受函数为何有此影响,请指教。
|