单片机中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,此时不置零就不能再发送吧。
单片机的程序是不是像上面的不能自动退出运行,一直检查运行下去,要强制
关闭才停止? 展开
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,此时不置零就不能再发送吧。
单片机的程序是不是像上面的不能自动退出运行,一直检查运行下去,要强制
关闭才停止? 展开
展开全部
这个主要是单片机做串口发送用的,通常是当传送完成后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单片机就默认为传送一直进行中。
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 广告
2023-06-12 广告
STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过100...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
展开全部
发送数据发完的时候TI会自动置1向CPU发中断申请,在while(TI==0)时TI已经被置1判断为假,跳出循环。由于硬件自动将TI置1所以必须由软件将其清0所以就用上了TI=0的赋值动作.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为1为真,所以while(1)下面{}里的内容将一直循环进行,无法跳出,通常放在主程序中
而while(T==0),这句是试探为0,若为0,即为真,将循环执行{}中的程序,不为零,直接跳出while下面得{}
而while(T==0),这句是试探为0,若为0,即为真,将循环执行{}中的程序,不为零,直接跳出while下面得{}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
串行口发送标记位,发送完毕,TI为1,手动置0后又可下次发送
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
TI==0 中的 == 判断两边是否相同
TI=0;将数字0放入TI这个变量里
TI=0;将数字0放入TI这个变量里
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询