51单片机程序SBUF问题
答案:3 悬赏:70 手机版
解决时间 2021-02-04 14:34
- 提问者网友:雾里闻花香
- 2021-02-04 08:25
在keil中仿真的时候想在串口中断程序中SBUF的值赋给某一临时变量,结果临时变量的值并没有改变,这是为什么呢
最佳答案
- 五星知识达人网友:woshuo
- 2021-02-04 09:53
请确认:
1.串口模式,波特率等设置正确;
2.已经开了中断,包括EA,ES等;
3.有不同的字符送入UART;
4.已经在中断函数中清除了RI,即设置RI=0,否则第1次收到字符后,由于没有清掉RI,这个中断函数会不断地响应,相当于死循环。
1.串口模式,波特率等设置正确;
2.已经开了中断,包括EA,ES等;
3.有不同的字符送入UART;
4.已经在中断函数中清除了RI,即设置RI=0,否则第1次收到字符后,由于没有清掉RI,这个中断函数会不断地响应,相当于死循环。
全部回答
- 1楼网友:你可爱的野爹
- 2021-02-04 11:34
上面的应该是发送程序,sbuf只能发送或接受一个字节,也用不到for循环,接受的时候最好有一个判断字节长度的变量,比如定义一个rxd_number,具体程序可参考下面
void usartdata(void) interrupt 4 using 2
{
es = 0; //关串口中断
if(ri)
{
ri = 0;
if(rxd_count < rxd_number)
{
receive_data[i] = sbuf;
rxd_count ++;
}
}
es = 1;
}
- 2楼网友:英雄的欲望
- 2021-02-04 10:23
不用仿真,先确认接收到的数据是不是对的。可以显示或直接发送电脑。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯