从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 RC振荡器 系统时钟源
引用地址:
如何使用PIC内含之RC振荡器来当作系统时钟源?
推荐阅读最新更新时间:2024-11-11 21:28
PIC单片机警报声程序设计
pIC16c54警报声程序 #include“pic.h” #definebeep_outRA2//音效输出 chartmr_buff; charcycle_buff; charcycle_set; intchange_set; intchange_count; bitchange_flag; voidmain(void) {TRISA=0X0; PORTA=0; OP TI ON=4; cycle_buff=52; cycle_set=100; change_set=196; TMR0=0; while(1) { if(TMR0==0) {TMR0=(cycle_set-1)^0XFF; beep_out=!beep_ou
[单片机]
PIC单片机之关于超大数组问题
关于超大数组问题: 本实验用的编译器是xc16-gcc.exe,集成开发环境是MPLAB IDE v8.92,当前的编译器配置如下: -g -Wall -mlarge-code -mlarge-data -Os -fno-ivopts 如下图: 其中这里有一个超大的数组: 这时候编译会有这样的一个错误: 从提示可以知道,这是一个数据超出的错误,但是这里是超出了数据段,而不是说超出了芯片的flash,我们可以这样查看是否超过了flash,去掉这个数组编译看看占用了多少flash,如下: 也就是说占用的flash空间是:81459+7674=89133,但是单片机的flash却是这样的: 所以即是加上
[单片机]
PIC单片机开发工具
MPLAB简介 MPLAB 集成开发环境(IDE)是一个综合的编辑器、项目管理器和设计平台, 提供以下功能:使用内置的编辑器创建和编辑源代码、 汇编、编译和链接源代码, 通过使用内置的软件模拟器观察程序流程,或者使用在线仿真器或在线调试器以实时方式观察程序流程来调试可执行逻辑, 用软件模拟器或仿真器进行时序测量, 查看Watch 窗口中的变量, 使用器件编程器将固件烧写入器件。软件可以从Microchip公司的官方网站免费下载,使用时重点注意几个菜单项:在线调试,电源选项,芯片型号选择,单片机配置位的设置。 编译器MC18 MPLAB C18是适用于PIC18系列单片机独立而优化的ANSIC 编译器。此编译器是Microch
[单片机]
关于PIC单片机软件仿真时计算AB程序段的执行时间
在 MPLAB IDE 中当选择Debugger 为MPLAB SIM时在view 菜单下有个simulator logic analyzer,在程序中待计算的程序段之前和之后各加同一个IO口的置0置1输出信号;例如:计算delaynus(160)的延时,中程序中可以RC0=1;RC0=0; delaynus(160); RC0=1;在logic analyzer中的Channels选项中把RC0作人分析信号,这样在程序编译运行后,RC0的信号就出现在 logic analyzer里了;这时通过图形是不好计算时间的;那么在图形中点击右键选择Export Table后可以导出文本方式的数据如: RC0(X) RC0(Y) 93367
[单片机]
PIC18F452单片机 矩阵键盘
#include //调用头文件,可以去PICC18软件下去查找PIC18FXX2.H __CONFIG(1,XT) ; //晶振为外部4M __CONFIG(2,WDTDIS) ; //看门狗关闭 __CONFIG(4,LVPDIS) ; //禁止低电压编程 #define B7 RB7 #define B6 RB6 #define B5 RB5 #define B4 RB4 #define B3 RB3 #define B2 RB2 #define B1 RB1 #define B0 RB0 #define B PORTB #define D PORTD #define
[单片机]
pic单片机计数
1 #include pic.h //用的是PICC编译器 2 __CONFIG (HS & PROTECT & PWRTEN & BOREN & WDTDIS); 3 //PIC单片机都需要配置该位,HS是外部晶振模式 4 // 使能PROTECT保护程序存储器 5 //BOREN使能掉电保护 6 7 //WDTDIS关闭看门狗 8 void display(int pulse_amount); 9 void
[单片机]
第十节:PIC系列单片机复位(RESET)
P IC 16C5X内藏有上电复位 电路 (POR)。在芯片上有一复位端MCLR,对于一般的应用,只要把MCLR端接在高电位(VDD)即可,因为内部复位电路会在芯片上电时自动复位,无需在MCLR端再加上电复位电路。对于某些特殊应用,则需在MCLR端加上外部上电复位电路,在§1.10.5我们会谈及这个问题。 §1.10.1 复位的条件和原因 复位可由下面事件引发产生: a、芯片上电; b、把芯片MCLR端置低 电平 ; c、看门狗(WDT)超时溢出。 §1.10.2 复位时的PIC状态 在芯片复位期间,芯片状态为: a、 振荡器 处于起振准备状态; b、所有I/O口都被置成高阻态(即输入态); c、PC值被置为全 1 ;
[单片机]
PIC单片机C语言编程教程(1)
PIC 单片机 C 语言编程简介 用 C 语言来开发单片机系统软件最大的好处是编写代码效率高、软件调试直观、维护升级方便、 代码的重复利用率高、便于跨平台的代码移植等等,因此 C 语言编程在单片机系统设计中已得到越 来越广泛的运用。针对 PIC 单片机的软件开发,同样可以用 C 语言实现。 但在单片机上用 C 语言写程序和在 PC 机上写程序绝对不能简单等同。现在的 PC 机资 源十分丰富,运算能力强大,因此程序员在写 PC 机的应用程序时几乎不用关心编译后的可 执行代码在运行过程中需要占用多少系统资源,也基本不用担心运行效率有多高。写单片机 的 C 程序最关键的一点是单片机内的资源非常有限,控制的
[单片机]