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

📄 keyscan.asm.bak

📁 完整的PIC学习程序示例 软件功能: RT1602C驱动 UART串口输出
💻 BAK
字号:
;/**************************************************************************
;*                                                                         *
;*         Copyright (c) 2006 by JINRUN Technology Co., Ltd.               *
;*  Title  :    FPPA TM demo board---PIC PARTY
;*  Content:    AD,LCM Drive,Key input,LED flash,etc.,   
;*  MCU    :    PIC16F877A(PIC),PDK80C08(PDK)[FPPA TM]
;*  LCD    :    RT1602C
;*  OSC    :    8MHz(ext. HT) 
;*  WDT    :    OFF                                      
;*  Author :    Raker.Yang                                                 *
;*  FPPA TM 简介:FPPA TM是世界首创的多核心单晶片,所有RAM和ROM却能够共享
;*                目前支持8个核心(8路独立PC,STACK,ACC等)
;*                既然有了独立多核心,跑多任务程序也就更简单了。
;*                更重要的是,它可以非常方便的扩展MCU外围,如,PWM,IIC,UART等。
;*  如果你对FPPA TM技术感兴趣,欢迎访问笔者博客 http://gongkong.gkbk.com
;*  或加入作者QQ:595142970, QQ群25644462
;*  同时欢迎各路商家前来进行方案合作!
;*
;*  声明:本资料仅供个人学习PIC或FPPA TM的软件设计者参考用,任何人都可以转载此资料。
;*        但任何单位或个人都不能将此资料作为商业用品。本资料可能存在一些缺陷,
;*        如果你将本资料用于产品,所引起的一切后果,均由使用者承担
;*                                                                        *
;**************************************************************************/
;
;
;--------KEY SCAN SUBROUTINE------------------------
; Name        :KEY_SCAN
; Input       :RC4,RC5,RC6(AUTO, STEP, MODE)
; Output      :MODE_REG,MODE_CNT,KEY_VAL,KEY_VAL_BUF(valid value)
; Temp REG    :TEMPI0 ,TEMPI1
; Function    :MODE SW,AUTO SW,STEP SW scan
;--------------------------------------------------
KEY_SCAN:
	BANKSEL TRISC
	MOVF    TRISC, W
	BANKSEL TMR0
	MOVWF   TEMPI0
	IORLW   B'00110000'
	BANKSEL TRISC
	MOVWF   TRISC
	NOP
	NOP
	BANKSEL TMR0
	MOVF    PORTC, W
	MOVWF   TEMPI1
;	BTFSS   TEMPI1, 6         ;CHECK MODE SW
;	GOTO  	NO_MODE_SW_IN
;	INCF    MODE_CNT, D
;	MOVF    MODE_CNT, W
;	SUBLW   0x14             ;> 20 TIMES?
;	BTFSC   STATUS , C
;	GOTO    CHECK_OTHER_SW	
;HI_ACTIVE:
;        MOVF    MODE_CNT, W
;        XORLW   0x15 
;        MOVLW   0x14      
;        BTFSC   STATUS, Z
;        MOVWF   MODE_CNT
;        MOVLW   0x01
;        MOVWF   MODE_REG
;        GOTO    CHECK_OTHER_SW
;NO_MODE_SW_IN:
;	DECFSZ  MODE_CNT
;	GOTO    CHECK_OTHER_SW
;  	MOVLW   0x01
;	MOVWF   MODE_CNT
;	CLRF    MODE_REG              
CHECK_OTHER_SW:
        BTFSC   KEY_STATUS, KEY_VALID
        GOTO    KEY_SCAN_END            ;WAIT KEY PROCESS
	MOVF    TEMPI1,W
        ANDLW   B'00110000'
        IORLW   B'11001111'
        XORLW   B'11111111'
        BTFSC   STATUS, Z  ;Z = 1:NO KEY
        GOTO    NO_KEY_INPUT
        BTFSC   KEY_STATUS, KEY_BUSY
        GOTO    KEY_SCAN_END
        MOVWF   KEY_VAL
        SUBWF   KEY_VAL_BUF,W
        BTFSS   STATUS,Z   ;Z = 1: EQU LAST TIME
        GOTO    SAVE_KEY_VAL
        INCF    KEY_CNT
        MOVF    KEY_CNT, W
        SUBLW   0x0a
        BTFSS   STATUS, C
        BSF     KEY_STATUS, KEY_VALID ;
        GOTO    KEY_SCAN_END
SAVE_KEY_VAL:
        MOVF    KEY_VAL, W
        MOVWF   KEY_VAL_BUF 
        BSF     KEY_STATUS, KEY_BUSY
        GOTO    KEY_SCAN_END
NO_KEY_INPUT: 
	DECFSZ  KEY_CNT
	GOTO    KEY_SCAN_END
	BCF     KEY_STATUS, KEY_BUSY
	MOVLW   0x01
	MOVWF   KEY_CNT 	                       
KEY_SCAN_END:
	
        MOVF    TEMPI0,W
        BANKSEL TRISC
        MOVWF   TRISC
        BANKSEL TMR0
        RETURN
;-------------------------------------------------------------

⌨️ 快捷键说明

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