使用匯編語言編寫程序,設計一個用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
