; Date: Mar/13/2001 *
;********************************************************************** INT_Var1 EQU 0x30 W_Temp EQU 0x72 #define VAL_1MS .248 #define FLAG_INC 0 org 0x004 bsf FLAG,FLAG_INC ; FLAG_INC 1 Check_DEC_KEY ;****************************************************************************** Bounce_Loop1 ****************************************** BANKSEL TRISB BANKSEL PORTB Prog_Loop Dec_Process SLEEP_Process ;****************************************************************************
list p=16f870
#include
; __CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _RC_OSC & _WRT_ENABLE_ON & _LVP_OFF & _CPD_OFF
FLAG EQU 0x20
Var1 EQU 0x21
Var2 EQU 0x22
INT_Var2 EQU 0x31
STATUS_Temp EQU 0x73
FSR_Temp EQU 0x74
#define FLAG_DEC 1
org 0x00 ; RESET 0x000
nop
clrf PCLATH
goto Main
INT_ISRs
;***************************************************************
movwf W_Temp ; save off current W register contents
movf STATUS,W ; move status register into W register
bcf STATUS,RP0 ; ensure file register bank set to 0
movwf STATUS_Temp ; save off contents of STATUS register
movf FSR,W
movwf FSR_Temp
BANKSEL PORTB
movf PORTB,W
bcf INTCON,RBIF
bcf INTCON,RBIE ; RBIE Disable
call Bounce_Delay
btfsc PORTB,4
goto Check_DEC_KEY
goto Exit_ISRs
btfss PORTB,5
bsf FLAG,FLAG_DEC
Exit_ISRs
movf FSR_Temp,W
movwf FSR
bcf STATUS,RP0 ; ensure file register bank set to 0
movf STATUS_Temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf W_Temp,F
swapf W_Temp,W ; restore pre-isr W register contents
retfie ; return from interrupt
;**** Delay 10 ms
;******************************************************************************
Bounce_Delay
movlw .10
movwf INT_Var1
movlw .248
movwf INT_Var2
Bounce_Loop2
nop
decfsz INT_Var2,F
goto Bounce_Loop2
decfsz INT_Var1,F
goto Bounce_Loop1
return
Main
movlw B'11110000'
movwf TRISB ; RB4..RB7
clrf TRISC
movlw B'00000000' ; Enable PORTB Pull UP
movwf OPTION_REG
movlw B'11111111'
movwf PORTB
clrf PORTC
bsf INTCON,GIE
clrf FLAG
bsf FLAG,FLAG_INC
btfss FLAG,FLAG_INC
goto Dec_Process
Inc_Process
call Delay_50ms
incfsz PORTC,F
goto Inc_Process
goto SLEEP_Process
call Delay_50ms
decfsz PORTC,F
goto Dec_Process
clrf PORTC
clrf FLAG
movf PORTB,W
bcf INTCON,RBIF
bsf INTCON,RBIE
SLEEP
nop
nop
goto Prog_Loop
;****************************************************************************
;**** Delay 50ms
;****************************************************************************
Delay_50ms
movlw .50
movwf Var2
Delay_200ms_Loop
call Delay_1ms
decfsz Var2,F
goto Delay_200ms_Loop
return
;**** Delay 1ms
;****************************************************************************
Delay_1ms
nop
nop
nop
movlw VAL_1MS
movwf Var1
Delay_1ms_Loop nop
decfsz Var1,F
goto Delay_1ms_Loop
return
END
上一篇:16C84单片机的RB口中断程序
下一篇:PIC单片机的I2C应用程序1
- 热门资源推荐
- 热门放大器推荐
设计资源 培训 开发板 精华推荐
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况
- TI有奖直播|C2000™ F280013x实现更低成本且更高效的实时控制方案
- 直播:TI SimpleLink MCU无线平台及软件介绍!丰富的提问礼在这里等你~
- 芯币竞价全新回归 抱回惊喜迎接新年
- Mouser 福利活动:邀请新用户下单,各得百元奖励!
- 改变你对万用表的看法!福禄克首款热成像万用表Fluke-279FC功能畅想大征集!
- 恩智浦LPC1500开发体验有奖征集
- 【世健的ADI之路主题游】 第三站:了解物联网前沿器件与方案,打卡赢Kindle、《新概念模拟电路》
- 下资料赢京东卡|泰克“软硬”兼施 打造超值示波器
- 畅游安富利人工智能云会展,挑战60天打卡学习养成记!冲击华为Mate40 Pro、Apple iPad Air等豪礼啦!