時(shí)鐘發(fā)生器用于產(chǎn)生時(shí)鐘,并提供給CPU和外部硬件設(shè)備。
UPD78F0527有如下三種系統(tǒng)時(shí)鐘。
(1)主系統(tǒng)時(shí)鐘
①通過(guò)連接一個(gè)振蕩器到X1和X2,該振蕩電路產(chǎn)生fx=1到20MHZ的時(shí)鐘;
②使用內(nèi)部高速振蕩器產(chǎn)生fRH=8MHZ的時(shí)鐘。
(2)副系統(tǒng)時(shí)鐘
①通過(guò)在XT1和XT2之間連接一個(gè)fXT=32.768KHZ的振蕩器;
②通過(guò)XT2引腳提供一個(gè)外部副系統(tǒng)時(shí)鐘fexclks=32.768KHZ。
(3)內(nèi)部低速振蕩時(shí)鐘(看門(mén)狗定時(shí)器時(shí)鐘)
①內(nèi)部低速振蕩器,以fRL=240KHZ的時(shí)鐘振蕩。該時(shí)鐘不能作為CPU時(shí)鐘。
在電表掉電時(shí)CPU選擇使用副系統(tǒng)時(shí)鐘。
如果一個(gè)變量只有幾種可能的值。則可以定義為枚舉類(lèi)型。所謂“枚舉”是指將變量的值一一列舉出來(lái),變量的值只限于列舉出來(lái)的值得范圍。
如下CPU_CLK的值只能是CPU_8M或CPU_32K;
typedef?enum
{????CPU_8M, ???
CPU_32K
}enum_CPU_CLK;
extern?volatile?enum_CPU_CLK CPU_CLK;
void?Clock_use_8M(void)
{????
OSCCTL=0b00110000; ?//X1&X2 pin used as IO,1Mhz
PCC =?0b00000000; ??//Set internal high-speed oscillator fck=8MHz,(default value fck=4MHz),XT1 used as IO,XT2 used as CLK input????
RCM =?0x00; ????????//Internal low&high speed oscillator run,wait internal high-speed stable????
CPU_CLK = CPU_8M; ???
while(CLS) ?????????//wait CPU clock used main system clk?????
{????????
NOP(); ???
}
}
void?Clock_use_32k(void)
{????
BitSet(PCC,?0x10);?//uses subclk 32k/2 as the program clk????
CPU_CLK = CPU_32K; ???
while(!CLS) ???
{????????
NOP();
}????
BitSet(RCM,0x01);?//STOP INTERNAL CLK
}
電子發(fā)燒友App






評(píng)論