; 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
引用地址:PIC16C71单片机按键换醒CPU源程序
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
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况
更多往期活动
11月16日历史上的今天
厂商技术中心