隨著單片機技術的發(fā)展,單片機各方面的性能都有了很大的提高,運行速度也越來越快,這使得單片機的應用也越來越廣泛。
有時候由于外圍設備的速度或者其他個些要求,單片機的運行速度并不能很高,有時還要求比較低,比如當8位單片機用于PC/XT總線接口時,工作頻率是最高4.77MHz,那么單片機的工作頻率就只能是4.77MHz,這樣就會導致運行速度下降,當又有其它硬件要求工作頻率較高時,怎樣才能調(diào)和這兩方面的矛盾呢?可不可以讓單片機在與PC/XT接口時工作在4.77MHz,而在運行其他程序時工作在比較高的頻率呢?
首先我們做了這樣的實驗,如圖1,用外部振蕩電路,通過分頻得到兩個高低不同震蕩源(4:1),通過兩個可控門后連接到單片機的外部振蕩輸入端。用 P1.0來選擇輸入的振蕩頻率,即在程序執(zhí)行過程中,直接用語名來改變輸入頻率(當然在改變頻率時,串口、計時器不能用)。試驗后發(fā)現(xiàn),單片機雖然還可以正常工作,但在頻率改變過程中產(chǎn)生的干擾,使單片機內(nèi)的個些寄存器和RAM中的數(shù)據(jù)發(fā)生了變化,改變以后的工作狀態(tài)就顯得不是很穩(wěn)定。
由以上實驗可看出,在正常工作方式下,直接改變單片機的工作頻率是不可取的。其實單片機還有另外的兩種工作方式:等待工作方式和掉電工作方式(CHMOS 工藝制成的單片機個般都有)。單片機進入掉電工作方式以后,必須用硬伯復位,顯然這種方式也是不可取的。在等待工作方式下,送往CPU的時鐘信號被封鎖, CPU進入等待狀態(tài)。CPU內(nèi)部的狀態(tài),如堆棧指針(SP)、程序計數(shù)器(PC)、程序狀態(tài)字(PSW)、累加器及其他寄存器的狀態(tài)被完整地保留下來,而且等待工作方式可以通過個個中斷來喚醒,這些正是我們所需要的。于是我們在原來的電路圖中加上個個延時電路(可以用計數(shù)器來做),接在頻率切換控制線上,就可以讓可控門在進入到等待工作方式以后再動作。另外還要用P1.1來產(chǎn)生個個控制信號,通過延時電路作為中斷源,用來喚醒單片機。實驗表明,這種方式確實可以很穩(wěn)定地實現(xiàn)單片機工作頻率的切換,外加的電路實現(xiàn)起來也很方便。
在實際應用中又發(fā)現(xiàn),單片機的I/O口線經(jīng)常會不夠用,如果在這里用掉兩個I/O口其實是很浪費的,用一個實現(xiàn)起來又比較麻煩。其實,單片機在進入等待工作方式經(jīng)后,ALE和 PSEN均為高電平,ALE在單片機正常工作狀態(tài)下,不斷向外輸出頻率為fosc/6的脈沖,只有在CPU訪問片外數(shù)據(jù)存儲器時,才會丟失一個脈沖,正好可以通過ALE信號的變化來產(chǎn)生頻率控制信號和中斷信號。如圖過計數(shù)器對輸入脈沖進行計數(shù)來產(chǎn)生的,而用ALE信號作為計數(shù)器1的選通信號,使正常工作時因不斷的刷新來停止控制信號和中斷信號的產(chǎn)生,進入等待工作方式以后,記數(shù)器1因長期選道而開始正式計數(shù),先產(chǎn)生一個控制信號切換頻率,經(jīng)計數(shù)器2延時用中斷喚醒單片機進入正常工作狀態(tài),繼續(xù)等距離的執(zhí)行。
實驗表明,這種方式確實能可靠地運行,不需要I/O口,而且不需要很多控制命令,只要用一個控制命令進入等待工作方式以后,他就會自動產(chǎn)生改變頻率的信號和喚醒單片機的中斷信號。只需要再加上一個簡單的中斷處理程序,就可以在兩種工作頻率之間隨意地切換,該快的時候就快,該慢的時候就慢,真正是隨心所欲了。





