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

📄 单行键盘.txt

📁 经常用到的51单片机子程序
💻 TXT
字号:
;P3.2-P3.5通过键盘可接地,这里可根据实际的需要灵活地选择I/O口和数目,以下是单列键盘子程序

KEY:    
    CLR     F0          		;清F0,表示无键按下。
    ORL     P3,#00111100B   	;将P3口的接有键的四位置1
    MOV     A,P3        		;取P3的值
    ORL     A,#11000011B 		;将其余4位置1
    CPL     A           		;取反
    JZ      K_RET       		;如果为0则一定无键按下
    ACALL   DELAY       		;否则延时去键抖
    ORL     P3,#00111100B
    MOV     A,P3
    ORL     A,#11000011B
    CPL     A
    JZ      K_RET
    MOV     B,A        			;确实有键按下,将键值存入B中
    SETB    F0 
    SJMP K_READ         		;设置有键按下的标志
K_RET:
    ORL     P3,#00111100B   	;此处循环等待键的释放
    MOV     A,P3
    ORL     A,#11000011B
    CPL     A
    JZ      K_RET1     		;直到读取的数据取反后为0说明键释放了,才从键盘处理程                                        ;序中返回
    AJMP    K_RET

K_RET1: 
    RET

K_READ:
    JNB F0,K_RET1               ;若F0为0,则返回,若F0不为0,则转到判断那个键按下
    ACALL KEYPROC

KEYPROC:
    MOV     A,B         		;从B寄存器中获取键值
    JB      ACC.2,KeyStart  	;分析键的代码,某位被按下,则该位为1
    JB      ACC.3,KeyOver
    JB      ACC.4,KeyUp
    JB      ACC.5,KeyDown
           ……                 ;可再增加
    AJMP    KEY_RET
KeyStart:
       		;第一个键按下后的处理
  
KeyOver:
       	        ;第二个键按下后的处理
   
KeyUp:  
       		;第三个键按下后的处理
   
KeyDown:
      		;第四个键按下后的处理
  ……
KEY_RET:
    RET


DELAY:  
    MOV     R7,#10
D1: MOV     R6,#100
    DJNZ    R6,$
    DJNZ    R7,D1
    RET
;---------延时程序,键盘处理中调用

⌨️ 快捷键说明

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