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

📄 8155_key.asm

📁 MCS-51单片机实验 39个实用实验和源码
💻 ASM
字号:
;FOR    EAT598
;---------------------------------------------------------
C8155   EQU     0F100H          ;8155命令口地址,确保A8=1
P8155A  EQU     0F101H          ;8155 PA口地址
P8155B  EQU     0F102H          ;8155 PB口地址
P8155C  EQU     0F103H          ;8155 PC口地址
KEYVAL  EQU     30H             ;读到的键码
;---------------------------------------------------------
        ORG     0000H
        SJMP    START
        ORG     0030H
START:        
        MOV     SP,#60H
        LCALL   DELAY  
        MOV     KEYVAL,#00H     ;置显示初始值
        MOV     DPTR,#C8155
        MOV     A,#0DH          ;PB口输入,PA,PC口输出
        MOVX    @DPTR,A
        MOV     DPTR,#P8155C    
	    MOV     A,#00H
	    MOVX    @DPTR,A
KB_DIS:
        LCALL   RD_KB          ;读键子程序 
        LCALL   DISP           ;显示子程序 
        SJMP    KB_DIS         ;循环扫描
;---------------------------------------------------------         
DISP: 
		MOV     DPTR,#P8155A   ;显示键值
	    MOV     A,KEYVAL             
        MOVX    @DPTR,A
        RET
;---------------------------------------------------------         
;读取键盘子程序
RD_KB:
        MOV     A,#02H         ;键盘扫描第一行
        MOV     DPTR,#P8155C
        MOVX    @DPTR,A          
        MOV     DPTR,#P8155B    
        MOVX    A,@DPTR        
        CJNE    A,#0FFH,KEY_L0 ;判键是否按下,有键转AA
		SJMP    KEY_L1         ;无键转第二行 
KEY_L0:
        LCALL   DELAY          ;延时消抖 
        MOV     DPTR,#P8155B   ;读键值 
        MOVX    A,@DPTR                 
        MOV     R1,#00H
        CJNE    A,#0FFH,KEYCAL ;计算键值   
KEY_L1:
        MOV     A,#01H         ;扫描第二行
        MOV     DPTR,#P8155C
        MOVX    @DPTR,A         
        MOV     DPTR,#P8155B
        MOVX    A,@DPTR
        CJNE    A,#0FFH,J_KEY_L1;判键是否按下,有键转CC
        SJMP    NOKEY          ;无键转结束
J_KEY_L1:
        LCALL   DELAY          ;延时消抖 
        MOV     DPTR,#P8155B   ;读键值 
        MOVX    A,@DPTR          
        MOV     R1,#08H
        CJNE    A,#0FFH,KEYCAL ;计算键值 
        SJMP    NOKEY          ;无键按下       
KEYCAL:                        ;计算键码
        MOV     R0,#08H
SHIFT:
        RRC     A
        JNC     CALC
        INC     R1
        DJNZ    R0,SHIFT
CALC:                           ;换算显示码
        MOV     DPTR,#LEDSEG
        MOV     A,R1
        MOVC    A,@A+DPTR
        MOV     KEYVAL,A          
        SJMP    KEYWAIT
NOKEY:                      
        SJMP    KEYEXIT
KEYWAIT:
		MOV     DPTR,#P8155B	;等待键释放
		MOVX    A,@DPTR   
		CJNE    A,#0FFH,KEYWAIT 
KEYEXIT:RET       
;---------------------------------------------------------        
DELAY:  MOV     R0,#0H          ;延时20MS子程序
DELAY1:
        MOV     R1,#27H
        DJNZ    R1,$
        DJNZ    R0,DELAY1
        RET
;---------------------------------------------------------          
;LED显示常数表
LEDSEG: DB      3FH,06H,5BH,4FH,66H,6DH,7DH,07H    ;0,1,2,3,4,5,6,7
        DB      7FH,6FH,77H,7CH,39H,5EH,79H,71H    ;8,9,A,B,C,D,E,F
;---------------------------------------------------------        
        END

⌨️ 快捷键说明

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