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