51单片机如何跳出wile循环_51单片机闪烁LED灯

闪烁LED灯

51单片机是较为简单的8位单片机,意思是一次能处理8位2进制数据。这一次闪烁LED灯就是让单片机的引脚定时输出1或0。

51单片机有4个IO端口,每一个端口分别由P0,P1,P2,P3,4个寄存器控制。我们假设输出0时LED灯点亮,我们用单片机驱动时就需要让端口的某一位置零。例如我们用P1口的第0位闪烁点亮,我们需要给P1口的第0位定时置零。

汇编语言代码如下:

ORG 0000H

AJMP MAIN

MAIN: MOV P1, #11111110B //从P1口第0位输出到发光二极管

LCALL DELAY //延时1秒

CPL P1.0 //取反P1.0,实习闪烁效果

LCALL DELAY //延时1秒

SJMP MAIN //循环主函数

//延时函数

DELAY: MOV R0,#20 //延时0.5秒子程序,使用参数R0、R7、R6。

DELY0: MOV R7,#200 //延时约为20*200*250=1000000us=1s

DELY1: MOV R6,#250

DJNZ R6,$

DJNZ R7,DELY1

DJNZ R0,DELY0

RET

END

C语言代码如下:

#include "reg52.h"

typedef unsigned long int u16; //对数据类型进行声明定义

sbit LED = P1^0; //将P1口第0定义为led 后面就可以使用led代替

/* 延时函数,i=1时,大约延时20us*/

void delay(u16 i)

{

while(i--);

}

void main()

{

LED=0;

while(1)

{

LED = ~LED; //取反LED实习闪烁

delay(50000); //大约延时50000*20=1000000ms=1s

}

}

KEIL逻辑分析仪仿真

5278a1f8421d43b8739bb5c9c8b4a714.png

欢迎留言讨论!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值