有八个开关,按下相应开关显示0—7(或1-8)!
2016-01-25 11:42
281 查看
在51单片机中,如何编程使其按下第一个开关数显显示0(或1)...按下第8个开关数显显示7(或8),数显是共阴式!
即有八个开关,按下相应开关显示0—7(或1-8)!
请问有谁能帮我解答?!谢谢了!
悬赏分:10 - 解决时间:2010-7-13 11:08
问题补充:用汇编语言编程
;=====================================================
最佳答案:程序如下:
ORG 0000H
;-----------------------------------------
START:
MOV A, P1 ;读入8个按键.
MOV B, A
CPL A
JZ START
MOV R6, #8
CALL DL_R6_MS ;延时消抖.
MOV A, P1 ;读入8个按键.
CJNE A, B, START
;-----------------------------------------
WAIT_KEY:
MOV A, P1 ;读入8个按键.
CPL A
JNZ WAIT_KEY ;等待按键释放.
;-----------------------------------------
MOV R2, #0 ;按键号码.
JNB B.0, _0
JNB B.1, _1
JNB B.2, _2
JNB B.3, _3
JNB B.4, _4
JNB B.5, _5
JNB B.6, _6
;-----------------------------------------
INC R2
_6: INC R2
_5: INC R2
_4: INC R2
_3: INC R2
_2: INC R2
_1: INC R2
_0:
;-----------------------------------------
MOV A, R2
MOV DPTR, #DUAN
MOVC A, @A+DPTR ;
CPL A
MOV P0, A
SJMP START
;----------------------------------------------
DUAN:
DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H, 80H, 90H
; 0 1 2 3 4 5 6 7 8 9
;----------------------------------------------
DELAY1MS: ;延时: 999T = 1ms
MOV R7, #241
DJNZ R7, $
DJNZ R7, $
RET
;----------------------------------------------
DL_R6_MS: ;延时: R6*1ms
ACALL DELAY1MS
DJNZ R6, $ - 2
RET
END
;=====================================================
用PROTEUS软件仿真运行如下图所示:
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/4eb12ec55e647cf438db49bb.html
回答者:做而论道 - 十三级 2010-6-24 06:57
原题网址:http://zhidao.baidu.com/question/161757354.html
即有八个开关,按下相应开关显示0—7(或1-8)!
请问有谁能帮我解答?!谢谢了!
悬赏分:10 - 解决时间:2010-7-13 11:08
问题补充:用汇编语言编程
;=====================================================
最佳答案:程序如下:
ORG 0000H
;-----------------------------------------
START:
MOV A, P1 ;读入8个按键.
MOV B, A
CPL A
JZ START
MOV R6, #8
CALL DL_R6_MS ;延时消抖.
MOV A, P1 ;读入8个按键.
CJNE A, B, START
;-----------------------------------------
WAIT_KEY:
MOV A, P1 ;读入8个按键.
CPL A
JNZ WAIT_KEY ;等待按键释放.
;-----------------------------------------
MOV R2, #0 ;按键号码.
JNB B.0, _0
JNB B.1, _1
JNB B.2, _2
JNB B.3, _3
JNB B.4, _4
JNB B.5, _5
JNB B.6, _6
;-----------------------------------------
INC R2
_6: INC R2
_5: INC R2
_4: INC R2
_3: INC R2
_2: INC R2
_1: INC R2
_0:
;-----------------------------------------
MOV A, R2
MOV DPTR, #DUAN
MOVC A, @A+DPTR ;
CPL A
MOV P0, A
SJMP START
;----------------------------------------------
DUAN:
DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H, 80H, 90H
; 0 1 2 3 4 5 6 7 8 9
;----------------------------------------------
DELAY1MS: ;延时: 999T = 1ms
MOV R7, #241
DJNZ R7, $
DJNZ R7, $
RET
;----------------------------------------------
DL_R6_MS: ;延时: R6*1ms
ACALL DELAY1MS
DJNZ R6, $ - 2
RET
END
;=====================================================
用PROTEUS软件仿真运行如下图所示:
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/4eb12ec55e647cf438db49bb.html
回答者:做而论道 - 十三级 2010-6-24 06:57
原题网址:http://zhidao.baidu.com/question/161757354.html
相关文章推荐
- 51单片机演奏乐曲的程序
- 学习Discuz! X3.2记录:新建模板及修改logo
- mysql 5.6参数列表
- 新浪微博第三方登录1:申请接入(OAuth2.0协议)
- Masonry实现JS瀑布流
- Head First设计模式---策略、观察者模式
- AndroidStudio .gitinore编写
- odd_even_list
- td自动换行
- 单片机播放音乐的基本知识
- AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
- 采用冒泡法编写51单片机排序程序
- MCS-51单片机中断测试系统设计
- 计时秒表程序设计
- 用汇编语言编八路彩灯控制系统(流水灯)
- 关于单片机测量信号频率的精度问题
- 腾讯公司将为您检测密码强度,防止QQ被盗,请您输入密码
- 设计程序,用数码管显示按键编号
- 《Web前端开发修炼之道》笔记一:高质量HTML
- 做个15路输出的彩灯