◆武芳 蔣汝根 朱璇
作者:武芳,江蘇建康職業(yè)學院助教,研究方向為單片機與嵌入式微處理器;蔣汝根、朱璇,江蘇建康職業(yè)學院(211800)。
單片機是一種功能強大的芯片,在日常生活中,隨處可見由單片機作為核心器件的電子產品。因此,學習單片機也成為一項技能。如何學好單片機?有兩款軟件是單片機學習者的“必備武器”:Keil 和Proteus。
Keil 是美國Keil Software 公司出品的51 系列兼容單片機C 語言軟件開發(fā)系統(tǒng),它的源文件既可以是C 語言,也可以是匯編語言,但與匯編相比,C 語言在功能、結構性、可讀性、可維護性等方面有明顯的優(yōu)勢,更適合初學者和高職類院校使用。
Proteus 軟件是英國Lab Center Electronics 公司出版的EDA 工具軟件,它不僅具有其他EDA 工具軟件的仿真功能,還滿足從原理圖布圖、代碼調試到單片機與外圍電路的協同仿真。Proteus 簡單易學,對單片機初學者來說是一款極好的仿真軟件,也適用于高校的單片機教學。
如何將兩者的功能發(fā)揮到極致呢?本文以在教學中遇到的一個實例來介紹Keil 和Proteus 聯調給單片機學習帶來的便捷。
實驗內容利用AT89C51 單片機和DAC0832 完成一個正弦波發(fā)生器,通過虛擬示波器來檢測產生的正弦波信號。一初學者的部分實例源程序:
仿真結果希望得到一個連續(xù)的正弦波形如圖1(a)所示,而仿真運行后虛擬示波器顯示如圖1(b)所示。
處理方法:Keil 和Proteus 聯調對于C 語言基礎不太好的初學者來說,很難找出問題的根源所在,這時候就可以通過Keil 和Proteus 的聯調來解決。兩種軟件的安裝方法和兩軟件動態(tài)鏈接庫的關聯在這里就不再贅述,具體的處理方法如下。
1)設置:在Keil 工程中點擊“Project”,打開“Options for target‘Target 1’”對話框,選中“Debug”,設置如圖2所示。
點擊后面的settings,本機聯調:host 為172.0.0.1,port 為8000。
Proteus 的設置:運行Proteus 的ISIS,點擊菜單“DEBUG”,使“use remote debugger monitor”選中。
2)Keil 和Proteus 聯調。如圖3所示,點擊Keil 中的調試按鈕1;分別按2 ~5 設置,打開觀察窗口和端口,設置好要監(jiān)測的變量;根據需要點擊按鈕6 中的調試圖標。開始Proteus 和Keil 的聯調。
觀察watch 中的i 值,發(fā)現i 變化到127 后,再加1并沒有變化為128,而是變化到了-128!找到問題癥結!將i 的類型修改變unsigned char 之后,仿真結果正確,如圖1(a)所示。
問題解析在C 中,默認的基礎數據類型均為signed[2]。在內存中,char 與unsigned char 存儲空間相同,為一個字節(jié);兩者的區(qū)別是:char 的最高位為符號位,表示范圍為-128 ~127;unsigned char 無符號位,表示范圍為0 ~255[3]。在實際使用過程中,在普通的賦值、讀寫文件和網絡字節(jié)流沒有區(qū)別,但顯示會出現不一樣的情況。在表示字節(jié)時,建議使用unsigned char 類型。
在單片機學習過程中,往往會出現程序運行的結果與期望的不同,而一時又找不到問題癥結所在,在出現問題的關鍵時刻,運用Proteus 和Keil 的聯調可以輕松找到答案。本文實例不僅讓初學者了解了程序的運行過程,也用一種更直觀的方式向初學者展示了不同數據類型的取值范圍和對程序的影響,加深了初學者對數據類型的認識,提高了對單片機的學習興趣。這種方式的學習比單純的理論講解更有效,相信初學者在今后不會再犯同樣的錯誤。
[1]陳貴銀.單片機原理及接口技術[M].北京:電子工業(yè)出版社,2011:234.
[2]劉建清.從零開始學單片機C 語言[M].北京:國防工業(yè)出版社,2006:79.
[3]周立功.Keil C51 使用幫助[EB/OL].[2003-08-17].www.eTuni.com.