;设计一个流水灯控制电路(汇编语言,定时器延时),系统晶振为12MHz。
;编程实现第1 min 8灯从左至右轮流闪烁,每盏点亮时间为1 s,
;第2 min 8灯从右至左闪烁,第3 min再从左至右,周期交替。
电路如下:
图片链接:
http://xiangce.baidu.com/picture/detail/22c9dadf59e9f34bd9ec3a72efcf7fd6dd2a907c
汇编语言程序如下:
;P0 外接 8 个 LED
;流水灯, 每秒流动一位
;每分钟, 换一次方向
;用定时器控制延时
ORG 0000H
JMP MAIN
;----------------------------------
MAIN: ;初始化
MOV TMOD, #01H
MOV TH0, #(65536 - 62500) / 256
MOV TL0, #(65536 - 62500) MOD 256
SETB TR0
MOV A, #127
;----------------------------------
M_LOOP: ;循环
MOV R3, #0
OUT:
MOV P0, A
INC R3
CJNE R3, #60, NEXT ;不到60, 就去流水
CPL F0 ;到了, 就改变方向
SJMP M_LOOP ;从头开始
;----------------------------------
NEXT: ;下面是等待一秒钟
MOV R2, #8 ;16
WAIT:
JNB TF0, $
MOV TH0, #(65536 - 62500) / 256
MOV TL0, #(65536 - 62500) MOD 256
CLR TF0
DJNZ R2, WAIT ;不到一秒就转移
JB F0, LLL ;选择左右方向
RR A
SJMP OUT
LLL:
RL A
SJMP OUT
;----------------------------------
END
题目网址:http://zhidao.baidu.com/question/541087764.html
提问者评价:谢谢!