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

📄 ad_key.asm

📁 基于16F877A的路灯控制系统的设计
💻 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 + -