该程序下载后,单片机为什么从一开始就不停发重复的数据给PC?
#include <reg51.h>
#define FOSC 35000000L
#define BUAD (256-FOSC/32/9600)
sfr AUXR=0x8e;
unsigned char a;
void uart_init() //串口初始化
{
SCON=0x50; //方式1,波特率可变
PCON=0x00;
AUXR=0x40; //定时器1工作模式1T
EA=1;
ES=1;
TMOD=0x20;
TH1=BUAD;
TL1=BUAD;
TR1=1;
}
void main()
{
uart_init();
while(1);
}
void uart_int() interrupt 4
{
if(RI)
{
RI=0;
a=SBUF;
}
SBUF=a+1;
while(!TI);
TI=0;
SBUF=a+2; //貌似是这句话引起的,但我不知道原因
}
[解决办法]
可能是没有清除中断标志。
[解决办法]
额,楼主的代码好像有问题的嘛。为什么void uart_int() interrupt 4这个函数好像没有被调用??
[解决办法]
看看 manual, 记得 如果写入“发送缓冲,自动设置发送中断标志”