找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 78|回复: 0
收起左侧

汇编语言led按键循环显示加蜂鸣器响应程序

[复制链接]
ID:1117063 发表于 2024-4-17 21:22 | 显示全部楼层 |阅读模式
    (1)编写程序,按下 S2,S3,S4,S4 任何一个按键的时候,蜂鸣器都鸣叫,松开按键的时候蜂鸣器停止鸣叫。(2)开始的时候,数码管左边位不显示,右边位数码管显示数值 0,每按一次 S4 按键,数码管显示值加 1,直至 9,再循环从 0 显示到 9。
     ORG 0000H
         AJMP MAIN
         ORG 0030H
MAIN:    MOV DPTR,#TAB
         MOV R4,#99
         MOV 20H,#0 ;显示缓存单元清 0,20H 为个位,21H 为十位
         MOV 21H,#0
         CLR P2.7 ;停蜂鸣器
RETURN:  ACALL DISP ;调用显示程序
KEY:     JNB P2.0,SOUND ;判断有无键按下并转相应入口
         JNB P2.1,SOUND ;P1.0,P1.1,P1.2 任意键按下,蜂鸣器响
         JNB P2.2,SOUND
         JNB P2.3,DISADD ; P2.3 按下,缓存低 8 位单元加 1
         AJMP RETURN ;无键按下转
SOUND:   ACALL DELAY;延时 ;键盘消抖
         JNB P2.0,BEEP ;确实有键按下,转蜂鸣器响
         JNB P2.1,BEEP
         JNB P2.2,BEEP
         SJMP KEY ;属于键抖动,转 KEY
BEEP:    SETB P2.7
BEEP1:   JNB P2.0,GO ;键是否释放,未释放转 GO 继续等待
         JNB P2.1,GO
         JNB P2.2,GO
         CLR P2.7 ;键释放,清蜂鸣器
         AJMP RETURN ;返回,继续刷新显示,等待按键
GO:      AJMP BEEP1
DISADD:  ACALL DELAY;延时 ;蜂鸣器按键消抖
WEISF:   SETB P2.7
         JNB P2.3,WEISF
                 CLR P2.7
         DJNZ R4,GG
         MOV 20H,#1
         MOV 21H,#0
         MOV R4,#99
         SJMP RETURN
GG:      MOV A,20H ;显示个位单元加 1
         INC A
         MOV 20H,A
         CJNE A,#10,RETURN
         MOV 20H,#0
         MOV A,21H ;显示十位单元加 1
         INC A
         MOV 21H,A
         CJNE A,#10H,RETURN
         MOV 21H,#0
         AJMP RETURN
DISP:  MOV A,20H ;显示程序
       MOVC A,@A+DPTR
       CLR P2.6
       CLR P2.5
           CLR P2.4
       MOV P0,A
       ACALL DELAY
       MOV A,21H
       MOVC A,@A+DPTR
       CLR P2.6
       CLR P2.5
           SETB P2.4
       MOV P0,A
       ACALL DELAY
       RET
DELAY: MOV R2,#40 ;延时程序
HER1:  MOV R3,#125
HER:   DJNZ R3,HER
       DJNZ R2,HER1
       RET
TAB:   DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,10H ;共阳极段码
       END

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表