微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > PIC单片机之16C84单片机介绍(二)

PIC单片机之16C84单片机介绍(二)

时间:11-14 来源:互联网 点击:

时器,使多数应用不需要外接复位电路。

  SLEEP方式提供了低功耗方式。用户可经外部复位;看门狗计时器溢出;中断来唤醒芯片。

  8-1配置位

  配置位分为可编程的位,读作0,不可编程的位,读作1。通过可编程的位来选拔各种配置。这些位映象到程序存储器的2007H单元。注意地址2007H不等于用户程序存储器空间。事实上,它属于专门的测试 /配置存储空间(2000H~3FFH),只有在编程时可以访问。图4-10 是配置寄存器的结构(附后)

  其中Fosc1或0>为振荡器选择位。

  11:选RC振荡器

  10:选HS振荡器

  01:选XT振荡器

  00:选CP振荡器

  WDTE是看门狗允许与禁止的选择位。此位为1,允许看门狗工作。此位为0禁止看门狗工作。

  PWRTE是加电计时器允许与禁止的选择。此位为1,加电计时器允许工作,为0则禁止工作。

  CP是代码保护的选择,此位为1代码保护取消,这一位为0,所有程序存储器的代码被保护。其余位是不执行的。读作1。

  有关振荡器的配置,振荡器的选择与连接电路与PIC16C6X系列相同。

  8-2中断

  PIC16C84具有4个中断源。即外部中断RBO/INT引脚上的中断,TMR0溢出中断;PORTB改变中断(RB7:RB4);EEPRDM写完成中断。

  中断控制寄存器(INTCON在其标志位,记录了每一个中断请求。它也包括了每个中断的允许/禁止位。所有中断的允许/禁止位(IN TCON7>),它就开放所有中断或禁止所有中断。从中断返回指令RETFLE返回时,退出中断,并置GIE=1,重新开放所有中断。 RBO/INT引脚中断,RB端口改变中断和TMRO溢出中断,这些中断的中断标志在INTCON寄存器中。

  当中断的响应时,GIE位被清0,关闭任何新的中断,返回地址被压入堆栈,用0004H装入PC。对于外部中断文件,如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上的外部中断是边沿触发。如果INT?EDG位(OPTION 6>)是置1,则上升沿有效,如果INTEDG位被清0,则下降沿有效。当有效跳变出现在RBO/INT引脚上时,INTF位(INTCON1>)被置1。清0INTE控制位(INTCON4>),关闭这个中断。INTF在重新允许这个中断之前应由中断服务程序中的软件来清0这一位。在芯片进入SLEEP之前,如果INTE位被置1,则INT中断发生后可唤醒芯片。GIE位的状态决定了处理器被唤醒后是否分支到中断向量。

  2.TMRO中断

  TMRO溢出(由FFH~00H)将置1 TOIF位(INTCON2>)。这一位 的中断可以 对TOIE(INTCON5>)位置1或清0而开放/关闭中断。

  3.PORTB中断

  在端口B的7~4位的输入改变,就置1 RBIF(INTCON0>)位。 这个中断可以对RBIE(INTCON3>)位置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送入STA?TUS(恢复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振荡器(主振时钟)是分

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top