KEIL 仿真疑问- 读取串口SBUF

代码是书上抄的程序.用Keil仿真地,仿真时用peripheral->serial观察输入输出但是,不论SBUF如何赋值,语句“a=SBUF;”的结果总是清零请高手指点迷... 代码是书上抄的程序.
用Keil仿真地,
仿真时用peripheral->serial 观察输入输出
但是,不论SBUF 如何赋值,
语句 “a=SBUF;”的结果总是清零
请高手指点迷津!
谢谢!
#include<reg51.h>
unsigned char a;
void main ()
{
TMOD=0x20;
TL1=0x0fd;
TH1=0x0fd;
SCON=0x0d8;
PCON=0x00;
TR1=1;
while(1)
{ while(RI==0)
a=SBUF; // 每次debugging时,结果为a=0, ???? 为什么?
while(TI==0)
TI=0;
}
}
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
zdpfat
2006-11-21 · TA获得超过1366个赞
知道小有建树答主
回答量:609
采纳率:0%
帮助的人:774万
展开全部
while(RI==0)
a=SBUF; // 每次debugging时,结果为a=0, ???? 为什么?
while(TI==0)
TI=0;
你确信这个是从书上抄来的吗?
改造如下:
if(RI)
{a=SBUF;RI=0;}
if(TI)
TI=0;
如果没有记错的话,RI和TI应该是置位表示中断触发,你那个语句当中断触发后就不判断执行了,当然a里面什么也没有了,还有后面那个WHILE成了个死循环了………………,没有任何意义~~~
很长时间不搞51了,仅仅当作小建议,姑且听听~~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式