您的当前位置:首页正文

89C51单片机练习示例:LED灯点亮与熄灭操作

2020-09-27 来源:易榕旅网
89C51单片机练习示例:LED灯点亮与熄灭操作

基本要求:

1、八个LED灯循环点亮,间隔1秒,最后全亮;

2、八个LED灯依次熄灭,间隔1秒,最后全灭;

3、八个LED灯同时点亮,保持1秒;

4、八个LED灯同时熄灭,保持0.5秒;

再将第三、四步重复4遍,最后整个程序重复N遍。

ORG 0000H

MAIN:MOV R5,#03H;

ACALL PRO1;依次点亮,最后全亮

ACALL PRO2;先灯亮,依次灭灯,后全灭

ACALL PRO3;八个灯同时亮,保持1秒;八个灯同时灭,保持1秒

ACALL PRO4;重复第三步操作,使灯点亮、熄灭4次

LJMP MAIN;

PRO1:

MOV A,#01H;从0号灯开始点亮

MOV R4,#08;亮灯个数记录

DIANLIANG:MOV R0,A;

MOV P0,A;点灯子程序

RL A;

ORL A,R0;

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY;调用0.26s的延时子程序

DJNZ R4,DIANLIANG;全亮

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY;调用0.26s的延时子程序

RET

PRO2:

MOV A,#0FFH;先亮灯

CLR CY;清零CY值

MOV R4,#09H;灭灯个数记录

XIMIE:MOV R0,A;

MOV P0,A;

RLC A;

ANL A,R0;

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY;调用0.26s的延时子程序

DJNZ R4,XIMIE;全灭

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY;调用0.26s的延时子程序

RET

PRO3:MOV A,#0FFH; 先点亮,后熄灭

MOV P0,A;

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY; 调用0.26s的延时子程序

ANL A,#00H;

MOV P0,A;

ACALL DELAY;调用0.26s的延时子程序

ACALL DELAY; 调用0.26s的延时子程序

ACALL DELAY; 调用0.26s的延时子程序

ACALL DELAY; 调用0.26s的延时子程序

RET

PRO4:ACALL PRO3;重复点亮,熄灭四次

DJNZ R5,PRO4;

RET

DELAY:MOV R2,#0FFH;延时子程序

DEL1:MOV R3,#0FFH;

DEL2:

NOP;

NOP;

DJNZ R3,DEL2;

DJNZ R2,DEL1;

RET

END

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