摘 要:對軟件仿真在本科單片機實驗教學中的應(yīng)用做了探討,為在現(xiàn)有實驗教學資源的條件下迅速提高教學質(zhì)量提供了一種新的思路。
關(guān)鍵詞:單片機 軟件仿真 中斷
中圖分類號:TP38文獻標識碼:A文章編號:1672-3791(2012)06(c)-0182-03
單片機,又稱單片微控制器,是將計算機系統(tǒng)集成到一個芯片上的電子系統(tǒng),應(yīng)用范圍十分廣泛。目前,各高校電子信息和自動化等專業(yè)均開設(shè)了單片機課程,注重對學生進行單片機知識的普及和單片機使用技能的培養(yǎng)[1]。
單片機是一門實踐性很強的課程,從某種意義上講,學生上機體驗豐富與否,將直接影響教學效果。然而,受到實驗課時和實驗資源的限制,僅憑課堂有限的學時是無法大幅度提升學生的單片機應(yīng)用能力的,他們不得不在課下缺少單片機資源的條件下進行學習。因此,使用單片機的軟件仿真環(huán)境,也成為了他們的必備技能之一。除了滿足脫機環(huán)境下的學習需求之外,軟件仿真在控制程序的精確耗時方面有著獨特的優(yōu)勢。所以,注意在單片機實驗教學中培養(yǎng)學生應(yīng)用軟件仿真分析問題的能力是十分必要的[2]。
1 單片機軟件仿真在高校教學中的應(yīng)用
1.1 單片機軟件仿真環(huán)境
單片機軟件仿真是指在沒有或尚未連接單片機的情況下,采用上位PC機軟件模擬單片機運行狀態(tài)的輔助開發(fā)手段。本文以天津科技大學PIC單片機授課所使用的microchip公司18F4520單片機為研究對象,具體介紹軟件仿真在高校單片機教學中的應(yīng)用。
1.2 定時器中斷程序設(shè)計的代表性
眾所周知,中斷是單片機教學的重點和難點,這是因為它要涉及程序的暫停、中斷的開啟、數(shù)據(jù)的暫存、中斷的終止、數(shù)據(jù)的恢復和主程序的執(zhí)行等內(nèi)容,涉及知識點多,學生理解起來較為抽象,所以一般的短時實驗教學效果并不理想,需要學生在課下通過軟件仿真來慢慢消化理解。教學中常用的中斷有兩種:一種是如由諸如按鍵按下等外部事件引發(fā)的中斷;另一種則是由定時器所產(chǎn)生的中斷。對于前者,由于有外部行為的發(fā)生作為標志,理解起來相對容易;對于后者,由于單片機的指令周期很短,通常都在微秒級別,人的生理器官無法體察如此短的時間變化,而中斷的一系列過程又恰恰在這期間漸次發(fā)生。所以,如果能讓這些微秒級別的程序流程變得直觀可測,無疑將有助于提高教學效果[3]。
軟件仿真的應(yīng)用,可以使上述要求得到滿足,這也是本文選擇定時器中斷程序進行軟件仿真的原因。
1.3 應(yīng)用軟件仿真進行定時器中斷程序的教學
(1)教學要求。
要求學生完成如下設(shè)計:使用外接10MHz時鐘的18F4520的TMR0定時器,每隔100μs發(fā)出中斷指令并進行往復取反操作,以產(chǎn)生一個5kHz的方波并驅(qū)動蜂鳴器發(fā)聲。程序較為簡單,其原理見圖1。可以看出,程序的關(guān)鍵在于如何精確發(fā)出中斷指令。
學生的困惑集中在下面兩個方面:(1)如何發(fā)出中斷,中斷的流程如何;(2)如何精確確定定時器的觸發(fā)時間。這兩點,均可通過軟件仿真解決。
(2)使用軟件仿真幫助學生完成設(shè)計。
18F4520單片機集成開發(fā)環(huán)境Mplab自帶了Mplab SIM軟件仿真器,可以用設(shè)置斷點的方法,跟蹤軟件的流程和各數(shù)據(jù)項的數(shù)值變化。由于外部時鐘的周期為0.1μs,因此18F4520的指令周期為0.4μs,要滿足100μs的間隔,TMR0這個8位計時器應(yīng)該每計時250個指令周期發(fā)出一條中斷指令。
大多數(shù)學生的編程思路如下:首先,為中斷程序進行必要的環(huán)境標志位設(shè)置;之后,將TMR0計時器的初始值設(shè)為6。這是因為TMR0是8位計數(shù)器,每個指令周期,即0.4s計數(shù)一次,增加到255后的下一個指令會使TMR0溢出,產(chǎn)生中斷指令。學生認為應(yīng)給計數(shù)器賦初值6,使其在溢出時計數(shù)250并產(chǎn)生100μs延時。這種方法乍看起來沒有紕漏,但卻無法得到正確結(jié)果。這是因為學生沒有明白中斷的具體流程,不清楚除了計數(shù)的時間消耗之外,還有諸如中斷跳轉(zhuǎn)語句之類的其他隱性消耗,如不加以考慮,是不可能得出理想結(jié)果的。
為了幫助學生熟悉程序流程,提示學生使用軟件仿真器跟蹤程序的主要步驟并觀察TMR0中斷計時器的低字節(jié)TMR0L(用來存放計數(shù)初值)的數(shù)值變化。在設(shè)置定時器初值的語句TMR0L=6處設(shè)置斷點,讓程序調(diào)試運行到此處,然后開始單步運行,很容易發(fā)現(xiàn)在語句執(zhí)行到T0CONbits.TMR0ON=1處初值開始增加,說明計數(shù)器已經(jīng)開始計數(shù),當計數(shù)器增加到255(二進制11111111)時,TMR0L計數(shù)溢出,程序跳轉(zhuǎn)并開始執(zhí)行新的中斷程序,說明中斷指令是在溢出之后自動發(fā)出的,如圖2所示,此過程不斷往返重復。
通過軟件仿真,程序的流程、中斷從哪里發(fā)出、計時從哪里開始等關(guān)鍵問題一目了然。而中斷計時是否符合要求,也可以得到驗證。在執(zhí)行中斷的語句部分設(shè)定斷點,然后應(yīng)用Mplab軟件仿真器的stopwatch功能觀察每個中斷周期的具體耗時,可以發(fā)現(xiàn)結(jié)果是105.6ms,與設(shè)計要求的100ms存在較大差距,如圖3所示。造成這一狀況的原因是程序在跳轉(zhuǎn)至中斷語句的過程中還要產(chǎn)生額外延時5.6ms,即14個計數(shù)周期,若不使用軟件仿真,這樣的癥結(jié)所在很難被察覺。排除此干擾的方法是在TMR0計時器的理論初始值6的基礎(chǔ)上加14,將計數(shù)初值設(shè)為20。具體情形如圖3所示。
可以看到,使用軟件仿真后,迅速執(zhí)行的程序內(nèi)部流程變得清晰可見,各步驟的耗時情況也變得量化可查,學習過程由抽象變得具體,理解難度也隨之大大降低,因而學生在課上和課下的學習效率得到了很大的提升。
2 結(jié)語
單片機軟件仿真技術(shù)特別適合初學單片機的本科生,結(jié)合課堂的講授,他們可以在課下沒有單片機的大量時間中利用該技術(shù)熟悉環(huán)境、編制和調(diào)試程序,鞏固所學知識,無形中大大提高了課堂的教學效果和上機操作水平。
當然,軟件仿真只能作為一種輔助教學手段,無法代替實際操作環(huán)節(jié)。只有將軟件仿真和課堂上機實踐有機結(jié)合起來,才能最大限度地利用好現(xiàn)有的教學資源,達到最佳的實驗教學效果[4]。
參考文獻
[1] 姜寧,樊延虎.單片機教學改革與實踐[J].延安大學學報(自然科學版),2011,30(1).
[2] 喬吉新.淺談單片機的教學方法與教學手段[J].中國校外教育,2011,4.
[3] 胡坤.單片機的中斷技術(shù)[J].遼寧師專學報,2003,5(2).
[4]孫書芳,張家海,陳海霞.單片機教學中學生應(yīng)用能力的培養(yǎng)[J].中國電力教育,2011,35.