技术热线: 4007-888-234
设计开发

专注差异化嵌入式产品解决方案 给智能产品定制注入灵魂给予生命

开发工具

提供开发工具、应用测试 完善的开发代码案例库分享

技术支持

从全面的产品导入到强大技术支援服务 全程贴心伴随服务,创造无限潜能!

新闻中心

提供最新的单片机资讯,行业消息以及公司新闻动态

PIC16C71单片机按键换醒CPU源程序

更新时间: 2019-03-21
阅读量:317

; 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