使用汇编语言编写程序,设计一个用8051单片机控制的循环彩灯控制系统
2016-01-25 11:41
866 查看
使用汇编语言编写程序,设计一个用8051单片机控制的循环彩灯控制系统
要求:
1、能输出4种花型,并能由人工进行花型的切换。可以使用按键,也可以使用拨动开关来实现切换,方法不限。
2、循环彩灯的循环速度可调。
3、按键要求:
(1)启动/暂停。按动一次启动,再按一次暂停。是一个双态转换键。
(2)花型变化。按一次,立即停止当前花型的显示,转换为下一种花型。4种花型可以循环切换。
(3)速度+。按键一次,速度略加快一点。
(4)速度-。按键一次,速度略减慢一点。
4、在LED显示器上显示相应的花型号。
悬赏分:30 - 离问题结束还有 14 天 21 小时
;==============================================================
上次编写了一个“键控流水灯”,后来不断有网友来电,希望再编写些其它花样的。
做而论道也有了一些设想,正巧有这位网友提出的要求,和做而论道的构思暗合,故此连夜调出个程序,也算是答题吧。
用PROTEUS仿真的画面如下:
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/91d1fff221a004f50b46e0ef.html
;---------------------------------------------------
控制程序如下:
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
要求:
1、能输出4种花型,并能由人工进行花型的切换。可以使用按键,也可以使用拨动开关来实现切换,方法不限。
2、循环彩灯的循环速度可调。
3、按键要求:
(1)启动/暂停。按动一次启动,再按一次暂停。是一个双态转换键。
(2)花型变化。按一次,立即停止当前花型的显示,转换为下一种花型。4种花型可以循环切换。
(3)速度+。按键一次,速度略加快一点。
(4)速度-。按键一次,速度略减慢一点。
4、在LED显示器上显示相应的花型号。
悬赏分:30 - 离问题结束还有 14 天 21 小时
;==============================================================
上次编写了一个“键控流水灯”,后来不断有网友来电,希望再编写些其它花样的。
做而论道也有了一些设想,正巧有这位网友提出的要求,和做而论道的构思暗合,故此连夜调出个程序,也算是答题吧。
用PROTEUS仿真的画面如下:
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/91d1fff221a004f50b46e0ef.html
;---------------------------------------------------
控制程序如下:
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
相关文章推荐
- 8个LED依次循环发光,3种显示效果,要求通过按钮切换
- 浅析Java中CountDownLatch用法
- 处理不确定数据的方法研究
- Ligerui表格基本操作(五)
- 【足迹C++primer】40、动态数组
- Java学习笔记九(泛型)
- spring4 学习4 spring MVC+mybatis+Mysql
- Project Euler欧拉计划
- 提高 ASP.NET Web 应用性能
- 基于51单片机的简易数字频率计
- Python 基础教程
- 单片机按键按下的先后顺序判断
- 用T1定时,在P1.0和P1.1 引脚分别输出周期为2ms和500微秒的方波
- 以中断方法设计单片机秒、分脉冲发生器
- 单片机LED数码电路和C程序
- java中的引用和GC
- 中国碉堡
- Knight Moves hdu1372
- 江桥抭战和义勇军进行曲
- 电影《铁血江桥》在鹤城拍摄