单片机中while(TI==0);TI=0; 是什么意思啊

#include<reg51.h>unsignedchara;voidmain(){TMOD=0x20;TL1=0x0fd;TH1=0x0fd;SCON=0x0d8;PC... #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;
while(TI==0) 这是什么意思啊?
TI=0; 什么意思?
}
}

有些程序中的while(1);就一个空循环,这绕进去了怎么
出来啊,要不能后面都没法运行了。
不知道这些是什么意思,劳驾高手解决下。
谢谢!!!!!
T=1,不是帧发送结束符吗?应该是发送结束时T=1,此时不置零就不能再发送吧。
单片机的程序是不是像上面的不能自动退出运行,一直检查运行下去,要强制
关闭才停止?
展开
 我来答
xtfhvk2w
2013-05-02 · TA获得超过101个赞
知道答主
回答量:13
采纳率:0%
帮助的人:10.3万
展开全部
这个主要是单片机做串口发送用的,通常是当传送完成后TI=1,而判断TI是否等于1共有两种方法,一种是查询另一种就是串口中断,而你给出的就是查询方法,所以要无限循环的查询下去,
while(1) 就是用于查询的,但要记住因为是无限循环所以这个最好是用在主程序里,
while(RI==0) a=SBUF;这两句就是当别的单片机或者其他的设备给本单片机发送数据用的,当接收完成时那么单片机接收标志位RI==1,而当RI==1时跳转到a=SBUF,就是把接收暂存器里的数据赋值到a里,
而当本单片机送出数据时就要看发送标志位TI了,当发送完成后TI==1,while(TI==0) TI=0;这两句就是当没有发送时就一直执行while(TI==0)这条语句,而当有发送时TI==1所以就不执行这条语句而转到执行TI=0这条来,因为采用那个查询方式时,当发送完成后必须要手动使TI=0,否则单片机将无法进行下次传送,因为TI==1单片机就默认为传送一直进行中。
意法半导体(中国)投资有限公司
2023-06-12 广告
STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过100... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
cheng_275
2012-11-02
知道答主
回答量:26
采纳率:100%
帮助的人:7万
展开全部
发送数据发完的时候TI会自动置1向CPU发中断申请,在while(TI==0)时TI已经被置1判断为假,跳出循环。由于硬件自动将TI置1所以必须由软件将其清0所以就用上了TI=0的赋值动作.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangyupeng0114
推荐于2017-09-14 · TA获得超过801个赞
知道小有建树答主
回答量:466
采纳率:0%
帮助的人:272万
展开全部
因为1为真,所以while(1)下面{}里的内容将一直循环进行,无法跳出,通常放在主程序中

而while(T==0),这句是试探为0,若为0,即为真,将循环执行{}中的程序,不为零,直接跳出while下面得{}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cxg1210
2009-05-07 · TA获得超过306个赞
知道小有建树答主
回答量:829
采纳率:0%
帮助的人:297万
展开全部
串行口发送标记位,发送完毕,TI为1,手动置0后又可下次发送
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
电子粉丝
2009-05-07 · TA获得超过8015个赞
知道大有可为答主
回答量:6943
采纳率:74%
帮助的人:2778万
展开全部
TI==0 中的 == 判断两边是否相同
TI=0;将数字0放入TI这个变量里
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式