; Filename: WK_PCHG.asm *

; Date: Mar/13/2001 *

;**********************************************************************

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_Var1 EQU 0x30

INT_Var2 EQU 0x31


W_Temp EQU 0x72

STATUS_Temp EQU 0x73

FSR_Temp EQU 0x74


#define VAL_1MS .248


#define FLAG_INC 0

#define FLAG_DEC 1



org 0x00 ; RESET  0x000

nop

clrf PCLATH

goto Main


org 0x004

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


bsf FLAG,FLAG_INC ; FLAG_INC  1

goto Exit_ISRs


Check_DEC_KEY

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


Bounce_Loop1

movlw .248

movwf INT_Var2

Bounce_Loop2

nop

decfsz INT_Var2,F

goto Bounce_Loop2

decfsz INT_Var1,F

goto Bounce_Loop1

return


******************************************

Main


BANKSEL TRISB

movlw B'11110000'

movwf TRISB ; RB4..RB7

clrf TRISC

movlw B'00000000' ; Enable PORTB  Pull UP

movwf OPTION_REG


BANKSEL PORTB

movlw B'11111111'

movwf PORTB

clrf PORTC


bsf INTCON,GIE

clrf FLAG

bsf FLAG,FLAG_INC


Prog_Loop

btfss FLAG,FLAG_INC

goto Dec_Process


Inc_Process

call Delay_50ms

incfsz PORTC,F

goto Inc_Process

goto SLEEP_Process


Dec_Process

call Delay_50ms

decfsz PORTC,F

goto Dec_Process


SLEEP_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


关键字:16F870  单片机  中断应用 引用地址:16F870单片机的中断应用程序

上一篇:pic单片机的模拟I2C通信
下一篇:PIC产生伪随机数汇编语言程序

推荐阅读

如题,下面贴上我的时钟设置代码:#define PLL_SOURCE_HSI // HSI (~8MHz) used to clock the PLL, and the PLL is used as system clock sourcestatic void SetSysClock(void){__IO uint32_t StartUpCounter = 0, HSEStatus = 0;#if defined (PLL_SOURCE_HSI)FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;RCC->C...
10月15日,仓储物流机器人公司极智嘉科技(Geek+)在南京举行了战略发布会。去年11月,极智嘉获得1.5亿美元的B轮融资后开始战略升级,筹建智慧工厂。极智嘉南京智慧工厂一期投资5000万人民币,于今年8月正式投产。极智嘉科技创始人兼CEO郑勇介绍了机器人仓储业务的发展前景,并宣布未来三年,极智嘉在AI物流机器人方面将投入10亿人民币进行研发。
MSP430超低功耗(ULP)FRAM平台集成了独特的嵌入式FRAM和全面的超低功耗系统架构,让创新者能够以较低的能量预算提高性能。FRAM技术整合了SRAM的速度、灵活性和耐久性与闪存的稳定性和可靠性,大幅降低了功耗。MSP430 ULP FRAM产品系列包含丰富的器件,具有FRAM、ULP 16位MSP430 CPU和面向各种应用的智能外设。ULP架构展示了7种低功耗模式,能够延长电...
摩尔定律在先进半导体工艺上虽然还在延续,从7nm、5nm正步入3nm,但从多个性能指标的角度可以看到,天花板正趋向于平缓,单芯片的良率会随着die面积的增长更快的降低,在更先进的工艺上,研发成本和时间增加巨大。面对这些产业的挑战,目前全球只有Intel、samsung和TSMC还正在致力研发及生产7nm及以下的工艺。来自芯耀辉联席CEO余成斌教授作为深耕IP领域数...

史海拾趣

问答坊 | AI 解惑

学习PLC的2个简单方法

  有的初学者在理论上花了很多功夫,结果半年下来还是没有把PLC搞懂,其实他们只是缺少了一些PLC的实践经验,只要再进行一些实际的梯形图编写、程序下载、调试等操作,增加对PLC的感性认识,很快就可以掌握PLC这项技术了。开始阶段可以先学习 ...…

查看全部问答∨

推荐一个不错的操作系统,国人团队开发的

几天前在非技术区发现djyos大侠发表的一个帖子,估计djyos是他们的大佬吧。 都江堰操作系统,这几天仔细看了他们的官网,并粗粗浏览了他们的文档,他们的设计果然有独到创新之处,令人耳目一新啊。 一个团队,5年潜心开发,了不起啊,冲这种精神 ...…

查看全部问答∨

请问,pxa270 烧写wince 5时不能烧写至nand flash

请问,pxa270 烧写wince 5时不能烧写至nand flash: 出现以下错误: INFO: FlashErase: erasing flash A6600000 to A7C3FFFF.  Please wait... ................................................................................ .... ...…

查看全部问答∨

单片机与PLC(TLP521)

现在我在做工程,很急,一个星期内要完工,这都过了三天了,软件写完了,硬件在实验室测了也正常.但到工业现场干扰就来了,经过排查,确定了是硬件电路,也就是光耦采集信号的稳定问题.由于我所做的工程(显示板)和马达共地,马达启动电流比较大,且工作的时候 ...…

查看全部问答∨

小菜求教

我想学习windows ce方面的开发,我以前学C++的,没有学过C#,我经常用的是vs2005。 我想问一下,用vs2005进行windows ce方面的开发,是否要学些C#? 学习C#又什么好的教材吗? 谢谢了…

查看全部问答∨

求教,串口在与上位机通信时需要自定义通信握手吗?

  今天负责我项目的总工程师要我在串口与上位机接收和发送数据时建立一个握手协议,我个人认为串口通信的可靠性是很高的,按理是不需要另外定义握手的,如果需要建立的概率时多少呢,也就是说串口在的误码率有多高?串口定义的波特率是115200Hz,请 ...…

查看全部问答∨

介绍 具有pwm模块的常用单片机

各位高手们,你们经验比较丰富,见的单片机种类也多。请问一下有没有常见的,具有PWM功能的单片机,可以输出50kHz~100kHz的pwm脉冲信号,介绍几个。最近在做这方面的实验,谢谢各位了…

查看全部问答∨

单片机兼职

本公司致力于开发工业控制类产品,现诚聘单片机开发兼职,要求熟悉主流单片机,模拟电路设计,熟悉单片机嵌入式式C语言编程,有模拟电路单片机实际产品开发经验。如果条件合适可长期合作。技术出众可以作为合伙人。有意向发邮件sales@soft-ec.com, ...…

查看全部问答∨

新手关于MSP430LaunchPad在CCS下Debug的问题

首先,我是msp430绝对新手,因为之前我从来没用过ti的单片机。关于msp430程序下载以及Debug的方式,我看了相关资料,资料显示是使用Jtag方式进行的,有相应的下载器。收到开发板以后,我发现套件里面只有一根usb的线缆,板子上有一块usb-串口的芯片 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved