使用匯編語(yǔ)言編寫(xiě)程序,設(shè)計(jì)一個(gè)用8051單片機(jī)控制的循環(huán)彩燈控制系統(tǒng)
要求:
1、能輸出4種花型,并能由人工進(jìn)行花型的切換。可以使用按鍵,也可以使用撥動(dòng)開(kāi)關(guān)來(lái)實(shí)現(xiàn)切換,方法不限。
2、循環(huán)彩燈的循環(huán)速度可調(diào)。
3、按鍵要求:
(1)啟動(dòng)/暫停。按動(dòng)一次啟動(dòng),再按一次暫停。是一個(gè)雙態(tài)轉(zhuǎn)換鍵。
(2)花型變化。按一次,立即停止當(dāng)前花型的顯示,轉(zhuǎn)換為下一種花型。4種花型可以循環(huán)切換。
(3)速度+。按鍵一次,速度略加快一點(diǎn)。
(4)速度-。按鍵一次,速度略減慢一點(diǎn)。
4、在LED顯示器上顯示相應(yīng)的花型號(hào)。
代碼
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計(jì)數(shù),T0定時(shí)*/ 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執(zhí)行一次 MOV TL0, #LOW (65536 - 50000) ;重新寫(xiě)入初始值 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: ;設(shè)置花型 INC 31H ANL 31H, #3 MOV P2, 31H INC P2 RETI ;--------------------------------- X1_INT: ;啟動(dòng)/停止 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