51单片机串口中断的问题

2024-11-08 23:11:05
推荐回答(1个)
回答1:

我粗看了一下,问题可能出在终端程序里。
void serial() interrupt 4

{
if(RI==1)
{
RI=0;
if(SBUF==2)
count=0;
SBUF=count;//问题在这里
ES=0;
while(!TI);
TI=0;
ES=1;
}
}

按照常理SBUF=count就会启动发送。。但是你要看啊,你在串口的中断程序里写这句什么用都没有的。。串口中断程序里面是自动屏蔽串口中断的。。不然多集嵌套会混乱的。你要把SBUF放到中断程序外面才行。

你如果希望在已收到东西就发送的话可以在中断里设一个标志位abc..
void serial() interrupt 4

{
if(RI==1)
{
RI=0;
if(SBUF==2)
count=0;
if(TI==1)
{
TI=0;
}
abc=1;
}

main()
{
if (abc)
{
SBUF=count;
abc=0;
}