單片機(jī)實(shí)驗(yàn)教學(xué)仿真軟件設(shè)計(jì)
摘要:主要討論以微型計(jì)算機(jī)為操作平臺(tái)、基于Widnows操作系統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)仿真軟件的設(shè)計(jì)。實(shí)現(xiàn)對(duì)單片機(jī)教學(xué)實(shí)驗(yàn)的全軟件仿真。針對(duì)自主研發(fā)的單片機(jī)實(shí)驗(yàn)教學(xué)仿真軟件的特點(diǎn)和實(shí)際實(shí)驗(yàn)教學(xué)過(guò)程面臨的問(wèn)題,詳細(xì)闡述軟件的系統(tǒng)需求分析、建模及各子系統(tǒng)的詳細(xì)設(shè)計(jì)過(guò)程。在此重點(diǎn)論述了仿真編譯、仿真運(yùn)行和仿真電路子系統(tǒng)的設(shè)計(jì)思路、相關(guān)算法的設(shè)計(jì)及程序設(shè)計(jì)與實(shí)現(xiàn)。
關(guān)鍵詞:仿真軟件;虛擬實(shí)驗(yàn);實(shí)驗(yàn)教學(xué);仿真編譯
0 引言
目前,各高校順應(yīng)發(fā)展設(shè)置的單片機(jī)課程是機(jī)電、自動(dòng)化等電類專業(yè)的一門(mén)重要課程,是一門(mén)多基礎(chǔ)、多理論的實(shí)踐性課程。在高職單片機(jī)教學(xué)過(guò)程中理論教學(xué)的發(fā)展已經(jīng)較為完善,而實(shí)驗(yàn)教學(xué)由于受到經(jīng)費(fèi)的限制,提供的實(shí)驗(yàn)設(shè)備有限,不能滿足學(xué)生的要求。
鑒于以上情況,開(kāi)發(fā)單片機(jī)教學(xué)實(shí)驗(yàn)的全軟件仿真??梢詼p少實(shí)驗(yàn)經(jīng)費(fèi)的開(kāi)銷,又便于增添實(shí)驗(yàn)內(nèi)容,同時(shí)也可借用投影儀更加清晰地為學(xué)生做演示實(shí)驗(yàn),非常有利于學(xué)生加深對(duì)所學(xué)理論知識(shí)的感性認(rèn)識(shí)、掌握基本實(shí)驗(yàn)知識(shí)、方法、技能。對(duì)于有危險(xiǎn)性的實(shí)驗(yàn),虛擬實(shí)驗(yàn)平臺(tái)更具有優(yōu)勢(shì)。
1 單片機(jī)實(shí)驗(yàn)教學(xué)軟件的系統(tǒng)組成
由于單片機(jī)實(shí)驗(yàn)教學(xué)仿真軟件系統(tǒng)較為復(fù)雜固將其設(shè)計(jì)為如干個(gè)子系統(tǒng),對(duì)每個(gè)子系統(tǒng)建模和設(shè)計(jì),最后將它們連接起來(lái)構(gòu)成整個(gè)系統(tǒng)模型。圖1說(shuō)明了系統(tǒng)的組成和各子系統(tǒng)關(guān)系。
考慮到單片機(jī)實(shí)驗(yàn)教學(xué)仿真軟件的具體情況,同時(shí)使用結(jié)構(gòu)化程序設(shè)計(jì)與面向?qū)ο笤O(shè)計(jì)2種方法,對(duì)于單片機(jī)實(shí)驗(yàn)教學(xué)仿真軟件系統(tǒng)的功能模塊采用結(jié)構(gòu)化方法來(lái)設(shè)計(jì)。
采用面向?qū)ο蟮姆椒ㄔO(shè)計(jì)軟件中的用戶界面、各個(gè)窗口、菜單、仿真元件等,最后,將各個(gè)子系統(tǒng)結(jié)合在一起,就構(gòu)成了單片機(jī)實(shí)驗(yàn)教學(xué)仿真軟件。
下面對(duì)主要功能模塊進(jìn)行論述。
2 仿真編譯子系統(tǒng)的設(shè)計(jì)
實(shí)際的編譯是利用編譯程序從源程序產(chǎn)生目標(biāo)程序的過(guò)程。該過(guò)程分為5個(gè)階段:詞法分析,語(yǔ)法分析,語(yǔ)義檢查,中間代碼生成,代碼優(yōu)化,目標(biāo)代碼生成。主要是進(jìn)行詞法分析和語(yǔ)法分析,又稱為源程序分析??紤]本軟件的實(shí)際情況,仿真編譯子系統(tǒng)只進(jìn)行詞法分析和語(yǔ)法分析,發(fā)現(xiàn)有語(yǔ)法錯(cuò)誤,給出提示信息,仿真編譯成功后將仿真編譯結(jié)果保存。
(1)詞法分析模塊調(diào)用源程序編輯子系統(tǒng)產(chǎn)生的用戶源程序文件,逐行對(duì)文件中用戶輸入的源程序按照單片機(jī)指令系統(tǒng)規(guī)定的符號(hào),如:(“Rn”、“#”、“/”、“@”、“$”、“:”及7種不同尋址方式表示的數(shù)據(jù)或地址、指令轉(zhuǎn)移的偏移量、工作寄存器和特殊功能寄存器的表示符號(hào)、44個(gè)指令助記符、7個(gè)偽指令、用戶定義的標(biāo)號(hào)和符號(hào)常量、回車(chē)符)。進(jìn)行詞法分析,判斷用戶源程序中使用的基本符號(hào)是否正確,如果不是合法的符號(hào)則將錯(cuò)誤所在的位置及錯(cuò)誤的類型反饋給用戶,終止仿真編譯等待用戶修改后再一次運(yùn)行仿真編譯;如果是合法的符號(hào)則將每個(gè)符號(hào)以及符號(hào)的類型保存在string類型數(shù)組cifa[]和int類型數(shù)組type[]中供語(yǔ)法分析程序模塊使用。
(2)語(yǔ)法分析模塊首先定義了51系列單片機(jī)所有指令和偽指令的檢查函數(shù)。然后在詞法分析的基礎(chǔ)上,從數(shù)組cifa[]和數(shù)組type[]中取出用戶輸入的字符根據(jù)單片機(jī)指令的語(yǔ)法格式,字符的前后關(guān)系逐一進(jìn)行處理,并調(diào)用指令和偽指令的檢查函數(shù)判斷:用戶輸入的源程序是否符合語(yǔ)法規(guī)則;標(biāo)號(hào)和符號(hào)常量的定義與使用是否正確;偽指令的使用是否正確;程序是否以END結(jié)束等。如果存在錯(cuò)誤則將錯(cuò)誤所在的位置及錯(cuò)誤的類型反饋給用戶,終止仿真編譯等待用戶修改后再一次進(jìn)行仿真編譯;如果是正確的指令則將指令進(jìn)行處理(對(duì)指令地址、指令I(lǐng)D、指令字節(jié)數(shù)、指令周期、操作數(shù)類型、操作數(shù)的值等進(jìn)行處理)后存入預(yù)先定義的全局?jǐn)?shù)組對(duì)象command中。仿真運(yùn)行時(shí)由仿真運(yùn)行子系統(tǒng)調(diào)用。
評(píng)論