51单片机中一段简单程序,为什么是“死循环”

51单片机中一段简单程序,为什么是“死循环”,第1张

当51单片机的程序状态冲轿粗字PSW的RS0、RS1为0、0,R6的地址是06H,

循环中的MOV 06H,#2H指令,使得下帆冲一条指散镇令R6减1≠0, 转D1入口循环。

“死循环”,就是永远跳不出循环。

#include <REGX52.H>

void Delay1ms(unsigned int count) /*延时函数,延迟时间为count×1ms)*/

{

unsigned int i,j

for(i=0i<counti++)

for(j=0j<120j++)

}

main()

{

unsigned char LEDIndex = 0/*声明8位变量LEDIndex,用来指示8个LED中哪个被点亮,初始值为00000000*/

bit LEDDirection = 1/*声明位变量LEDDirection,用来指示点亮的方向,初始值为1*/

while(1) /*一直循环执行大括号里面的语句*/

{

if(LEDDirection) /*当LEDDirection=1时,0000 0001左移LEDIndex位档掘,取反后送给P2端口,点亮一个LED*/

P2 = ~(0x01<<LEDIndex)

else /*当LEDDirection=0时,1000 0000右移LEDIndex位,取反后送给P2端口,点亮一个行芹核LED*/

P2 = ~(0x80>>LEDIndex)

if(LEDIndex==7) /*当一次循环结束时,把LEDDirection取反,下次循环时将以相反首迟的顺序点亮*/

LEDDirection = !LEDDirection

LEDIndex = (LEDIndex+1)%8/*LEDIndex+1对8取余,保证LEDIndex在0~7之间*/

Delay1ms(500)/*延时500ms,即LED的点亮间隔为0.5s*/

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12352524.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存