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