單片機的時鐘信號好比是單片機的心臟。單片機的時鐘頻率決定了單片機運行一個指令周期的時間。原理的話應(yīng)該是晶振與外部電容構(gòu)成電容三點式振蕩電路,此時時鐘輸入為正弦波,經(jīng)過內(nèi)部施密特觸發(fā)器整形變?yōu)榉讲ā?/p>
內(nèi)部時鐘方式:
利用單片機內(nèi)部的振蕩器,然后在引腳XTAL1(18腳)和XTAL2(19腳)兩端接晶振,就構(gòu)成了穩(wěn)定的自激振蕩器,其發(fā)出的脈沖直接送入內(nèi)部時鐘電路,外接晶振時,晶振兩端的電容一般選擇為30PF左右;這兩個電容對頻率有微調(diào)的作用,晶振的頻率范圍可在1.2MHz-12MHz之間選擇。為了減少寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作,振蕩器和電容應(yīng)盡可能安裝得與單片機芯片靠近。
外部時鐘方式:
此方式是利用外部振蕩脈沖接入XTAL1或XTAL2。HMOS和CHMOS單片機外時鐘信號接入方式不同,HMOS型單片機(例如8051)外時鐘信號由XTAL2端腳注入后直接送至內(nèi)部時鐘電路,輸入端XTAL1應(yīng)接地。由于XTAL2端的邏輯電平不是TTL的,故建議外接一個上接電阻。對于CHMOS型的單片機(例如80C51),因內(nèi)部時鐘發(fā)生器的信號取自反相器的輸入端,故采用外部時鐘源時,接線方式為外時鐘信號接到XTAL1而XTAL2懸空。
PIC單片機時鐘的設(shè)置:
時鐘設(shè)置一般只和兩處有關(guān) 一個是配置字,一個是振蕩器控制寄存器 OSCCON 下面我們以PICLF1823為例子進行講解。
PICLF1823 配置字設(shè)置 中與時鐘有關(guān)的就是 FOSC《2:0》:振蕩器選擇位,和PLLEN:PLL使能位 。
OSCCON 是有關(guān)內(nèi)部時鐘頻率選擇,如果只用外部時鐘一般不理會。以下是數(shù)據(jù)手冊中OSCCON寄存器的詳細介紹。
實例講解:
? ?? ? ?使用內(nèi)部時鐘將時鐘頻率設(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è)置成8MHZ
}
int main(int argc, char** argv) {
init_fosc();
while(1);
}
PLL是用來做什么的呢?他的作用就是能將8MHZ的時鐘頻率X4變成32MHZ,記住只有8MHZ可以,其他頻率是不行的。
使用內(nèi)部時鐘將時鐘頻率設(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);//這個要放到上一行去
__CONFIG(PLLEN_ON&LVP_OFF) ;//將FOSC《2:0》:振蕩器選擇位設(shè)置成 INTOSC,使能PLLEN
void init_fosc(void)
{
OSCCON = 0xF0;//32MHZ IRCF《3:0》時鐘頻率選擇位設(shè)置成8MHZ ,使能4XPLL
}
int main(int argc, char** argv) {
init_fosc();
while(1);
}
評論
查看更多