PIC16C84单片机介绍
,如RBO/INT引脚或PORTB改变中断,这类中断需3到4个指令周期。严格的时间,取决于中 断事件的发生。一旦在中断的中断服务程序中可以通过查询中断标志 位来确定中断源。中断的标志位应在重新开发这个中断之前,经软件 将其清0。
注意:
①每一个中断的标志位被置位,而与它相应的屏蔽位或GIE无关。
②如果中断发生,而全部中的允许位GIE假设本是清0的,GIE可能被用户中断服务程序的RETFIE指令无意之间连成1。这种事情可能发生在
a、在中断被响应时,指令清0GIE位。
b、程序分支到中断向量并执行中断服务程序。
c、中断服务程序执行RETFIE指令而完成。这会引起GIE位被置1(允许中断)。同时程序返回中断关闭后的指令(实 际上由于上述原因引起中断未能关闭)。为确保GIE清0,应有如下一段程序。
l00p BGF INT CON,GIE:关闭全部中断
BTFSC INTCON,GIE;全部中断允许位被关闭了吗?
GOTO l00P;没有返回到l00p,再清0GIE,否则程序继续。
1.INT中断
在RBO/INT上的外部中断是边沿触发。如果INTEDG位(OPTION <6>)是置1,则上升沿有效,如果INTEDG位被清0,则下降沿有效。当有效跳变出现在RBO/INT引脚上时,INTF位(INTCON<1>)被置1。清0INTE控制位(INTCON<4>),关闭这个中断。INTF在重新允许这个中断之前应由中断服务程序中的软件来清0这一位。在芯片进入SLEEP之前,如果INTE位被置1,则INT中断发生后可唤醒芯片。GIE位的状态决定了处理器被唤醒后是否分支到中断向量。
2.TMRO中断
TMRO溢出(由FFH~00H)将置1 TOIF位(INTCON<2>)。这一位 的中断可以对TOIE(INTCON<5>)位置1或清0而开放/关闭中断。
3.PORTB中断
在端口B的7~4位的输入改变,就置1 RBIF(INTCON<0>)位。 这个中断可以对RBIE(INTCON<3>)位置1或清0而开放或关闭。
注意 :当正在对RB端口进行读操作时,RB7~RB4发生改变,RBIF标志位可 能不被置1。
4.中断时如何保存W和STATUS寄存器。
中断时,硬件自动将PC的值压入堆栈,这叫保存断点,用户经常希望保存关键的寄存器的内容,(如W和STATUS寄存器)。为此,执行如下一段程序。
MOVWF W-TEMP ;将W寄存拷贝到W-TEMP寄存器,W-TEMP寄存器 可在1块或0块
SWAPF STATUS,W;状态寄存器内容送入W
BCF STATUS,RPO;选0块
MOVWF STATUS-TEMP;将状态寄存器的内容(现在在W中的STATUS-TEMP寄存器中断服务程序
SWAPF STATUS-TEMP,W;将STATUS-TEMP送入W(设置块到原来 的状态)
MOVWF STATUS ;W送入STATUS(恢复STATUS)
SWAPF W-TEMP,0;W-TEMP送W(恢复W的内容)
在上面这段程序中,W-TEMP寄存器,必须定义在两个块中,且要在定在同样的块基地址。例如将W-TEMP定义在0块的20H,同时它也应定义在1块的A0H。寄存器STATUS-TEMP必须定义在0块。
5.看门狗计时器(WDT)
看门狗计时器实际使用的是在芯片上的RC振荡器,这不要求任何外部元件。这个RC振荡器与OSC1/CLKIN引脚上接的RC振荡器(主振时钟)是分开的。这样即使OSC1/CLKIN和OSC2/CLKOUT引脚停振,(例在执行SLEEP指令后)WDT仍然能够工作。在正常工作时,WDT计时器的输出产生器件的RESET信号。如果器件处于SLEEP状态下,WDT计时器的输出将唤醒器件,使器件继续正常的工作。WDT也可以通过编程的配置来关闭。其内容的框图与PIC16C6X系列相同。
九、PIC16C84单片机的指令系统共有35条指令。与PIC16C6X系列的指令完全相同。
单片机 51单片机 MCU 单片机视频教程 单片机开发 ARM单片机 AVR单片机 PIC单片机 Atmel stm32 单片机学习 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
