使用汇编语言编写程序,设计一个用8051单片机控制的循环彩灯控制系统
要求:
1、能输出4种花型,并能由人工进行花型的切换。可以使用按键,也可以使用拨动开关来实现切换,方法不限。
2、循环彩灯的循环速度可调。
3、按键要求:
(1)启动/暂停。按动一次启动,再按一次暂停。是一个双态转换键。
(2)花型变化。按一次,立即停止当前花型的显示,转换为下一种花型。4种花型可以循环切换。
(3)速度+。按键一次,速度略加快一点。
(4)速度-。按键一次,速度略减慢一点。
4、在LED显示器上显示相应的花型号。
代码
ORG 0000H
JMP START
ORG 0003H
JMP X0_INT
ORG 000BH
JMP T0_INT
ORG 0013H
JMP X1_INT
;---------------------------------
START:
MOV TMOD, #51H ;/*01010001 T1计数,T0定时*/
MOV TH0, #HIGH(65536 - 50000) ;50ms@12MHz
MOV TL0, #LOW (65536 - 50000)
MOV TH1, #0
MOV TL1, #0
SETB TR0
SETB TR1
SETB IT0
SETB IT1
MOV IE, #10000111B
MOV IP, #00000101B
MOV R7, #20
MOV 30H, #20
MOV 31H, #0
MOV 32H, #0
MOV P2, 31H
INC P2
SJMP $
;---------------------------------
T0_INT: ;50ms执行一次
MOV TL0, #LOW (65536 - 50000) ;重新写入初始值
MOV TH0, #HIGH(65536 - 50000) ;50ms@12MHz
;------------------
JIA:
JB P3.0, JIAN
DEC 30H ;加速
MOV A, 30H
JNZ XXX ;不能让它为0
INC 30H
XXX:
; JNB P3.0, $
;------------------
JIAN:
JB P3.1, XIANSHI
INC 30H
MOV A, 30H
SUBB A, #80
JC CCC
MOV 30H, #80
CCC:
; JNB P3.1, $
;------------------
XIANSHI:
DJNZ R7, T0_END
MOV R7, 30H
INC 32H
ANL 32H, #7
;------------------
MOV A, 31H
ANL A, #3
RL A
RL A
RL A
ADD A, 32H
MOV DPTR, #HUA_Y
MOVC A, @A+DPTR
CPL A
MOV P1, A
;------------------
T0_END:
RETI
;---------------------------------
X0_INT: ;设置花型
INC 31H
ANL 31H, #3
MOV P2, 31H
INC P2
RETI
;---------------------------------
X1_INT: ;启动/停止
CPL TR0
RETI
;---------------------------------
HUA_Y:
DB 0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01
DB 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80
DB 0x81,0x42,0x24,0x18,0x81,0x42,0x24,0x18
DB 0x18,0x24,0x42,0x81,0x18,0x24,0x42,0x81
END
