EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
浅析PIC单片机的时钟设置, O) ^6 i$ t! T4 C1 X5 ^
7 r% z! ^/ l4 H" _! v" f2 |2 ]# m. n8 d0 o
什么时钟? 首先我们先讲讲什么是时钟。时钟就是单片机的心脏。每跳动一下。整个单片机的各个电路就同步的动作一下。就好像我们做广播体操的时候 广播上喊的节拍1234 2234 3234。。。。然后我们全部的同学就按照这个节奏进行一个个动作。节拍越快我们动作越快。节拍越慢我们动作的越慢。 内部时钟和外部时钟? PIC单片机有许多型号可以设置成 用外部时钟(如外部接个4MHZ的石英晶振),也可以设置成用内部RC时钟。而且还有许多型号可以选择多种频率的时钟。 如 PICLF1823 内部时钟最高可以到达32MHZ 最低可以达到 31kHz. 这事实上提供了一条降低功耗的新路子。一般的单片机降低功耗常常用的睡眠,而睡眠期间CPU是什么都不做。如果希望降低功耗,而且CPU也能工作。降低时钟频率无疑是个非常好的选择。 时钟的设置? 时钟设置一般只和两处有关 一个是配置字,一个是振荡器控制寄存器 OSCCON 下面我们以PICLF1823为例子进行讲解。 PICLF1823 配置字设置 中与时钟有关的就是 FOSC<2:0>:振荡器选择位,和PLLEN:PLL使能位 。 OSCCON 是有关内部时钟频率选择,如果只用外部时钟一般不理会。以下是数据手册中OSCCON寄存器的详细介绍。 实例讲解: 使用内部时钟将时钟频率设置成8MHZ 开发环境:MPLAB X IDE 芯片型号 ICLF1823 #include __CONFIG(FOSC_INTOSC&WDTE_OFF& WRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON&CLKOUTEN_OFF&IESO_ON&FCMEN_ON); __CONFIG(PLLEN_OFF&LVP_OFF) ;//将FOSC<2:0>:振荡器选择位设置成 INTOSC, void init_fosc(void) { OSCCON = 0x70;//8MHZ IRCF<3:0>时钟频率选择位设置成8MHZ } int main(int argc, char** argv) { init_fosc(); while(1); } PLL是用来做什么的呢?他的作用就是能将8MHZ的时钟频率X4变成32MHZ,记住只有8MHZ可以,其他频率是不行的。 使用内部时钟将时钟频率设置成32MHZ 开发环境:MPLAB X IDE 芯片型号 ICLF1823 #include __CONFIG(FOSC_INTOSC&WDTE_OFF& WRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON&CLKOUTEN_OFF&IESO_ON&FCMEN_ON); __CONFIG(PLLEN_ON&LVP_OFF) ;//将FOSC<2:0>:振荡器选择位设置成 INTOSC,使能PLLEN void init_fosc(void) { OSCCON = 0xF0;//32MHZ IRCF<3:0>时钟频率选择位设置成8MHZ ,使能4XPLL } int main(int argc, char** argv) { init_fosc(); while(1); }
5 {6 _, g9 q% y3 a0 \* ^
1 H0 u# X4 M ?6 e* V# B |