專注差異化嵌入式產品解決方案 給智能產品定制注入靈魂給予生命
提供開發工具、應用測試 完善的開發代碼案例庫分享
從全面的產品導入到強大技術支援服務 全程貼心伴隨服務,創造無限潛能!
; p=pic16c71,xt=40000hz
LIST P=16c71
;
Z EQU 2
RBPU EQU 7
TEMP EQU 10H
OPTIONREG EQU 1H
F EQU 1
PORT_B EQU 06H
;
INCLUDE
LIST
;
ORG 0 ;復位地址
GOTO START
;
ORG 4 ;中斷向量
GOTO SERVICEINTERRUPT
;
START
CALL INITPORT_B ;初始化B口
LOOP
SLEEP ;省電睡眠,等待被喚醒
NOP
GOTO LOOP
;
SERVICEINTERRUPT
BTFSC INTCON,RBIF
GOTO SERVICEWAKUP
CLRF INTCON
BSF INTCON,RBIE
RETFIE
;
;檢查是哪個鍵被按下,并點亮相應的LED直到按鍵釋放,再返回睡眠狀態
;
SERVICEWAKUP
BCF INTCON,RBIE
COMF PORT_B,W
BCF INTCON,RBIF
CALL DELAY16
COMF PORT_B,W
ANDLW B'11110000'
MOVWF TEMP
SWAPF TEMP,W
MOVWF PORT_B
CALL KEYRELEASE
RETFIE
;
;等待所有的按鍵都被釋放程序
;
KEYRELEASE
CALL DELAY16
COMF PORT_B,W
BCF INTCON,RBIF
BCF INTCON,RBIE
ANDLW B'11110000'
BTFSC STATUS,Z
RETURN
GOTO KEYRELEASE
;
;初始化 B口子程序
;
INITPORT_B
BSF STATUS,RP0
MOVLW B'11110000'
MOVWF TRISB
BCF OPTIONREG,RBPU
BCF STATUS,RP0
CLRF PORT_B
BCF INTCON,RBIE
MOVF PORT_B,W
BCF INTCON,RBIF
BSF INTCON,RBIE
BSF INTCON,GIE
RETURN
;
;延時去抖動子程序
DELAY16
BSF STATUS,RP0
MOVLW B'00000111'
MOVWF OPTIONREG
BCF STATUS,RP0
CLRF TMR0
BCF INTCON,T0IF
CHECKAGAIN
BTFSS INTCON,T0IF
GOTO CHECKAGAIN
BCF INTCON,T0IF
RETURN
END