📄 ad_key.asm
字号:
;**********************************
;AD_KEY.ASM
;**********************************
;*本程序为AD键盘处理程序
;*占用I/O RA0
;*使用RAM 3个字节
;*程序包括
;*INITADKEY 初始化AD键盘子程序
;*GETADKEY 读取键值处理子程序
;*入口参数 KEYRES(为0-9的ASCII码)
;**********************************
#INCLUDE P16F877A.INC
;**********************************
AD_GROUP UDATA
KEYRES RES 1 ;键值的ASCII码
GLOBAL KEYRES
KEY RES 1
GLOBAL KEY
ADKEYH RES 1 ;模拟键值输入A/D转换结果的高8位
;**********************************
PROG_KEY CODE
;**********************************
;*A/D转换初始化子程序
;**********************************
INITADKEY
GLOBAL INITADKEY
BCF STATUS,RP1
BCF STATUS,RP0
MOVLW 0X4A ;即01001010,注意GO/DONE是0,没开启转换
MOVWF ADCON0 ;选择A/D通道为RA0,打开A/D转换器
;A/D转换时钟为FOSC/8
BSF STATUS,RP0
MOVLW 0X02 ;即00000010
MOVWF ADCON1 ;转换结果左对齐
BSF TRISA,0 ;RA0为输入
BCF STATUS,RP0 ;恢复默认存储体为BANK0
RETURN
;**********************************
GETADKEY
GLOBAL GETADKEY
BSF ADCON0,GO ;启动A/D
BTFSC ADCON0,GO ;等待完成
GOTO $-1
MOVF ADRESH,W ;读取并存储A/D转换结果
MOVWF ADKEYH
MOVLW 0X31
MOVWF KEYRES ;KEYRES的初始值为1的ASCII码,KEYRES的值
MOVLW 0X01 ;跟踪比较次数的变化,并最终等于比较的次
MOVWF KEY ;数,即键值得ASCII码
KEY1
MOVLW 0XCB ;比较阈值设为C可以增强抗干扰能力
SUBWF ADKEYH,W
BTFSS STATUS,C
GOTO KEY2
GOTO KEYOUT
KEY2
INCF KEYRES,F
INCF KEY,F
MOVLW 0XA8
SUBWF ADKEYH,W
BTFSS STATUS,C
GOTO KEY3
GOTO KEYOUT
KEY3
INCF KEYRES,F
INCF KEY,F
MOVLW 0X8F
SUBWF ADKEYH,W
BTFSS STATUS,C
GOTO KEY4
GOTO KEYOUT
KEY4
INCF KEYRES,F
INCF KEY,F
MOVLW 0X7D
SUBWF ADKEYH,W
BTFSS STATUS,C
GOTO KEY5
GOTO KEYOUT
KEY5
INCF KEYRES,F
INCF KEY,F
MOVLW 0X6F
SUBWF ADKEYH,W
BTFSS STATUS,C
GOTO KEY6
GOTO KEYOUT
KEY6
INCF KEYRES,F
INCF KEY,F
MOVLW 0X63
SUBWF ADKEYH,W
BTFSS STATUS,C
GOTO KEY7
GOTO KEYOUT
KEY7
INCF KEYRES,F
INCF KEY,F
MOVLW 0X5A
SUBWF ADKEYH,W
BTFSS STATUS,C
GOTO KEY8
GOTO KEYOUT
KEY8
INCF KEYRES,F
INCF KEY,F
MOVLW 0X53
SUBWF ADKEYH,W
BTFSS STATUS,C
GOTO KEY9
GOTO KEYOUT
KEY9
INCF KEYRES,F
INCF KEY,F
MOVLW 0X4C
SUBWF ADKEYH,W
BTFSS STATUS,C
GOTO KEY0
GOTO KEYOUT
KEY0
MOVLW 0X30
MOVWF KEYRES
MOVLW 0X00
MOVWF KEY
KEYOUT
RETURN
;*****************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -