首先我們先講講什么是時鐘。時鐘就是單片機的心臟。每跳動一下。整個單片機的各個電路就同步的動作一下。就好像我們做廣播體操的時候 廣播上喊的節拍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
芯片型號: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>:振蕩器選擇位設置成 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
__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);
}
-
單片機
+關注
關注
6035文章
44554瀏覽量
634653 -
時鐘
+關注
關注
10文章
1733瀏覽量
131450
原文標題:單片機時鐘是什么?
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論