實(shí)例講解PIC單片機(jī)的時(shí)鐘設(shè)置
什么時(shí)鐘?
首先我們先講講什么是時(shí)鐘。時(shí)鐘就是單片機(jī)的心臟。每跳動一下。整個(gè)單片機(jī)的各個(gè)電路就同步的動作一下。就好像我們做廣播體操的時(shí)候 廣播上喊的節(jié)拍1234 2234 3234。。。。然后我們?nèi)康耐瑢W(xué)就按照這個(gè)節(jié)奏進(jìn)行一個(gè)個(gè)動作。節(jié)拍越快我們動作越快。節(jié)拍越慢我們動作的越慢。
內(nèi)部時(shí)鐘和外部時(shí)鐘?
PIC單片機(jī)有許多型號可以設(shè)置成 用外部時(shí)鐘(如外部接個(gè)4MHZ的石英晶振),也可以設(shè)置成用內(nèi)部RC時(shí)鐘。而且還有許多型號可以選擇多種頻率的時(shí)鐘。
如 PICLF1823 內(nèi)部時(shí)鐘最高可以到達(dá)32MHZ 最低可以達(dá)到 31kHz. 這事實(shí)上提供了一條降低功耗的新路子。一般的單片機(jī)降低功耗常常用的睡眠,而睡眠期間CPU是什么都不做。如果希望降低功耗,而且CPU也能工作。降低時(shí)鐘頻率無疑是個(gè)非常好的選擇。
時(shí)鐘的設(shè)置?
時(shí)鐘設(shè)置一般只和兩處有關(guān) 一個(gè)是配置字,一個(gè)是振蕩器控制寄存器 OSCCON 下面我們以PICLF1823為例子進(jìn)行講解。
PICLF1823 配置字設(shè)置 中與時(shí)鐘有關(guān)的就是 FOSC<2:0>:振蕩器選擇位,和PLLEN:PLL使能位 。
OSCCON 是有關(guān)內(nèi)部時(shí)鐘頻率選擇,如果只用外部時(shí)鐘一般不理會。以下是數(shù)據(jù)手冊中OSCCON寄存器的詳細(xì)介紹。
實(shí)例講解:
使用內(nèi)部時(shí)鐘將時(shí)鐘頻率設(shè)置成8MHZ
開發(fā)環(huán)境:MPLAB X IDE
芯片型號:PICLF1823
#include
__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>:振蕩器選擇位設(shè)置成 INTOSC,
void init_fosc(void)
{
OSCCON = 0x70;//8MHZ IRCF<3:0>時(shí)鐘頻率選擇位設(shè)置成8MHZ
}
int main(int argc, char** argv) {
init_fosc();
while(1);
}
PLL是用來做什么的呢?他的作用就是能將8MHZ的時(shí)鐘頻率X4變成32MHZ,記住只有8MHZ可以,其他頻率是不行的。
使用內(nèi)部時(shí)鐘將時(shí)鐘頻率設(shè)置成32MHZ
開發(fā)環(huán)境:MPLAB X IDE
芯片型號:PICLF1823
#include
__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON
&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//這個(gè)要放到上一行去
__CONFIG(PLLEN_ON&LVP_OFF) ;//將FOSC<2:0>:振蕩器選擇位設(shè)置成 INTOSC,使能PLLEN
void init_fosc(void)
{
OSCCON = 0xF0;//32MHZ IRCF<3:0>時(shí)鐘頻率選擇位設(shè)置成8MHZ ,使能4XPLL
}
int main(int argc, char** argv) {
init_fosc();
while(1);
}
編輯:admin 最后修改時(shí)間:2018-05-18