单片机/MCUwilliam hill官网
直播中

h1654156196.1671

5年用户 4经验值
擅长:可编程逻辑 嵌入式技术
私信 关注
[问答]

基于循环while语句的使用位置?

#include
#define uchar unsigned char
#define unit unsigned int
***it D1=P1^0;

void main()
{

   TMOD=0X01;
   EA=1;
   ET0=1;
   TR0=1;
   TH0=(65536-53000)/256;
   TL0=(65536-53000)%256;
   while(1);
}
void to()interrupt 1
{

   TH0=(65536-53000)/256;
   TL0=(65536-5000)%256;
   D1=~D1;
}
为什么while循环体中放在最后?教材里面放在循环体前面,我放在前面程序没错,但是导进威廉希尔官方网站 图中不运行,想知道是什么原因?

回帖(3)

零落凡尘

2020-3-15 18:05:58

最佳答案

因为while(1)是一个死循环;
单片机是逐行运行的;
所以while(1)之后的代码在没有break的情况下不运行;
所以while(1)在最后。
而此时由于定时中断被打开,所以每隔xx秒进一次中断使P1^0口电平变化
具体间隔时长和晶振有关,这个自行搜索:机器周期
举报

jiciwi

2020-3-16 09:25:32
这个while就是一个空循环,等待定时器中断
举报

阿信509

2020-3-17 14:18:15
放在哪都成,随你,程序能执行就可以了
举报

更多回帖

发帖
×
20
完善资料,
赚取积分