任何一个单片机要工作都需要一个时钟使单片机按给定的时钟节拍一步一步的执行程序。对于这样一个时钟,在PIC单片机上有多种工作配置方式,比起传统的51系列单片机,其时钟模式得到了极大的丰富,然而这给初学者带来了一定的困难。
单片机标准时钟模式:用石英晶体或陶瓷振荡器产生工作时钟,如图1所示。
图1
PIC单片机晶体振荡原理图
与普通单片机相比,PIC晶体振荡模式的最大特点是内部振荡电路放大器的增益是可调的。如图1,Rf为增益调节电阻。主要原因是不同振荡频率的晶体,为保证其可靠振荡而所需的激励功率是完全不一样的。按常规,振荡器频率越低,其所需的激励功率越小。
如果振荡器输出给晶体的激励功率不符合晶体自身的工作特性要求,可能就会有以下两种结果出现:
1、激励功率过大,振荡波形就会发生畸变,晶体可能会震到其高次谐波上去,更糟糕的是晶体可能会被震碎(如音叉型的32768Hz晶体);
2、激励过小,晶体起振困难,起振时间很长,长时间工作还可能出现停振现象等等。
PIC振荡电路的这种可调增益使用户能够灵活合理地配置其设计的晶体振荡电路。PIC有三种增益模式:
振荡模式 |
增益量 |
适用器件 |
参考振荡频率范围 |
LP |
最低 |
低频晶体 |
<200kHz |
XT |
适中 |
晶体/陶瓷谐振器 |
100kHz~4MHz |
HS |
最高 |
高速晶体/陶瓷谐振器 |
>2MHz |
要强调,作为设计者在选择恰当的振荡模式时不能机械的按表查找,不同厂家生产的晶体品质差异较大。同样是4MHz的晶振,有的配置成XT模式即能正常工作,有的需要配制成HS才稳定可靠。
关键字:PIC单片机 时钟模式
引用地址:
PIC单片机的时钟模式
推荐阅读最新更新时间:2024-03-16 14:28
PIC单片机C知识点汇总
PICC变量及定义 1、当变量为多字节数据时,PICC按低字节存放在低地址、高字节存放在高地址的原则存放变量,并以最低字节的地址作为该变量的地址。例如int型变量i的值为0X1234,低字节0x34存放在0X30,高字节0x12存放在0X31,并以0x30作为变量i的地址。 2、单片机的带符号的整数均以补码方式存放。对于二进制数来说,先减一后取反和先取反后加1得到的结果是一样的。 3、标准C中没有位变量,位变量是PICC C语言中特有的。有了位变量,就可以方便的进行位操作,设置某一引脚是高电平还是低电平。 4、强制类型转换的一般表达式为 (类型说明符)(表达式) 作用:把表达式的运算结果强制转换成类型说明符所表达的
[单片机]
PIC单片机的BCD码加法程序
;******************* Unsigned BCD AddiTIon *************** ; ; This rouTIne performs a 2 Digit Unsigned BCD AddiTIon ; It is assumed that the two BCD numbers to be added are in ; locaTIons Num_1 & Num_2. The result is the sum of Num_1+Num_2 ; and is stored in location Num_2 and the overflow carry is returned ; in
[单片机]
PIC单片机的新开发环境--MPLAB X IDE
自从学习pic单片机开始所有的历程全部是以MPLAB IDE为编译环境,然MPLAB IDE即便是最新的版本在win7 64位下运行也会出现挂载不上picc编译器的情况,这就导致了作为初学者的我选择了更换电脑系统的下下策。 我安装了win7 32位系统,首先说32位系统会吞掉将近一个多G的内存分配给显卡,而且32位系统最多识别4个G的内存所以家内存条也解决不了问题,也就是说实际电脑使用的时候能用到的内存只有2个多G,这将对我们电脑的工作产生非常大的影响。 于是我在网上搜罗发现Microchip公司推出的新版本的编译环境MPLAB X IDE是可以在windows7-10之间畅游的,所以便打起了这个家伙的主意,软件本身是可以
[单片机]
PIC单片机实现冒泡排序算法
编写子程序paixu,实现1Byte数的顺序排列。待排序的10个二进制数(自定义数据大小)存放在内存空间内。 编写宏定义实现大小比较和换位,入口参数为待比较的两个数据地址。 注意排序过程中需要使用间接寻址方式,即利用FSR和INDF两个特殊功能寄存器实现寻址操作。 编写子程序,调用宏定义,使用冒泡排序算法实现排序。 1、冒泡排序算法 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素作同样的
[单片机]
PIC单片机基础知识之二
PIC中档单片机的寻址模式,BANK/PAGE相关 1)操作对象寻址 -9位(512字节)寻址范围 【直接寻址】 在基础知识之一里面介绍了长字指令,一条PIC16的指令是一个14位的长字,这个长字的前半部分是指令的操作码, 后半部分则是指令所需要操作的对象地址或者操作数。如下面的图示: 指令: ADDWF REG,W 机器码: 00 0111 d fffffff 在这里,前面的000111就是ADDWF的操作码,d是destination的缩写,表示运算的结果放到哪里去,如果逗号后面是0,则结果放到W里,如果逗号后面是1,则结果放到所操作的寄存器REG里。你看到这条指令逗号后面不是0或1,而是W或F,这是编
[单片机]
PIC单片机和51单片机谁更容易于学习
pic单片机是当前最实用工具之一,而对于pic单片机的探讨往往与其他类型单片机相联系。 51好学一些,但是PIC也没比51难多少。首先,PIC比51多个配置位,这个基本上看看就懂了。然后,PIC的端口要配置成输入或者输出,51单片机则不用。PIC的中断没有优先级,需要软件判断。最后,PIC比51多许多寄存器,你要使用PIC的各种功能,都需要去初始化寄存器。 再说说PIC相比与51单片机有哪些优点: 1:相同的晶振情况下,PIC比51速度快,PIC4个时钟周期为一个指令周期,51是12个。 2:PIC比51功能强大许多,比如自带AD转换,自带PWM,内置弱上拉(需设置)LCD接口等。。这样,你在用到许多功能的时候就很方便啦,
[单片机]
PIC单片机矩阵键盘+行扫描法
/*采用行扫描法RAM占用空间较少(呵呵起码我写的程序是这样的,因为我刚开始学,还不是很懂各方面的程序优化)*/ #include pic.h __CONFIG(0x3F32); //芯片配置字 #define uchar unsigned char #define uint unsigned int void delay10ms(uchar x); void beep(); void init(); uchar key; uchar LED_CODE ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0xbf}; void keyscan() { uc
[单片机]
测试PIC单片机如何省电
测试条件:PIC16F676使用内部4MHzRC振荡,电源电压5V,测试在睡眠下的消耗电流 单片机在外部IO口设置成输入并有固定电平的情况下,程序进入一个NOP指令和跳转指令的死循环后耗电约1.26mA 1.SLEEP之后:WDT开并256分频,每2.3秒左右唤醒一次,所有IO口为数字输入口,直接接高电平或低电平。5V,0.159mA,主要配置:_INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _BODEN 2.上面的程序没动,只是配置& _BODEN_OFF,电流降为8.5μA,其它配置变化对电流消耗影响不大,WDT开与不开只差0.1μA,可见BROWN OUT D
[单片机]