实现循环左移点亮LED的三种方式代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实现循环左移点亮LED的三种方式代码
ORG 0000H
LJMP START
ORG 0100H
START:CLR P2.0 ;点亮P2.0口
LCALL DELAY;延时
SETB P2.0 ;熄灭P2.0口
CLR P2.1 ;点亮P2.1口
LCALL DELAY
SETB P2.1
CLR P2.2
LCALL DELAY
SETB P2.2
CLR P2.3
LCALL DELAY
SETB P2.3
CLR P2.4
LCALL DELAY
SETB P2.4
CLR P2.5
LCALL DELAY
SETB P2.5
CLR P2.6
LCALL DELAY
SETB P2.6
CLR P2.7
LCALL DELAY
SETB P2.7
LJMP START
DELAY:MOV R0, #03H ;三层循环延时子程序D0: MOV R1, #0FFH
D1: MOV R2, #0FFH
DJNZ R2, $ ;内层循环
DJNZ R1, D1 ;中层循环
DJNZ R0, D0 ;外层循环
RET ;返回
END
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:MOV P2, #0FEH ;送控制字11111110B给P2口,点亮P2.0口LCALL DELAY;调用延时子程序
MOV P2, #0FDH ;点亮P2.1口
LCALL DELAY
MOV P2, #0FBH
LCALL DELAY
MOV P2, #0F7H
LCALL DELAY
MOV P2, #0EFH
LCALL DELAY
MOV P2, #0DFH
LCALL DELAY
MOV P2, #0BFH
LCALL DELAY
MOV P2, #7FH
LCALL DELAY
LJMP MAIN
DELAY:MOV R0, #03H
D0: MOV R1, #0FFH
D1: MOV R2, #0FFH
DJNZ R2, $
DJNZ R1, D1
DJNZ R0, D0
RET
END
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN: MOV A, #0FEH ;送控制字11111110B给A
MOV P2, A ;点亮P2.0口
LCALL DELAY ;调用延时子程序
RL A ;累加器A循环左移
MOV P2, A ;点亮P2.1口。
余下,A每循环左移一次,点亮下一个LED灯LCALL DELAY
RL A
MOV P2, A
LCALL DELAY
RL A
MOV P2, A
LCALL DELAY
RL A
MOV P2, A
LCALL DELAY
RL A
MOV P2, A
LCALL DELAY
RL A
MOV P2, A
LCALL DELAY
RL A
MOV P2, A
LCALL DELAY
LJMP MAIN ;主程序循环
DELAY:MOV R0, #03H ;三层循环延时子程序
D0: MOV R1, #0FFH
D1: MOV R2, #0FFH
DJNZ R2, $ ;内层循环
DJNZ R1, D1 ;中层循环
DJNZ R0, D0 ;外层循环
RET ;返回
END。