|
|
其實(shí)不太確定你的意圖, 你的計(jì)數(shù)到底計(jì)數(shù)的什么, 如果是 計(jì)數(shù)480個(gè)下降沿的話, 是不是應(yīng)該這樣?
void int4_Routine(void) interrupt 16
{
if(++count==480)
{
CLK_DIV |= 0x10;
}
if(++count>=9600)
{
count = 0;
CLK_DIV &= 0xEF;
}
}
這只是一個(gè)建議, 因?yàn)槲覜](méi)理解你希望的 效果,CLK_DIV 你應(yīng)該理解為一個(gè) 開(kāi)關(guān),在你認(rèn)為適當(dāng)?shù)臅r(shí)候,打開(kāi)開(kāi)關(guān) 讓 P3.1 輸出 P3.0 不需要的時(shí)候關(guān)閉。這個(gè)開(kāi)關(guān)只是一個(gè)動(dòng)作,你在某一個(gè)中斷中 設(shè)置 開(kāi)/關(guān) 即可,不需要再while里面反復(fù)去操作這個(gè)開(kāi)關(guān)。你要知道,STC15系列 即便你 頻率定為 35MHz, 1us 可以有35個(gè)機(jī)器時(shí)鐘,處理一個(gè)if 判斷 一個(gè)雙字節(jié)16位數(shù)字 需要20個(gè)時(shí)鐘 已經(jīng)超過(guò) 0.5us了,所以,按你的需要你必須把不必要的步驟精簡(jiǎn)再精簡(jiǎn)。
|
|