您的位置:首页 > 其它

有八个开关,按下相应开关显示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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: