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