如何使用PIC内含之RC振荡器来当作系统时钟源?

从PIC12C508开始,逐渐地,PIC有很多型号都内含有可以当作系统时脉源的RC振荡器。有了这项功能,不但让整体系统的成本进一步往下降;并且还因为内部的RC振荡源是经过校正的,而获得了比外接RC振荡更精确的时钟。

不过,想要使用内部RC振荡而有精确的时钟,是有方法的。除了在刻录IC时要指定使用内部RC振荡以外,还要在原始程序代码中加上一些命令才行。而命令的用法,还因不同种类的PIC而有不同。

以12-BIT 架构的PIC而言,例如PIC12C508,Microchp在IC的最后一行程式内存,加上一个"movlw 0x??"的命令,当芯片复位时,IC会先运行该命令之后,再跳到地址0继续运行。因此,如果您一直没有去修改到w暂存器的属性的话,则w暂存器会一直保留著原来"??"的那个值。"??"就是Microchip测量出来的校正值。如果您把它填到OSCCAL那个寄存器的话,则以后的RC振荡将是"蛮准的"4MHz。因此,通常简单的作法,便是在程序的第0行填入" movwf OSCCAL"的命令就可以了。

以14-BIT架构的PIC而言,例如PIC12F629,Microchp在IC的最后一行程式内存,加上一个"retlw 0x??"的命令。因此,您可以利用在程序中的任何位置,加上"call LAST-ADDRESS"(调用最后一个地址) (对PIC12F629 而言,LAST-ADDRESS = 0x3ff),和"movwf OSCCAL"两道命令来校正内部RC振荡。
  
 PIC单片机 www.pic16.com