PIC單片機之時鍾設置
http://blog.csdn.net/superanters/article/details/8541650
內部時鍾和外部時鍾?
PIC單片機有許多型號可以設置成 用外部時鍾(如外部接個4MHZ的石英晶振),也可以設置成用內部RC時鍾。而且還有許多型號可以選擇多種頻率的時鍾。
如 PICLF1823 內部時鍾最高可以到達32MHZ 最低可以達到 31kHz. 這事實上提供了一條降低功耗的新路子。一般的單片機降低功耗常常用的睡眠,而睡眠期間CPU是什么都不做。如果希望降低功耗,而且CPU也能工作。降低時鍾頻率無疑是個非常好的選擇。
時鍾的設置?
時鍾設置一般只和兩處有關 一個是配置字,一個是振盪器控制寄存器 OSCCON 下面我們以PICLF1823為例子進行講解。
PICLF1823 配置字設置 中與時鍾有關的就是 FOSC<2:0>:振盪器選擇位,和PLLEN:PLL使能位 。
OSCCON 是有關內部時鍾頻率選擇,如果只用外部時鍾一般不理會。以下是數據手冊中OSCCON寄存器的詳細介紹。
實例講解:
使用內部時鍾將時鍾頻率設置成8MHZ
開發環境:MPLAB X IDE
芯片型號:PICLF1823
#include<pic.h>
__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_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
芯片型號:PICLF1823
#include<pic.h>
__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_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);
}