(長江大學計算機科學學院,湖北 荊州434025)
《微機原理及應用》(也叫微機原理與接口技術)課程一直是高等院校電類各專業(yè)、計算機專業(yè)、機械設計制造及自動化等相關工科專業(yè)的必修課程之一。該課程的專業(yè)性和綜合性強、涉及的知識點多[1]。實際教學中,學生普遍反映該課程抽象難懂,不易掌握,再加上相關程序采用匯編語言編寫,更加讓學生產生畏難情緒。多數(shù)學生在學完該課程后,對于課程的核心——接口芯片工作的原理及其在計算機中的實際應用模糊不清,極易造成學用脫節(jié)的情況,更談不上創(chuàng)新設計[2]。為此,筆者提出一種全新的改革思路,即將C語言引入該課程教學中,從實際應用的角度出發(fā)組織教學內容,將教學重點從偏重理論講解轉到偏重實際應用,解決學生在學習過程中出現(xiàn)的理論與實踐相互脫節(jié)的現(xiàn)象。
C語言是一種編譯型程序設計語言,具有程序可讀性好、開發(fā)效率高、移植容易等優(yōu)點,又具備匯編語言的部分功能。幾乎所有版本的C編譯系統(tǒng)都提供了對外部接口電路的端口進行輸入/輸出操作的函數(shù),有些C編譯系統(tǒng)還提供了中斷向量的獲取和重置函數(shù)。如C/C++中的inportb()、outportb()、getvect()和setvect()函數(shù)等(函數(shù)庫dos.h),利用這些函數(shù)可以使CPU與外部設備交換數(shù)據(jù),實現(xiàn)對外部設備的直接控制。另一方面,C語言還提供了與硬件控制聯(lián)系緊密的位運算符,可以實現(xiàn)變量的按位運算和處理。這些函數(shù)和位運算符的存在,使得在微機控制領域匯編語言實現(xiàn)的功能基本都可以用C語言來實現(xiàn)。因此,以C語言為基礎實施 《微機原理及應用》課程的理論教學完全可行?!段C原理及應用》是一門實踐性很強的計算機硬件課程,實驗設備能否與理論教學相適應,在很大程度上影響該課程教學質量。目前已有一些教學儀器廠家生產的微機原理實驗裝置可以實現(xiàn)C語言程序的編譯及下載運行。如華中科技大學教學儀器廠生產的MFID微機實驗平臺、清華大學科教儀器廠生產的TPCUSB實驗箱等。TPC-USB實驗箱采用了USB接口模塊,形成了一套完整的USB接口微機接口實驗系統(tǒng)。該系統(tǒng)適應當前高等院校所開設的所有微機原理實驗,同時也提供了最新接口USB的實驗,使學生不僅能夠接觸常規(guī)接口,同時也有機會接觸新型接口,為學生今后從事微機開發(fā)應用打下基礎[3]。這些設備的研制和生產,為采用C語言實施 《微機原理及應用》課程教學提供了強有力支持。
通過微處理器的編程結構與指令系統(tǒng)的學習,可以讓使學生熟悉微處理器內部寄存器組的構成與應用、理解計算機系統(tǒng)的尋址方式、了解特定微處理器的指令系統(tǒng)及指令的功能和格式等。上述內容主要涉及微處理器及存儲器的硬件結構、寄存器的使用和存儲器尋址等方面的知識。由于C語言并不提供對CPU內部寄存器進行操作的函數(shù),因此,對上述教學內容還不能完全摒棄匯編語言,可以延續(xù)傳統(tǒng)的教學方式,即通過匯編語言的數(shù)據(jù)傳送指令(MOV)實施寄存器和尋址方式的講解,而對于微處理器指令系統(tǒng)的其他指令,則可以完全略去。由于實施微處理器編程結構的教學僅需學生掌握MOV這一條匯編語言指令的格式和用法即可,并不會給學生帶來多少額外負擔。另一方面,由于上述內容在后續(xù)教學內容的實際應用中較少涉及,與編程有關的也只是寄存器組和尋址方式,而采用C語言實施該課程教學時,后續(xù)內容基本不會涉及CPU的內部寄存器組和尋址方式。
接口技術是該課程的教學重點,也是教學難點,涵蓋了該課程的大部分內容,包括8255A、82C54、82C59A、8250等各種常規(guī)接口芯片的工作原理及應用編程。具有信息量大、內容繁雜等特點,而幾乎所有的實際應用都與上述內容相關。通過學習接口技術,可以使學生了解各種常規(guī)接口芯片的工作原理和引腳功能、掌握各芯片的初始化方式和工作特性等。與編程相關的主要是芯片初始化控制字的確定、初始化編程、數(shù)據(jù)的輸入/輸出及運算處理等。利用C語言實施接口技術的教學時,可先介紹C語言中有關端口輸入/輸出函數(shù)及中斷獲取和重置函數(shù)的功能和用法。在此基礎上,再進行各種接口芯片的編程和控制。由于C語言關于端口操作的函數(shù)不涉及微處理器的內部操作,相對于用匯編語言編寫芯片的控制程序要容易得多,且直觀易懂。這樣可以使學生將更多精力放在芯片的功能和實際應用的學習上,既減輕了學生的學習負擔,又可以使學生能更好地理解微處理器對外部器件進行控制的原理及方法。
以接口技術中利用并行接口芯片8255A實現(xiàn)開關量的檢測為例。假定8255A的片選地址為0x100,從端口A讀取開關的狀態(tài),并通過接在端口B和端口C的發(fā)光二極管以不同的狀態(tài)顯示。若確定芯片的初始化控制字為0x90,則采用C語言編寫的控制程序段為:
《微機原理及應用》是一門綜合性強、知識點多、抽象難懂的課程,針對上述情況,將C語言引入其課堂教學,既是對該課程教學方式的重大變革,也是對教師的一種全新挑戰(zhàn),需要教師轉變思想、大膽革新。目前實施該課程改革,需要從2方面加以改進:①配套的實驗設備轉型。目前雖然有幾款實驗儀器可以完成C語言的試驗,但多數(shù)廠家的實驗設備尚不具備該功能,這就需要相關生產商對實驗儀器進行升級換代。②教材更新。就筆者了解,目前國內尚無基于C語言的 《微機原理及應用》教材,針對這一情況,筆者正構思新教材的編寫計劃,目前教材的編寫組織工作正有序進行,擬2012年出版。如教材能獲師生認可,將會從根本上解決 《微機原理及應用》課程教學所面臨的問題,有效減輕學生的學習負擔,提高學習興趣和學習效率,鞏固和提高C語言編程能力,為后續(xù)有關 《單片機》、《ARM》等課程的學習打下良好的基礎。
[1]侯寶生.“微機原理與接口技術”課程教學改革創(chuàng)新探討 [J].計算機教育,2007(2):16-18.
[2]王焱,鄭俊輝,易發(fā)勝.“微機原理與接口技術”課程的案例教學探討 [J].計算機教育,2009(23):136-138.
[3]劉林真.C語言在微機原理與接口技術課程中的應用 [J].福建電腦,2010(11):209-211.