⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1键多功能按键识别技术.asm

📁 AT89S52单片机程序50例(00-50)
💻 ASM
字号:
;一键多功能按键识别技术
;P3.0接按键,P1.0-P1.3接LED灯。

      ID EQU 30H  ;ID值的存储地址

      SP1 BIT P3.0  ;开关SP1管脚定义
      L1 BIT P1.0  ;灯L1管脚定义
      L2 BIT P1.1  ;灯L2管脚定义
      L3 BIT P1.2  ;灯L3管脚定义
      L4 BIT P1.3  ;灯L4管脚定义

      ORG 0000H  ;程序起始地址
      MOV ID,#00H  ;ID初始化为0

;主程序
START:MOV P1,#0FFH
      JB SP1,REL  ;键是否按下
      LCALL DELAY10MS  ;键按下,调用10ms延时子程序,取消按键抖动
      JB SP1,REL  ;键是否真的按下
      INC ID  ;键真的按下,ID加1
      MOV A,ID
      CJNE A,#04,REL  ;键值是否=4?否的话,跳转至REL
      MOV ID,#00H  ;是的话,ID清零

  REL:JNB SP1,$  ;按键是否释放?否的话,等待
      MOV A,ID  ;是的话,执行功能
   D1:CJNE A,#00H,IS0
      CPL L1  ;ID=0,L1亮
      LCALL DELAY
      JB P3.0,D1
      SJMP START 

  IS0:CJNE A,#01H,IS1
      CPL L1 
      CPL L2  ;ID=1,L1、L2亮
      LCALL DELAY
      JB P3.0,IS0
      SJMP START 

  IS1:CJNE A,#02H,IS2
      CPL L1
      CPL L2
      CPL L3  ;ID=2,L1、L2、L3亮
      LCALL DELAY
      JB P3.0,IS1
      SJMP START
 
  IS2:CJNE A,#03H,IS3
      CPL L1
      CPL L2
      CPL L3
      CPL L4  ;ID=3,L1、L2、L3、L4亮
      LCALL DELAY
      JB P3.0,IS2 
      SJMP START
 
  IS3:LJMP START

;10ms延时子程序 
DELAY10MS:MOV R6,#20 
    LOOP1:MOV R7,#248
          DJNZ R7,$
          DJNZ R6,LOOP1
   RET

;灯闪烁的间隔时间 
DELAY:MOV R5,#20
LOOP2:LCALL DELAY10MS 
      DJNZ R5,LOOP2 
    RET 
END 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -