使用汇编语言编写程序,设计一个用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