目标
程序启动后, 8 只发光二极管先整体闪烁 3 次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制对应发光二极管的亮灯状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行软件编程原理为:
- 8 只发光二极管整体闪烁 3 次亮灯:向 P2 口送入数值 0;灭灯:向 P2 口送人数值 0FFH ;闪烁 3 次:循环 3 次;闪烁快慢:由软件延时时间决定。
- 根据开关状态控制灯亮或灯灭开关控制灯:将 P3 口(即开关状态)内容送入 P2 口;无限持续:无条件循环。
所需芯片
- AT89C51
- CAP
- CAP-ELEC
- CRYSTAL
- LED-RED
- RES
- SWITCH
开始动手
流程图
仿真图
源码
汇编
ORG 0000H
LJMP START
ORG 0030H
START:
MOV R5, #3
SUBROUTINE:
MOV P2, #0
LCALL DELAY
MOV P2, #0FFH
LCALL DELAY
DJNZ R5, SUBROUTINE
DLOOP:
MOV P2, P3
LJMP DLOOP
;延时子程序,延时100毫秒
DELAY:
MOV R0, #100
D1:
MOV R1, #50
D2:
MOV R2, #25
DJNZ R2, $
DJNZ R1, D2
DJNZ R0, D1
RET
END
C语言代码比较简单,就不写了。
仿真结果
诗情画意
龟虽寿 曹操 神龟虽寿,犹有竟时。 腾蛇乘雾,终为土灰。 老骥伏枥,志在千里。 烈士暮年,壮心不已。 盈缩之期,不但在天; 养怡之福,可得永年。 幸甚至哉,歌以咏志。