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;
}
} 展开
用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;
}
} 展开
若以下回答无法解决问题,邀请你更新回答
展开全部
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了,仅仅当作小建议,姑且听听~~
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了,仅仅当作小建议,姑且听听~~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询