?
基于單片機C的教學探究
近幾年,隨著單片機和Keil C等開發工具的發展,單片機的教學原來經常使用的匯編語言,慢慢被高級C語言所代替,因為C語言具有很強的功能性、結構性、可移植性,并且接近自然語言,可讀性好,程序開發可以擺脫硬件不必要的接觸,調試維護更容易,尤其是在Proteus仿真軟件與KeilC51軟件平臺的聯調下,學生學起來更加得心應手。
雖然是單片機C語言,但是與標準C語言的很多用法都相同,而且對初學者來說用VC調試程序比用Keil C51軟件要方便得多,要打好C語言的基礎,通常要做到以下幾點:
1.1熟練掌握數據類型的定義及使用。尤其是整型數據、字符型數據、整型數組、字符型數組。在單片機C語言中整型、字符型變量的指針等用的最多,并且在夠用的情況下,盡可能用 unsinged char,這種類型代碼生成時間最短,程序生成代碼時間越短運行速度越快。
1.2靈活熟練掌握順序結構、循環結構、選擇結構。掌握三結構的前提是能熟練畫出流程圖。在單片機C語言中,不精確延時,常用循環,選擇結構中的if語句、if else語句、switch語句的也很多,所以要靈活掌握。
1.3靈活掌握函數調用。在單片機C語言中,函數調用可以使主函數看起來簡單明了,可讀性強,所以函數原型、函數值的返回一定要掌握扎實。
1.4學好C語言程序設計。要多看題,多做題,尤其初學者一定要多看別人寫的好程序,再舉一反三練習,爭取用最優的算法寫出程序。
2.1C51數據類型及存儲。增加了“bit”“sbit”位類型和特殊功能寄存器類型Sfr和Sfr16,“bit”是對于任意位類型變量的定義,“sbit”是對特殊寄存器類型位變量的定義。Sfr定義8位C51中所有寄存器,Sfr16定義16位的特殊功能寄存器。
2.2C51定義了變量的存儲區。如data,bdata,idata,pdata,xdata,code區域,可以根據實際情況選擇某一存儲區,缺省時變量的存儲區決定于程序所選取的編譯模式,在小模式下缺省存儲區為data區域。
2.3C51的輸入輸出。在標準C語言中有專門的輸入、輸出函數scanf,printf,而單片機C51中這兩個函數對應的是串行口的輸入、輸出,并不是鍵盤的輸入和顯示器的輸出。
2.4C51函數定義。除了中斷函數外,其他函數定義、調用與標準C函數相同。中斷函數既不傳遞參數,也不接收返回值,要明確中斷源,寫對中斷號。
單片機C語言程序開發可以擺脫硬件不必要的接觸,但是是在硬件電路的基礎上編程,因此要具備一定的硬件基礎知識。
3.1掌握硬件正常工作的基本參數。這不需要學生記住,只要做到會查找即可。例如單片機的輸入輸出口P0、P1、P2、P3最大輸出電流是多少,我們在P0^0口接一個電流是10 mA的LED燈行嗎?接一個220 V、50 Ω的白熾燈能亮嗎?前者可以,后者肯定不行,因為電流不能滿足要求,如果是自己設計電路,元器件要求說明書里都有,或上網查找。硬件電路是在每個器件正常工作的基礎上編程的。3.2硬件要會用。其實編程時用到的硬件知識并不是很多,但編程時用到哪些硬件的寄存器一定不要弄混。例如中斷,用的哪個中斷,中斷號是多少,用到哪些寄存器的哪幾位,除了在書上查看之外,要把中斷的結構圖熟記于心,不要死記硬背,要通過多練習掌握。同樣像定時器、串口、AD口等都需要這樣練習,掌握編程時用到哪些寄存器的哪些位即可。
通過Proteus仿真軟件把硬件電路畫好,硬件保證在正常的工作參數下工作。
4.1熟練掌握Keil C51軟件及與Proteus仿真軟件的聯調。硬件知識會了,C語言也沒有問題了,我們通過Keil C51軟件平臺就可寫單片機C語言了。熟練掌握工程新建,添加C文件,程序調試,沒問題后再把生成的HEX文件裝載到Proteus畫好的電路中的單片機中仿真。若沒有問題所編程序的結果就展現在我們眼前了。
4.2鼓勵學生自己焊接電路板。雖然Keil C51軟件與Proteus軟件聯調能仿真,但畢竟與現實不能完全一致,在仿真中不會出現的問題,實際當中可能會出現,例如燈兩端電壓太高,實際燒毀了,而仿真中可能還是亮的。
總之,學好單片機C語言,不僅要學好標準C語言的知識,還要學好硬件知識,而且要在熟練掌握VC、Keil C51軟件與Proteus軟件的基礎上,學好C語言的知識和硬件知識。
061001河北滄州師范學院機電工程系劉秀芬