您好,欢迎来到知库网。
搜索
您的当前位置:首页LED灯闪烁程序

LED灯闪烁程序

来源:知库网


1. 闪烁灯程序

MOV R6,#20 2 个机器周期 2

D1: MOV R7,#248 2个机器周期 2 2+2×248=498 20×

DJNZ R7,$ 2 个机器周期 2×248 498

DJNZ R6,D1 2 个机器周期 2×20=40

10002

因此,上面的延时程序时间为 10.002ms。

由以上可知,当 R6=10、R7=248 时,延时 5ms,R6=20、R7=248 时 延时 10ms,以此为基本的计时单位。如本实验要求 0.2 秒=200ms,

10ms×R5=200ms,则 R5=20,延时子程序如下:

DELAY: MOV R5,#20

D1: MOV R6,#20

D2: MOV R7,#248

DJNZ R7,$

DJNZ R6,D2

DJNZ R5,D1

RET

(2). 输出控制

如图 1 所示,当P1.0 端口输出高电平,即P1.0=1 时,根据发光二极管

的单向导电性可知,这时发光二极管 L1 熄灭;当P1.0 端口输出低电平 ,

即 P1.0=0时, 发光二极管 L1 亮; 我们可以使用 SETB P1.0指令使 P1.0

端口输出高电平,使用 CLR P1.0 指令使 P1.0 端口输出低电平。

5. 程序框图

如图4.1.2所 示

3

图 4.1.2

6. 汇编源程序

ORG 0

START: CLR P1.0

LCALL DELAY

SETB P1.0

LCALL DELAY

LJMP START

DELAY: MOV R5,#20 ;延时子程序,延时 0.2 秒

D1: MOV R6,#20

D2: MOV R7,#248

DJNZ R7,$

DJNZ R6,D2

DJNZ R5,D1

RET

END

7. C 语言源程序

#include

sbit L1=P1^0;

void delay02s(void) //延时 0.2 秒子程序

{

unsigned char i,j,k;

for(i=20;i>0;i--)

for(j=20;j>0;j--)

for(k=248;k>0;k--);

}

void main(void)

{

while(1)

{

L1=0;

delay02s();

4

L1=1;

delay02s();

}

}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- zicool.com 版权所有 湘ICP备2023022495号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务