基本要求:
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
因篇幅问题不能全部显示,请点此查看更多更全内容