單片機(jī)軟件仿真實(shí)驗(yàn)指導(dǎo)書_第1頁
單片機(jī)軟件仿真實(shí)驗(yàn)指導(dǎo)書_第2頁
單片機(jī)軟件仿真實(shí)驗(yàn)指導(dǎo)書_第3頁
單片機(jī)軟件仿真實(shí)驗(yàn)指導(dǎo)書_第4頁
單片機(jī)軟件仿真實(shí)驗(yàn)指導(dǎo)書_第5頁
已閱讀5頁,還剩85頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

PAGEPAGE86編著蔡駿安徽電子信息職業(yè)技術(shù)學(xué)院二00七年九月前言本實(shí)驗(yàn)指導(dǎo)書結(jié)合單片機(jī)實(shí)驗(yàn)教學(xué)和高職生的學(xué)習(xí)特點(diǎn),引入較為先進(jìn)的單片機(jī)與嵌入式系統(tǒng)仿真與開發(fā)平臺(tái)——Proteus仿真軟件,對傳統(tǒng)的單片機(jī)實(shí)驗(yàn)方法和實(shí)驗(yàn)內(nèi)容進(jìn)行充實(shí)和完善。全書共分5章,各章內(nèi)容的編排順序基本上與理論課教材相近。第1章介紹Proteus仿真軟件,第2、3章分別介紹單片機(jī)硬件、指令系統(tǒng)和程序設(shè)計(jì),第4、5章分別介紹單片機(jī)定時(shí)器/計(jì)數(shù)器、中斷技術(shù)和系統(tǒng)擴(kuò)展。各項(xiàng)實(shí)驗(yàn)提供的參考程序均通過ProteusV7.1版調(diào)試。在本書編寫過程中,主要突出以下幾個(gè)特點(diǎn):1.以培養(yǎng)應(yīng)用技術(shù)性人才為目標(biāo),突出基本技能訓(xùn)練,加強(qiáng)對指令系統(tǒng)的理解和輸入輸出口控制應(yīng)用的訓(xùn)練,培養(yǎng)學(xué)生的編程能力。2.考慮到各系電類及相關(guān)專業(yè)對單片機(jī)課程的要求不同,各專業(yè)學(xué)生的基礎(chǔ)不同,每章安排的實(shí)驗(yàn)數(shù)量較多,難易程度也有所不同,各專業(yè)可以根據(jù)各自的專業(yè)要求和學(xué)生的學(xué)習(xí)能力選擇實(shí)驗(yàn)項(xiàng)目。3.在各章節(jié)的參考程序中,都給出了與匯編語言對應(yīng)的機(jī)器碼,使學(xué)生對機(jī)器碼有一定的了解。4.實(shí)驗(yàn)內(nèi)容的編排順序基本上與理論課教學(xué)一致,努力做到理論與實(shí)踐相結(jié)合,互相補(bǔ)充。單片機(jī)硬件結(jié)構(gòu)學(xué)習(xí)過程中即可安排實(shí)驗(yàn)課程。由于編者水平有限,書中難免會(huì)有錯(cuò)誤和不妥之處,懇請廣大讀者給予批評指正。蔡駿2007年9月目錄第1章單片機(jī)仿真軟件概述…………………11.1Proteus軟件仿真系統(tǒng)的構(gòu)成與功能……………………11.2Proteus軟件仿真系統(tǒng)的使用方法………4第2章單片機(jī)硬件和指令系統(tǒng)實(shí)驗(yàn)………132.1數(shù)據(jù)存儲(chǔ)器實(shí)驗(yàn)………………………132.2數(shù)據(jù)傳送指令實(shí)驗(yàn)……………………192.3算術(shù)運(yùn)算指令實(shí)驗(yàn)……………………212.4邏輯運(yùn)算指令實(shí)驗(yàn)……………………232.5控制轉(zhuǎn)移指令實(shí)驗(yàn)……………………252.6位操作指令實(shí)驗(yàn)………………………28第3章單片機(jī)程序設(shè)計(jì)實(shí)驗(yàn)………………303.1流水燈實(shí)驗(yàn)……………303.2步進(jìn)電機(jī)實(shí)驗(yàn)…………343.3汽車轉(zhuǎn)向信號燈控制實(shí)驗(yàn)……………383.4步進(jìn)電機(jī)控制實(shí)驗(yàn)……………………41第4章單片機(jī)定時(shí)與中斷實(shí)驗(yàn)……………474.1外部中斷實(shí)驗(yàn)…………474.2交通信號燈控制實(shí)驗(yàn)…………………504.3廣告燈實(shí)驗(yàn)……………554.4脈沖計(jì)數(shù)實(shí)驗(yàn)…………584.5電子音樂實(shí)驗(yàn)…………614.6直流電動(dòng)機(jī)控制實(shí)驗(yàn)…………………66第5章單片機(jī)系統(tǒng)擴(kuò)展實(shí)驗(yàn)…………………705.1數(shù)據(jù)存儲(chǔ)器擴(kuò)展實(shí)驗(yàn)…………………705.2簡單I/O口擴(kuò)展實(shí)驗(yàn)…………………735.38255擴(kuò)展I/O口實(shí)驗(yàn)…………………76附錄一MCS-51指令表…………80第1章單片機(jī)仿真軟件概述Proteus是英國LabcenterElectronics公司開發(fā)的多功能EDA軟件。Proteus不僅是模擬電路、數(shù)字電路、模/數(shù)混合電路的設(shè)計(jì)與仿真平臺(tái),也是目前較先進(jìn)的單片機(jī)和嵌入式系統(tǒng)的設(shè)計(jì)與仿真平臺(tái)。它實(shí)現(xiàn)了在計(jì)算機(jī)上完成從原理圖與電路設(shè)計(jì)、電路分析與仿真、單片機(jī)代碼級調(diào)試與仿真、系統(tǒng)測試與功能驗(yàn)證到形成PCB的完整的電子設(shè)計(jì)、研發(fā)過程。由于Proteus豐富的元器件模型、對處理器的支持、多樣的虛擬儀器、強(qiáng)大的圖表分析功能和與第三方集成開發(fā)環(huán)境的無縫集成,已被公認(rèn)為電類教學(xué)與實(shí)驗(yàn)的巨大資源,得到越來越多的高校的認(rèn)同,并在教學(xué)實(shí)踐中取得了明顯效果。1.1Proteus軟件仿真系統(tǒng)的構(gòu)成與功能1.1.1PProteus組合了高級原理布圖、混合模式SPICE仿真、PCB設(shè)計(jì)以及自動(dòng)布線來實(shí)現(xiàn)一個(gè)完整的電子設(shè)計(jì)系統(tǒng)。Proteus包含了VSM(VirturalSystemModelling虛擬系統(tǒng)模型)技術(shù),用戶可以對基于微控制器的設(shè)計(jì)連同所有的周圍電子器件一起仿真。Proteus包括ProteusVSM(Proteus虛擬系統(tǒng)模型)和ProteusPCBDesign(Proteus印制電路板設(shè)計(jì))兩大部分。ProteusVSM包括智能原理圖輸入系統(tǒng)ISIS(IntelligentSchematicInputSystem)、帶擴(kuò)展的ProSPICE(SimulationProgramWithIntegratedCircuitEmphasis)混合模型仿真器、動(dòng)態(tài)器件庫、高級圖表仿真ASF(AdvancedSimulationFeature)和微控制器虛擬系統(tǒng)仿真模型VSM。ProteusPCBDesign包括高級布線編輯軟件ARES(AdvancedRountingandEditingSoftware)、智能原理圖輸入系統(tǒng)ISIS和高級圖表仿真ASF。該軟件運(yùn)行于Windows操作系統(tǒng)上,主要特點(diǎn)是:實(shí)現(xiàn)了單片機(jī)仿真和SPICE電路仿真相結(jié)合。具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS232動(dòng)態(tài)仿真、I2C支持主流單片機(jī)系統(tǒng)的仿真。目前支持的單片機(jī)類型有:8051/52系列、ARM7(LPC21xx)、AVR系列、PIC10/12/16/18系列、HC11系列以及多種外圍芯片。提供軟件調(diào)試功能。在硬件仿真系統(tǒng)中具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各個(gè)變量、寄存器等的當(dāng)前狀態(tài)。支持第三方的軟件編譯和調(diào)試環(huán)境,如KeilC51uVision2、MPLAB、IAR等軟件。具有強(qiáng)大的原理圖繪制功能??傊?,該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大。1.1.2P本實(shí)驗(yàn)指導(dǎo)書主要涉及與單片機(jī)課程有關(guān)的軟件設(shè)計(jì)與仿真,故只敘述ProteusVSM的功能。ProteusVSM組合了混合模式的ProSPICE電路仿真、動(dòng)畫器件和微控制器模型,實(shí)現(xiàn)了完整的基于微控制器設(shè)計(jì)的協(xié)同仿真。使在物理原型出來之前對這類設(shè)計(jì)的開發(fā)和測試成為可能。ProteusVSM的各組成部分的功能簡介如下:一、智能原理圖輸入系統(tǒng)ISISISIS是Proteus系統(tǒng)的中心,它遠(yuǎn)不僅是一個(gè)圖表庫。它既是智能原理圖設(shè)計(jì)、繪制和編輯的環(huán)境,又是數(shù)字電路、模擬電路和數(shù)/?;旌想娐吩O(shè)計(jì)與仿真的環(huán)境,更是單片機(jī)與外圍設(shè)備的設(shè)計(jì)、仿真和協(xié)同仿真的環(huán)境。ISIS組合有很多易用的功能強(qiáng)大的編輯工具,是單片機(jī)系統(tǒng)的設(shè)計(jì)與仿真的平臺(tái)。其主要特點(diǎn)如下:生成出版質(zhì)量的原理圖。風(fēng)格模板允許提供庫部件的用戶化。鼠標(biāo)驅(qū)動(dòng)和內(nèi)容關(guān)聯(lián)的用戶界面。自動(dòng)走線,以及接點(diǎn)的布置和切除。參數(shù)表示子電路元件值的層次設(shè)計(jì)。包括子電路端口以及總線引腳的總線支持。挑選元件或建立新庫元件可預(yù)覽PCB封裝。完全體現(xiàn)多元器件的同性和異性。包括相應(yīng)對話框用戶化的元件特性的精細(xì)管理。超過8000元件的大型元件庫,完全適用于仿真模型。網(wǎng)表格式:LabcenterSDF、SPICE、Tango、Boardmaker、EEDeginer、Futurenet等。電氣規(guī)則檢查以及元件報(bào)告清單??刹噬騿紊敵龅絎indows打印設(shè)備。圖形輸出格式:WMF、BNP、DXF、EPS、HPGL。二、ProSPICE混合模型仿真器ProSPICE是結(jié)合ISIS原理圖設(shè)計(jì)環(huán)境使用的混合型電路仿真器。它基于工業(yè)標(biāo)準(zhǔn)SPICE3F5(美國加州Berkeley大學(xué)開發(fā))的模擬內(nèi)核,加上混合型仿真的擴(kuò)展以及交互電路動(dòng)態(tài),提供了開發(fā)和測試設(shè)計(jì)的強(qiáng)大交互式環(huán)境。ProSPICE使用了Berkeley的源代碼,包含了最新的整合技術(shù)以及原型,保證在數(shù)字結(jié)果方面和生產(chǎn)商SPICE模型的最好兼容性。三、微控制器虛擬系統(tǒng)仿真模型VSMProteus可以仿真51系列、AVR、PIC、ARM等常用的MCU及其外圍電路。可仿真的51系列單片機(jī)模型如下:通用:80C31、80C32、80C51、80C52、80C54、80C58。Atmel:AT89C51、AT89C52、AT89C55;AT89C51RB2、AT89C51RC2、AT89C51RD2(X2和SPI沒有模型)Philips:P87C51FX、P87C51RX+(如FA、FB、FC、RA+、RB+、RC+、RD等系列)。通過51系列單片機(jī)模型可完成以下仿真:全部8051指令系統(tǒng)。所有I/O操作。所有片上外設(shè)的各種操作模式。所有中斷模式。內(nèi)部產(chǎn)生處理器時(shí)鐘以優(yōu)化經(jīng)濟(jì)結(jié)構(gòu)性能,I/O和其它事件定時(shí)器精確至一個(gè)時(shí)鐘相位。程序和外部數(shù)據(jù)存儲(chǔ)器能被仿真為內(nèi)部模型,以提高吞吐量,或仿真為外部模型以驗(yàn)證硬件設(shè)計(jì)。提供內(nèi)部一致性代碼檢查功能。完整集成ISIS的源碼級調(diào)試和源碼管理系統(tǒng)。支持集成Keil等第三方編譯器和調(diào)試器。支持的編譯器:KeilC51/μVision2、MPLAB和IAR。四、動(dòng)態(tài)器件庫VSM包含超過8000種元器件模型:標(biāo)準(zhǔn)電子元件:電阻、電容、二極管、晶體管、晶閘管、光耦合器、運(yùn)放、555定時(shí)器等。74系列TTL和4000系列CMOS器件。存儲(chǔ)器:ROM、RAM、EEPROM、I2C器件等微控制器支持的器件:如I/O口、USART等。ProteusVSM除上述庫外,同樣包含大量復(fù)雜的外設(shè)模型,如表1-1所示。表1-1ProteusVSM高級外設(shè)模型虛擬儀器和分析工具交互式虛擬儀器雙通道示波器24通道邏輯分析儀計(jì)數(shù)器/計(jì)時(shí)器RS232終端交流電壓表/直流電壓表交流電流表/直流電流表規(guī)程分析儀雙模式(主/從)I2C規(guī)程分析儀雙模式(主/從)SPI規(guī)程分析儀交互式電路激勵(lì)工具模擬信號發(fā)生器-可輸出方波、鋸齒波、三角波、正弦波信號數(shù)字圖形發(fā)生器-支持1K的標(biāo)準(zhǔn)8-bit數(shù)據(jù)流光電顯示模型和驅(qū)動(dòng)模型數(shù)字式LCD模型、圖形LCD模型、LED模型、七段顯示模型、光電驅(qū)動(dòng)模型、光耦模型電機(jī)模型和控制器電機(jī)模型(直流、步進(jìn)和伺服電機(jī))、電機(jī)控制器模型存儲(chǔ)器模型I2CEPROM存儲(chǔ)器模型、靜態(tài)存儲(chǔ)器模型、永久性EPROM溫度控制模型溫度計(jì)和溫度自動(dòng)調(diào)節(jié)器模型、溫度傳感器模型、熱電偶模型計(jì)時(shí)模型實(shí)時(shí)時(shí)鐘模型I2C/SPII2C外設(shè)、SPI外設(shè)、規(guī)程分析儀一線規(guī)程模型一線EEPROM模型、一線溫度計(jì)模型、一線開關(guān)模型、一線按鈕模型RS-232/RS-485/RS-422規(guī)程模型RS232終端模型、Maxim外設(shè)模型ADC/DAC轉(zhuǎn)換模型模/數(shù)轉(zhuǎn)換模型、數(shù)/模轉(zhuǎn)換模型電源管理模型正電源標(biāo)準(zhǔn)儀、負(fù)電源標(biāo)準(zhǔn)儀、混合電源標(biāo)準(zhǔn)儀脈寬控制模型全橋脈寬放大器、半橋脈寬放大器、脈寬調(diào)節(jié)器拉普拉斯轉(zhuǎn)換模型操作模型、一階模型、二階模型、過程控制、線性模型、非線性模型熱離子管模型二極管模型、五極真空管模型、四極管模型、三極管模型變換器模型壓力傳感器模型五、高級圖表仿真ASF基于圖形化的仿真是傳統(tǒng)的SPICE仿真,包括以下特點(diǎn):標(biāo)準(zhǔn)SPICE分析包括:模擬瞬態(tài)、數(shù)字瞬態(tài)、混合模式瞬態(tài)、頻率、傅里葉、噪聲、失真、轉(zhuǎn)換曲線、直流特性、交流特性和工作點(diǎn)。圖形顯示模擬、數(shù)字和總線數(shù)據(jù),頻譜顯示增益和相位。音頻分析可形成波形或在聲卡上播放。交互仿真后,捕捉結(jié)果到圖形上,并進(jìn)行交互的分析。數(shù)字信號一致性分析,后面會(huì)詳細(xì)介紹該工具。探針?biāo)^測點(diǎn)的電壓或電流可以用數(shù)字標(biāo)示出來。使用圖形的圖標(biāo)可以精確度量。以CSV格式將仿真結(jié)果輸出給其它軟件,如EXECL。Proteus做為單片機(jī)與嵌入式系統(tǒng)仿真與開發(fā)平臺(tái),支持外圍數(shù)電/模電與微控制器的協(xié)同仿真,真正實(shí)現(xiàn)了虛擬物理原型功能。在目標(biāo)板還沒有投產(chǎn)前,就可以對設(shè)計(jì)的硬件系統(tǒng)的功能、合理性和性能指標(biāo)進(jìn)行充分調(diào)整,并可以在沒有物理目標(biāo)板的情況下,進(jìn)行相應(yīng)軟件的開發(fā)和調(diào)試,進(jìn)行完全的虛擬開發(fā),明顯提高企業(yè)的開發(fā)效率,降低開發(fā)風(fēng)險(xiǎn)。無論是51系列、AVR、還是PIC系列,他們各有各的特點(diǎn),學(xué)習(xí)者也是逐年增加,但是在學(xué)習(xí)開發(fā)過程中,我們往往在確定方案后做試驗(yàn)的開支比較大,尤其是對于一些學(xué)生或者初學(xué)者這就可能成為他們學(xué)習(xí)的障礙。使用Proteus軟件可大大節(jié)省時(shí)間和開發(fā)費(fèi),在校學(xué)生只要配備一臺(tái)電腦就可以在宿舍用Proteus構(gòu)建成單片機(jī)與嵌入式系統(tǒng)仿真與設(shè)計(jì)實(shí)驗(yàn)室,同時(shí)也是數(shù)電/模電仿真實(shí)驗(yàn)室。1.2Proteus軟件仿真系統(tǒng)的使用方法單片機(jī)的軟件設(shè)計(jì)與仿真主要在智能原理圖輸入系統(tǒng)ISIS中進(jìn)行,本書只介紹ISIS的使用,并以Proteus7.1SP2Professional(漢化版)版本為平臺(tái)。雙擊桌面上的ISIS7Professional圖標(biāo)或者單擊屏幕左下方的“開始”→“程序”→“Proteus7Professional”→“ISIS7Professional”,進(jìn)入ProteusISIS集成環(huán)境,如圖1-1所示。菜單欄菜單欄標(biāo)題欄命令工具欄狀態(tài)欄仿真工具欄編輯區(qū)器件選擇按鈕對象選擇器窗口預(yù)覽窗口方向工具欄模式選擇工具欄庫管理按鈕標(biāo)簽圖1-1ISIS窗口1.2.1ISIS窗口簡介一、菜單欄菜單欄中的每項(xiàng)都有下一級菜單,許多命令左方的圖標(biāo)表明該命令在工具欄中有相應(yīng)的按鈕,有部分命令的右方標(biāo)有該命令的快捷鍵。二、編輯區(qū)編輯區(qū)用來繪制原理圖。藍(lán)色方框內(nèi)為可編輯區(qū),元件要放到可編輯區(qū)的里面。這個(gè)窗口沒有滾動(dòng)條,可用預(yù)覽窗口來改變原理圖的可視范圍。三、工具欄工具欄分為命令工具欄、模式選擇工具欄、方向工具欄和仿真工具欄四類。許多操作既可通過菜單欄有可通過工具欄來執(zhí)行,一般來說使用工具欄要方便快捷。常用命令的名稱和功能說明如下:1、命令工具欄文件操作按鈕新建設(shè)計(jì)――在默認(rèn)的模板上新建一個(gè)設(shè)計(jì)文件。加載設(shè)計(jì)――裝載一個(gè)新的設(shè)計(jì)文件。保存設(shè)計(jì)――保存當(dāng)前設(shè)計(jì)文件。導(dǎo)入――將一個(gè)局部文件導(dǎo)入ISIS中。導(dǎo)出――將當(dāng)前對象導(dǎo)出為一個(gè)局部文件。打印――打印當(dāng)前設(shè)計(jì)文件。設(shè)置區(qū)域――打印選中的區(qū)域。顯示操作按鈕刷新屏幕網(wǎng)格――顯示/不顯示網(wǎng)格點(diǎn)。原點(diǎn)――顯示/不顯示原點(diǎn)。平移――使可編輯區(qū)充滿整個(gè)編輯區(qū)。放大――放大可編輯區(qū),也可通過中鍵放大??s小――縮小可編輯區(qū),也可通過中鍵放大。全部顯示――使可編輯區(qū)充滿整個(gè)編輯區(qū)。放大到區(qū)域――放大選中的區(qū)域充滿整個(gè)編輯區(qū)。編輯操作按鈕撤銷――撤銷最后的操作。重做――恢復(fù)最后的操作。剪切――剪切選中的對象。復(fù)制――復(fù)制選中的對象到剪貼板。粘貼――從剪貼板粘貼。塊復(fù)制――復(fù)制選中的塊對象到剪貼板。塊移動(dòng)――移動(dòng)選中的塊對象。塊旋轉(zhuǎn)――旋轉(zhuǎn)選中的塊對象。塊刪除――刪除選中的塊對象。選擇元件/符號――從元器件庫中選取元件。制作器件――將原理圖符號封裝成元件。器件封裝工具――定義PCB封裝。分解――打散選中的元件成原始組件。。設(shè)計(jì)操作按鈕實(shí)時(shí)Snap(捕捉)搜索并標(biāo)記屬性分配工具設(shè)計(jì)管理器添加一張圖紙移除一張圖紙電氣規(guī)則檢查網(wǎng)表到AREA(2)模式選擇工具欄主模式選擇按鈕用于即時(shí)編輯元件參數(shù)(先單擊該按鈕再單擊要修改的元件)元件――選擇元器件(默認(rèn)選擇)。點(diǎn)――放置連接點(diǎn)(電線的交點(diǎn))。網(wǎng)路標(biāo)號――放置電線標(biāo)簽(總線標(biāo)記時(shí)用)。文本――放置文本??偩€――用于繪制總線。子電路――用于放置子電路。工具箱終端――有VCC、地、輸出、輸入等接口終端。器件引腳――用于繪制各種引腳。仿真圖表――用于各種分析(如Frequency、Analogue)。錄音機(jī)信號發(fā)生器電壓探針――圖表仿真分析時(shí)用。電流探針――圖表仿真分析時(shí)用。虛擬儀表――有示波器、邏輯分析儀等。2D繪圖按鈕畫各種直線畫各種方框畫各種圓畫各種圓弧畫各種多邊形畫各種文本畫符號畫原點(diǎn)(3)方向工具欄右旋轉(zhuǎn):旋轉(zhuǎn)角度只能是90的整數(shù)倍。水平翻轉(zhuǎn):完成水平翻轉(zhuǎn)。左旋轉(zhuǎn):旋轉(zhuǎn)角度只能是90的整數(shù)倍。垂直翻轉(zhuǎn):完成垂直翻轉(zhuǎn)。(4)仿真工具欄運(yùn)行單步運(yùn)行暫停停止四、預(yù)覽窗口預(yù)覽窗口可顯示如下內(nèi)容:當(dāng)在對象選擇器窗口中單擊某一個(gè)元器件時(shí),該元器件會(huì)顯示在預(yù)覽窗口。此時(shí)可通過方向工具欄中的按鈕對該元器件進(jìn)行旋轉(zhuǎn)和翻轉(zhuǎn)操作。當(dāng)鼠標(biāo)指針在編輯區(qū)窗口操作時(shí),預(yù)覽窗口會(huì)顯示可編輯區(qū)的縮略圖,并顯示一個(gè)綠色方框,綠色方框內(nèi)的內(nèi)容就是當(dāng)前編輯區(qū)窗口中顯示的可編輯區(qū)的內(nèi)容。當(dāng)單擊預(yù)覽窗口的綠色方框后,移動(dòng)鼠標(biāo)可改變綠色方框的位置,從而改變可編輯區(qū)的可視區(qū)域,再次單擊預(yù)覽窗口的綠色方框退出移動(dòng)綠色方框。五、對象選擇器窗口對象選擇器用來選擇繪圖用各類元器件、儀器等,可執(zhí)行以下操作:當(dāng)單擊模式選擇工具欄某一按鈕時(shí),標(biāo)簽顯示對象選擇器窗口所列對象的類型。當(dāng)單擊器件選擇按鈕“P”時(shí),可從打開的“PickDevices”對話框中選取元器件。Proteus有30多個(gè)元器件庫,選取元器件對話框如圖1-2所示。當(dāng)單擊庫管理按鈕“L”時(shí),可從打開的“DevicesLibrariesManager”對話框中整理元器件庫。用戶器件庫USERDVC可由用戶自己添加元器件,也可單擊建庫按鈕“CreateLibrary”建立自己的庫。元器件名稱元器件元器件名稱元器件描述所屬庫元器件列表關(guān)鍵字類別子類別生產(chǎn)廠家元器件預(yù)覽元器件封裝元器件PCB預(yù)覽圖1-2選取元器件對話框1.2.2單片機(jī)應(yīng)用系統(tǒng)的Proteus設(shè)計(jì)與仿真步驟一、Proteus使用中的操作步驟Proteus設(shè)計(jì)與仿真以ISIS為平臺(tái),用于單片機(jī)應(yīng)用系統(tǒng)的開發(fā),主要可分為三大步驟。1.Proteus電路設(shè)計(jì)該步驟主要包括電路設(shè)計(jì)、選取元器件、接插件、連接電路和電氣檢測等。繪制原理圖要在可編輯區(qū)的藍(lán)色方框內(nèi)完成。具體步驟如下:(1)新建設(shè)計(jì)文件:單擊“文件”→“新建設(shè)計(jì)”,在彈出的“CreateNewDeign”對話框中選擇模板后單擊“OK”。(2)設(shè)置圖紙尺寸:單擊“系統(tǒng)”→“設(shè)置圖紙尺寸”,在彈出的“SheetSizeConfigueration”對話框中選擇圖紙尺寸或自定義尺寸后單擊“OK”。(3)保存設(shè)計(jì)文件:單擊“文件”→“保存設(shè)計(jì)”,在彈出的“SaveISISDesignFile”對話框中指定文件夾、輸入文件名并選擇保存類型為“DesignFile”后單擊“保存”。(4)選取元器件:單擊模式選擇工具欄“元件”按鈕,單擊器件選擇按鈕“P”,在彈出的“PickDevices”(選取元器件)對話框的“Keywords”(關(guān)鍵字)欄中輸入元器件名稱(也可以是分類、小類、屬性值),與關(guān)鍵字匹配的元器件顯示在元器件列表(Results)中。雙擊選中的元器件,便將所選元器件加入到對象選擇器窗口。同樣方法選取其他元器件,單擊“OK”完成元器件選取。(5)設(shè)置網(wǎng)格:單擊“查看”→“網(wǎng)格”,網(wǎng)格顯示;再次單擊,網(wǎng)格不顯示(也可單擊命令工具欄的“網(wǎng)格”按鈕)。單擊“查看”→“Snapxxth”(或Snapx.xin),改變網(wǎng)格單位。(6)放置元器件:單擊對象選擇器窗口的元器件,該元器件名背景變?yōu)樗{(lán)色,預(yù)覽窗口顯示該元器件;將鼠標(biāo)指針移到編輯區(qū)某一位置,單擊一次就可放置一個(gè)元器件。(7)編輯元器件:右擊(或單擊)編輯區(qū)的元器件,該元器件變?yōu)榧t色表明被選中,鼠標(biāo)指針放到被選中的元器件上,按住左鍵拖動(dòng),將鼠標(biāo)移到編輯區(qū)某一位置松開,即完成元器件的移動(dòng)。鼠標(biāo)指針放到被選中的元器件上右擊,單擊彈出的快捷菜單中的方向工具命令可實(shí)現(xiàn)元器件的旋轉(zhuǎn)和翻轉(zhuǎn)。右擊編輯區(qū)中被選中的元器件,可刪除該元器件。(8)放置終端:單擊模式選擇工具欄“終端”按鈕,單擊對象選擇器窗口的終端(如POWER為電源、GROUND為地),該終端名背景變?yōu)樗{(lán)色,預(yù)覽窗口顯示該終端;將鼠標(biāo)指針移到編輯區(qū)某一位置,單擊一次就可放置一個(gè)終端。(9)連線:單擊命令工具欄“實(shí)時(shí)Snap(捕捉)”按鈕,實(shí)時(shí)捕捉有效,當(dāng)鼠標(biāo)指針接近引腳末端時(shí),該處會(huì)自動(dòng)出現(xiàn)一個(gè)小方框“□”,表明可以自動(dòng)連接到該點(diǎn),2.Proteus源程序設(shè)計(jì)與編譯該步驟主要包括源程序設(shè)計(jì)、編輯、匯編編譯、生成目標(biāo)代碼文件(HEX格式)。3.Proteus仿真該步驟主要包括加載目標(biāo)代碼文件、仿真。4.常用的操作要點(diǎn)左鍵放置元件;右鍵選擇元件;雙擊右鍵刪除元件;右鍵拖選多個(gè)元件。先右鍵后左鍵編輯元件屬性;先右鍵后左鍵拖動(dòng)可移動(dòng)元件。連線用左鍵;刪除用右鍵;先右擊連線再左鍵拖動(dòng)可改連接線。中鍵縮放原理圖。使用的Proteus軟件版本不一樣,操作上會(huì)有點(diǎn)差異,較新的版本在保留原有操作方法的基礎(chǔ)上會(huì)有一些擴(kuò)展二、Proteus使用中的注意事項(xiàng)1.設(shè)置代碼產(chǎn)生工具第一次使用該軟件時(shí),要設(shè)置代碼產(chǎn)生工具。單擊“源文件”→“定義代碼產(chǎn)生工具”,在彈出的“Add/RemoveCodeGenerationTools”對話框中,單擊“CodeGenerationTool”欄下拉列表框按鈕,選擇“ASEM51”(51匯編器);在“MakeRules”欄和“DebugDataExtraction”欄按表1-3所示進(jìn)行設(shè)置,單擊“OK”。圖1-3定義代碼產(chǎn)生工具對話框2.編譯出錯(cuò)信息(1)常見編譯出錯(cuò)信息一Processing..\..\..\..\Keil\dz\Text1.LST...源程序名ASEM51..\..\..\..\Keil\dz\Text1.LST/INCLUDES:C:\ProgramFiles\LabcenterElectronics\Proteus7Professional\TOOLS\ASEM51源程序路徑InvalidkeyboardcodespecifiedMCS-51FamilyCrossAssemblerASEM-51V1.2匯編器@@@@@toomanyparameters:7@@@@@usage:ASEM<source>[<hex>[<list>]][/INCLUDES:p][/DEFINE:s:v:t][/COLUMNS]ERROR:ASEM.EXEreportederrorcode(2L).Extractingdebugdatafrom..\..\..\..\Keil\dz\Text1.LST...從列表提取調(diào)試數(shù)據(jù)Processed15lines.處理行數(shù)15行BuildFAILEDwith1error(s).代碼建立失敗原因:命令參數(shù)不正確。解決辦法:單擊“源文件”→“定義代碼產(chǎn)生工具”,在彈出的“Add/RemoveCodeGenerationTools”對話框中,刪除“CommandLine”欄中的內(nèi)容,重新輸入“%1,%2,%3”。(2)常見編譯出錯(cuò)信息二MAIN為未定義符號(應(yīng)檢查標(biāo)號為MAIN的指令)“:MAIN為未定義符號(應(yīng)檢查標(biāo)號為MAIN的指令)“:”為非法字符(應(yīng)改為英文輸入法下的“:”)“,”為非法字符(應(yīng)改為英文輸入法下的“,”)L2為未定義符號(應(yīng)檢查標(biāo)號為L2的指令)第2行未定義符號第6行非法字符圖1-4源程序編譯窗口單擊“源文件”→“構(gòu)建所有”(編譯源程序),彈出源程序編譯窗口如圖1-4所示。若編譯不出錯(cuò),則自動(dòng)生成目標(biāo)代碼文件(HEX格式);若編譯出錯(cuò),根據(jù)提示修改源程序并保存,直至編譯成功。原因:圖1-4中有未定義符號(symbolnotdefined)和非法字符(illegalcharacter)。解決辦法:根據(jù)源程序編譯窗口提示的信息修改源程序并保存,然后重新編譯。提示:程序輸入要在英文輸入法下進(jìn)行,否則會(huì)造成編譯出錯(cuò)。3.8051CPUSourceCode源代碼調(diào)試窗口信息使用Proteus自帶匯編器(如ASEM51),它將產(chǎn)生SDI文件。當(dāng)單步調(diào)試程序時(shí),源代碼窗口將出現(xiàn)SDI文件。8051CPUSourceCode源代碼調(diào)試窗口按鈕說明:全速運(yùn)行單步執(zhí)行,跳過子程序內(nèi)部單步執(zhí)行,進(jìn)入子程序內(nèi)部跳出子程序運(yùn)行到選中指令行設(shè)置斷點(diǎn)第2章單片機(jī)硬件和指令系統(tǒng)實(shí)驗(yàn)2.1數(shù)據(jù)存儲(chǔ)器實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.掌握片內(nèi)數(shù)據(jù)存儲(chǔ)器的地址分配。2.掌握對片內(nèi)數(shù)據(jù)存儲(chǔ)器進(jìn)行數(shù)據(jù)讀寫的方法。3.掌握用Proteus調(diào)試匯編源程序的方法。二、實(shí)驗(yàn)預(yù)備知識8051的片內(nèi)數(shù)據(jù)存儲(chǔ)器共有256個(gè)單元,按其功能劃分為兩個(gè)部分:低128單元(單元地址00H~7FH)和高128單元(單元地址80H~FFH)。低128單元按其用途劃分為工作寄存器區(qū)(單元地址00H~1FH)、位尋址區(qū)(單元地址20H~2FH)、用戶RAM區(qū)(單元地址30H~7FH)三個(gè)區(qū)域。如圖2-1所示。高128單元是分配給特殊功能寄存器使用的,其中部分單元(單元地址能被8整除的)可以進(jìn)行位尋址。如表2-1、2-2所示。三、實(shí)驗(yàn)內(nèi)容通過執(zhí)行程序中的相關(guān)指令,將有關(guān)數(shù)據(jù)寫入工作寄存器區(qū)、位尋址區(qū)、數(shù)據(jù)緩沖區(qū)和特殊功能寄存器區(qū)各存儲(chǔ)單元,觀察當(dāng)前在用工作寄存器組的選擇與數(shù)據(jù)傳送目標(biāo)的對應(yīng)關(guān)系、字節(jié)地址與位地址的區(qū)別、特殊功能寄存器的字節(jié)地址、程序計(jì)數(shù)器PC在執(zhí)行指令中的作用。表2-18051單片機(jī)特殊功能寄存器表符號名稱字節(jié)地址符號名稱字節(jié)地址BB寄存器F0HSBUF串行數(shù)據(jù)緩沖寄存器99HACC累加器E0HTH1定時(shí)/計(jì)數(shù)器1(高字節(jié))8DHPSW程序狀態(tài)字D0HTH0定時(shí)/計(jì)數(shù)器0(高字節(jié))8CHIP中斷優(yōu)先級控制寄存器B8HTL1定時(shí)/計(jì)數(shù)器1(低字節(jié))8BHP3P3口鎖存寄存器B0HTL0定時(shí)/計(jì)數(shù)器0(低字節(jié))8AHIE中斷允許控制寄存器A8HTMOD定時(shí)/計(jì)數(shù)器方式寄存器89HP2P2口鎖存寄存器A0HPCON電源控制寄存器87HSCON串行口控制寄存器98HDPH數(shù)據(jù)指針高8位83HP1P1口鎖存寄存器90HDPL數(shù)據(jù)指針低8位82HTCON定時(shí)/計(jì)數(shù)器控制寄存器88HSP堆棧指針81HP0P0口鎖存寄存器80H17H17H10H18H0FH08H07H00H7FH30H工作寄存器區(qū)位尋址區(qū)用戶RAM區(qū)(堆棧、數(shù)據(jù)緩沖區(qū))1FH2FH77E7D7C7B7A79782EH77767574737271702DH6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H474645444342414027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H272625242322212023H1F1E1D1C1B1A191822H171615141312111021H0F0E0D0C0B0A090820H0706050403020100R7R0第3組工作寄存器(R0~R7)R7R0第2組工作寄存器(R0~R7)R7R0第1組工作寄存器(R0~R7)R7R0第0組工作寄存器(R0~R7)圖2-1片內(nèi)RAM地址空間表2-2SFR中位地址分布表SFRMSB位地址/位定義LSB字節(jié)地址BF7F6F5F4F3F2F1F0F0HB.7B.6B.5B.4B.3B.2B.1B.0ACCE7E6E5E4E3E2E1E0E0HACC.7ACC.6ACC.5ACC.4ACC.3ACC.2ACC.1ACC.0PSWD7D6D5D4D3D2D1D0D0HCYACF0RS1RS0OV-PIPBFBEBDBCBBBAB9B8B8HPSPT1PX1PT0PX0P3B7B6B5B4B3B2B1B0B0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0IEAFAEADACABAAA9A8A8HEA--ESET1EX1ET0EX0P2A7A6A5A4A3A2A1A0A0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0SCON9F9E9D9C9B9A999898HSM0SM1SM2RENTB8RB8TIRIP1979695949392919090HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0TCON8F8E8D8C8B8A898888HTF1TR1TF0TR0IE1IT1IE0IT0P0878685848382818080HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0四、實(shí)驗(yàn)參考程序參考程序1:工作寄存器區(qū)的數(shù)據(jù)傳送地址機(jī)器碼源程序注釋檢查數(shù)據(jù)ORG0000H;表示程序從地址0000H存放0000H7811MOVR0,#11H;將立即數(shù)11H送到寄存器R0中(H)=11H0002H7922MOVR1,#22H;將立即數(shù)22H送到寄存器R1中(H)=22H0004H7A33MOVR2,#33H;將立即數(shù)33H送到寄存器R2中(H)=33H0006H7B44MOVR3,#44H;將立即數(shù)44H送到寄存器R3中(H)=44H0008H75D010MOVPSW,#10H;使工作寄存器工作于2區(qū)(H)=10H000BH7855MOVR0,#55H;將立即數(shù)55H送到寄存器R0中(H)=55H000DH7966MOVR1,#66H;將立即數(shù)66H送到寄存器R1中(H)=66H000FH7A77MOVR2,#77H;將立即數(shù)77H送到寄存器R2中(H)=77H0011H7B88MOVR3,#88H;將立即數(shù)88H送到寄存器R3中(H)=88HEND;程序結(jié)束參考程序2:位尋址區(qū)的數(shù)據(jù)傳送地址機(jī)器碼源程序注釋檢查數(shù)據(jù)ORG0100H;表示程序從地址0100H存放0100H7520F0MOV20H,#0F0H;將字節(jié)地址20H單元中的內(nèi)容置F0H(20H)=0103HD200SETB00H;將位地址00H單元中的內(nèi)容置1(H)=10105HD201SETB01H;將位地址01H單元中的內(nèi)容置1(H)=10107HD202SETB02H;將位地址02H單元中的內(nèi)容置1(H)=10109HD203SETB03H;將位地址03H單元中的內(nèi)容置1(H)=1010BHC204CLR04H;將位地址04H單元中的內(nèi)容置0(H)=0010DHC205CLR05H;將位地址05H單元中的內(nèi)容置0(H)=0010FHC206CLR06H;將位地址06H單元中的內(nèi)容置0(H)=00111HC207CLR07H;將位地址07H單元中的內(nèi)容置0(H)=0(20H)=0113H7590FFMOVP1,#0FFH;將字節(jié)地址90H單元中的內(nèi)容置FFH(90H)=0116HC290CLR90H;將P1.0置0(H)=00118HD290SETB90H;將P1.0置1(H)=1011AHC291CLR91H;將P1.1置0(H)=0011CHD291SETB91H;將P1.1置1(H)=1END;程序結(jié)束參考程序3:數(shù)據(jù)緩沖區(qū)和特殊功能寄存器區(qū)的數(shù)據(jù)傳送地址機(jī)器碼源程序注釋檢查數(shù)據(jù)ORG0200H;表示程序從地址0200H存放0200H753099MOV30H,#99H;將立即數(shù)99H送到30H中(30H)=(PC)=0203H7545AAMOV45H,#0AAH;將立即數(shù)AAH送到45H中(45H)=(PC)=0206H758150MOVSP,#50H;將立即數(shù)50H送到堆棧指針SP中(H)=50H(PC)=0209H7460MOVA,#60H;將立即數(shù)60H送到累加器A中(H)=60H(PC)=020BH759055MOVP1,#55H;將立即數(shù)55H送到P1口中(H)=55H(PC)=020EH75D090MOVPSW,#90H;使工作寄存器工作于2區(qū)、進(jìn)位位CY置1(H)=90H(PC)=0211H901234MOVDPTR,#1234H;將立即數(shù)1234H送到數(shù)據(jù)指針DPTR中(H)=12H(H)=34HEND;程序結(jié)束五、實(shí)驗(yàn)步驟1.新建設(shè)計(jì)文件。單擊“文件”→“新建設(shè)計(jì)”,在彈出的“CreateNewDeign”對話框中選擇“DEFAULT”模板后單擊“OK”。2.設(shè)置圖紙尺寸。單擊“系統(tǒng)”→“設(shè)置圖紙尺寸”,在彈出的“SheetSizeConfiguration”對話框中選擇“A4”圖紙尺寸或自定義尺寸后單擊“OK”3.設(shè)置網(wǎng)格。單擊“查看”→“網(wǎng)格”,網(wǎng)格顯示(再次單擊,網(wǎng)格不顯示)。單擊“查看”→“Snapxxth”(或Snapx.xin),可改變網(wǎng)格單位,默認(rèn)為“Snap0.1in”。4.保存設(shè)計(jì)文件。單擊“文件”→“保存設(shè)計(jì)”,在彈出的“SaveISISDesignFile”對話框中指定文件夾(如D盤電信061××文件夾)、輸入文件名“reg”并選擇保存類型為“DesignFiles”后單擊“保存”。5.選取元器件。從Proteus元器件庫中選取元器件AT89C51(單片機(jī))。單擊模式選擇工具欄“元件”按鈕,單擊器件選擇按鈕“P”,在彈出的“PickDevices”(選取元器件)對話框的“Keywords”(關(guān)鍵字)欄中輸入元器件名稱“AT89C51”(也可以是分類、小類、屬性值),與關(guān)鍵字匹配的元器件“AT89C51”顯示在元器件列表(Results)中。雙擊選中的元器件“AT89C51”,便將所選元器件“AT89C51”加入到對象選擇器窗口。單擊“6.放置元器件。單擊對象選擇器窗口的元器件“AT89C51”,元器件名“AT89C51”變?yōu)樗{(lán)底白字,預(yù)覽窗口顯示“AT89C51”元器件;單擊方向工具欄按鈕可實(shí)現(xiàn)元器件的左旋、右旋、水平和垂直7.編輯元器件。單擊模式選擇工具欄“編輯”按鈕,進(jìn)入編輯狀態(tài)。右擊(或單擊)元器件,該元器件變?yōu)榧t色表明被選中,鼠標(biāo)指針放到被選中的元器件上,按住左鍵拖動(dòng),將鼠標(biāo)移到編輯區(qū)某一位置松開,即完成元器件的移動(dòng)。鼠標(biāo)指針放到被選中的元器件上右擊,單擊彈出的快捷菜單中的方向工具欄按鈕可實(shí)現(xiàn)元器件的旋轉(zhuǎn)和翻轉(zhuǎn)。右擊被選中的元器件,可刪除該元器件。被選中的元器件外單擊,可撤銷選中。8.放置終端。單擊模式選擇工具欄“終端”按鈕,單擊對象選擇器窗口的電源終端“POWER”,該終端名背景變?yōu)樗{(lán)色,預(yù)覽窗口顯示該終端;單擊方向工具欄“左旋轉(zhuǎn)”按鈕,電源終端逆時(shí)針旋轉(zhuǎn)90°;將鼠標(biāo)指針移到編輯區(qū)某一位置,單擊一次就可放置一個(gè)終端。9.連線。單擊命令工具欄“實(shí)時(shí)Snap(捕捉)”按鈕,實(shí)時(shí)捕捉有效(再次單擊,實(shí)時(shí)捕捉無效),當(dāng)鼠標(biāo)指針接近引腳末端時(shí),該處會(huì)自動(dòng)出現(xiàn)一個(gè)小方框“□”,表明可以自動(dòng)連接到該點(diǎn)。按圖2-3所示單擊要連線的元器件起點(diǎn)和終點(diǎn),完成連線。10.添加源程序。單擊“源文件”→“增加/移除源文件”,在彈出的“Add/RemoveSourceCodeFiles”對話框中單擊“CodeGenerationTool”欄下拉列表框按鈕,選擇“ASEM51”(51匯編器);單擊新建源文件按鈕“NEW”,在彈出的“NewSourceFile”對話框中指定文件存放的文件夾,輸入文件名“reg.asm”,單擊“打開”,在單擊打開的對話框中的按鈕“是”;確認(rèn)“SourceCodeFilename”欄下拉列表框中顯示文件名為“reg.asm”,單擊“OK”第一次使用該軟件時(shí),要按1.211.編輯源程序。單擊“源文件”→“reg.asm”,在“SourceEditor”源文件編輯器中輸入并編輯源程序,確認(rèn)無誤后,單擊保存按鈕。12.編譯源程序。單擊“源文件”→“構(gòu)建所有”,彈出源程序編譯窗口如圖2-2所示。若編譯不出錯(cuò),則自動(dòng)生成目標(biāo)代碼文件(格式為HEX);若編譯出錯(cuò),根據(jù)提示修改源程序并保存,直至編譯成功。參見1.2.2節(jié)介紹的編譯出錯(cuò)的解決辦法。圖2-2源程序編譯窗口13.加載目標(biāo)代碼文件。先右擊后單擊單片機(jī)“AT89C51”,在彈出的“EditComponent”對話框中單擊“ProgramFile”欄的打開按鈕,在彈出的“SelectFileName”對話框找到剛才編譯生成的HEX文件,單擊“打開“按鈕,完成HEX文件加載;同時(shí)將“ClockFrequency”欄中的頻率設(shè)為12MHz,單擊“OK”,完成加載目標(biāo)代碼文件14.仿真。單擊仿真工具欄“單步運(yùn)行”按鈕,進(jìn)入單步運(yùn)行狀態(tài)。單擊“調(diào)試”→“8051CPURegisters”,單擊“調(diào)試”→“8051CPUSFRMemory”,單擊“調(diào)試”→“8051CPUInternal(IDATA)Memory”,單擊“調(diào)試”→“8051CPUSourceCode”,分別打開工作寄存器窗口、特殊功能寄存器窗口、片內(nèi)數(shù)據(jù)存儲(chǔ)器窗口和源代碼調(diào)試窗口。單擊源代碼調(diào)試窗口“單步執(zhí)行”按鈕一次,可執(zhí)行一條指令;通過各調(diào)試窗口觀察每條指令執(zhí)行后數(shù)據(jù)處理的結(jié)果,以加深對硬件結(jié)構(gòu)和指令的理解。程序調(diào)試窗口如圖2-3所示。圖2-3程序調(diào)試窗口六、實(shí)驗(yàn)分析與總結(jié)1.在實(shí)驗(yàn)過程中,要注意選取元器件、編輯元器件、連接電路、源程序編輯、匯編編譯和加載目標(biāo)代碼文件的操作步驟。2.單步運(yùn)行程序過程中,要隨時(shí)查看相關(guān)單元的內(nèi)容,并與理論分析結(jié)果對比;發(fā)現(xiàn)錯(cuò)誤,應(yīng)及時(shí)查找原因。七、實(shí)驗(yàn)思考1.程序計(jì)數(shù)器PC在專用寄存器區(qū)有無地址?2.位尋址區(qū)(單元地址20H~2FH)能否作一般RAM區(qū)使用?2.2數(shù)據(jù)傳送指令實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.掌握內(nèi)部RAM和外部RAM數(shù)據(jù)傳送指令的用法。2.掌握數(shù)據(jù)交換和堆棧指令的特點(diǎn)。3.掌握用Proteus調(diào)試匯編源程序的方法。二、實(shí)驗(yàn)預(yù)備知識寄存器間接尋址是把指定寄存器的內(nèi)容作為操作數(shù)地址,該地址所指定的單元內(nèi)容作為操作數(shù)。這種尋址方式用于訪問內(nèi)部RAM和外部RAM。工作寄存器R0和R1作為間接尋址寄存器,可尋址內(nèi)部RAM的低位地址的128B單元內(nèi)容。棧操作指令PUSH和POP,用堆棧指針SP進(jìn)行寄存器間接尋址。數(shù)據(jù)指針DPTR作為間接尋址寄存器,尋址外部RAM的64KB空間。單片機(jī)開機(jī)后自動(dòng)將堆棧指針SP指向07H,即(SP)=07H,一般在使用中可將堆棧設(shè)置在片內(nèi)RAM的30H~7FH的范圍內(nèi),棧底是固定的,棧頂是浮動(dòng)的,所有的信息存入和取出都是在浮動(dòng)的棧頂進(jìn)行的。這個(gè)堆棧具有FILO(先進(jìn)后出)的功能。堆棧的棧頂由堆棧指針SP指出其棧頂?shù)奈恢?。入棧(PUSH)的過程是堆棧指針SP先加1,并指向棧頂?shù)纳弦粋€(gè)空單元,然后再將直接地址(direct)尋址的單元內(nèi)容壓入當(dāng)前SP所指示的堆棧單元中。出棧(POP)的過程是先將堆棧指針(SP)所指示的內(nèi)部RAM(棧頂)單元中內(nèi)容送入由直接地址尋址的單元中,然后再將棧指針(SP)減1并回送SP。三、實(shí)驗(yàn)內(nèi)容將數(shù)據(jù)傳送類指令分成四類,分別編寫四個(gè)小程序,以完成數(shù)據(jù)在不同區(qū)域內(nèi)的傳送、交換。1.參考程序1內(nèi)部RAM數(shù)據(jù)傳送(1)將立即數(shù)#12H、#34H、#56H分別傳送至內(nèi)部RAM區(qū)40H、R2、A中。(2)將內(nèi)部RAM區(qū)40H、R2、A中的內(nèi)容分別傳送至R0、內(nèi)部RAM區(qū)50H和12H中。2.參考程序2外部RAM數(shù)據(jù)傳送(1)將立即數(shù)#2000H、#30H、#55H分別傳送至DPTR、R1、A中。(2)將A中的內(nèi)容分別傳送至外部RAM區(qū)2000H、30H中。3.參考程序3數(shù)據(jù)交換(1)將立即數(shù)#65H、#60H、#24H分別傳送至內(nèi)部RAM區(qū)60H、R0、A中。(2)將A中高低半字節(jié)交換。(3)將A中的內(nèi)容與內(nèi)部RAM區(qū)60H中的內(nèi)容交換。(4)將A中的內(nèi)容與R0中的內(nèi)容交換。4.參考程序4堆棧操作(1)將棧底指針調(diào)至30H,并將立即數(shù)#20H、#40H分別傳送至內(nèi)部RAM區(qū)70H、A中。(2)將內(nèi)部RAM區(qū)70H、A中的內(nèi)容分別壓入堆棧區(qū)中。(3)將堆棧區(qū)中的內(nèi)容分別彈出至A、內(nèi)部RAM區(qū)50H中。四、實(shí)驗(yàn)參考程序參考程序1:內(nèi)部RAM數(shù)據(jù)傳送地址機(jī)器碼源程序檢查數(shù)據(jù)ORG0000H0000H754012MOV40H,#12H(40H)=0003H7A34MOVR2,#34H(R2)=0005H7456MOVA,#56H(A)=(P)=0007HA840MOVR0,40H(R0)=0009H8A50MOV50H,R2(50H)=000BHF6MOV@R0,A(12H)=(R0)=END參考程序2:外部RAM數(shù)據(jù)傳送地址機(jī)器碼源程序檢查數(shù)據(jù)ORG0100H0100H902000MOVDPTR,#2000H(DPTR)=0103H7930MOVR1,#30H(R1)=0105H7455MOVA,#55H(A)=(P)=0107HFOMOVX@DPTR,A(2000H)=(DPTR)=0108HF3MOVX@R1,A(30H)=(R1)=END參考程序3:數(shù)據(jù)交換地址機(jī)器碼源程序檢查數(shù)據(jù)ORG0200H0200H756065MOV60H,#65H(60H)=0203H7860MOVR0,#60H(R0)=0205H7424MOVA,#24H(A)=0207HC4SWAPA(A)=0208HC6XCHA,@R0(60H)=(A)=(R0)=0209HC8XCHA,R0(A)=(R0)=END參考程序4:堆棧操作地址機(jī)器碼源程序檢查數(shù)據(jù)ORG0300H0300H758130MOVSP,#30H(SP)=0303H757020MOV70H,#20H(70H)=0306H7440MOVA,#40H(A)=0308HC070PUSH70H(SP)=(31H)=030AHC0EOPUSHACC(SP)=(32H)=030CHD070POP70H(SP)=(70H)=030EHD0EOPOPACC(SP)=(A)=END五、實(shí)驗(yàn)步驟步驟與2.1節(jié)相似,本章以后各節(jié)只列出幾大步驟和每個(gè)步驟與2.1節(jié)不同的要求,不再詳細(xì)敘述具體操作過程。1.新建設(shè)計(jì)文件、設(shè)置圖紙尺寸、設(shè)置網(wǎng)格、保存設(shè)計(jì)文件。文件名為“mov”。2.選取元器件。從Proteus元器件庫中選取元器件AT89C51(單片機(jī))。3.放置元器件、編輯元器件、放置終端、連線。按圖2-3所示放置元器件并連線。4.添加源程序、編輯源程序、編譯源程序。源文件名為“mov.asm”。5.加載目標(biāo)代碼文件?!癈lockFrequency”欄中的頻率要設(shè)為12MHz。6.仿真。單擊仿真工具欄“單步運(yùn)行”按鈕,進(jìn)入單步運(yùn)行狀態(tài)。分別打開工作寄存器窗口、特殊功能寄存器窗口、片內(nèi)數(shù)據(jù)存儲(chǔ)器窗口和源代碼調(diào)試窗口。單擊源代碼調(diào)試窗口“單步執(zhí)行”按鈕一次,可執(zhí)行一條指令,通過各調(diào)試窗口觀察每條指令執(zhí)行后數(shù)據(jù)處理的結(jié)果,以加深對硬件結(jié)構(gòu)和指令的理解。六、實(shí)驗(yàn)分析與總結(jié)1.將每執(zhí)行一條指令后的理論分析結(jié)果與實(shí)驗(yàn)中檢查的數(shù)據(jù)進(jìn)行比較,若不一致,請查找原因。2.分析堆棧指針SP內(nèi)容和堆棧區(qū)內(nèi)的內(nèi)容與壓入或彈出指令的對應(yīng)關(guān)系。七、實(shí)驗(yàn)思考1.MOV、MOVX和MOVC三類指令有什么區(qū)別? 2.編寫一個(gè)將內(nèi)部RAM區(qū)40H中的內(nèi)容傳送至外部RAM區(qū)3000H中的程序。2.3算術(shù)運(yùn)算指令實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.掌握單字節(jié)的加減法指令的使用。2.掌握單字節(jié)的乘除法指令的使用。3.掌握用Proteus調(diào)試匯編源程序的方法。二、實(shí)驗(yàn)預(yù)備知識執(zhí)行加法指令時(shí),當(dāng)和的第3位或第7位有進(jìn)位時(shí),分別將AC、CY標(biāo)志位置1;否則為0。如果第6位向第7位有進(jìn)位而第7位沒有向前進(jìn)位,或者如果第7位向前有進(jìn)位而第6位沒有向第7位進(jìn)位,OV=1,否則OV=0。該操作也影響標(biāo)志位P。執(zhí)行減法指令時(shí),如果第7位有借位,則CY置1,否則清0。若第3位有借位,則AC置1;否則清0。兩個(gè)帶符號數(shù)相減,還要考查OV標(biāo)志,若OV為1,表示差數(shù)溢出,即破壞了正確結(jié)果的符號位。該操作也影響標(biāo)志位P。執(zhí)行乘法指令時(shí),若乘積大于0FFH,則OV置1,否則清0(此時(shí)B的內(nèi)容為0)。CY總是被清0。該操作也影響標(biāo)志位P。執(zhí)行除法指令時(shí),若除數(shù)(B)=00H,則結(jié)果無法確定,OV置1。CY總是被清0。該操作也影響標(biāo)志位P。三、實(shí)驗(yàn)內(nèi)容將算術(shù)運(yùn)算指令分成兩類,分別編寫兩個(gè)小程序,以完成數(shù)據(jù)的加減法、乘除法運(yùn)算。1.參考程序1加減法運(yùn)算(1)將立即數(shù)#B5H、#36H、#89H分別傳送至內(nèi)部RAM區(qū)40H、R2、A中。(2)將內(nèi)部RAM區(qū)40H中的內(nèi)容與A中的內(nèi)容相加,然后再與R2中的內(nèi)容相加,結(jié)果存放至內(nèi)部RAM區(qū)50H中。(3)將A中的內(nèi)容與內(nèi)部RAM區(qū)40H中的內(nèi)容相減,結(jié)果存放至內(nèi)部RAM區(qū)60H中。2.參考程序2乘除法運(yùn)算(1)將立即數(shù)#75H、#31H分別傳送至內(nèi)部RAM區(qū)15H、33H中。(2)將內(nèi)部RAM區(qū)15H單元的內(nèi)容與33H單元的內(nèi)容相乘。(3)將乘積的高8位和低8位分別傳送至內(nèi)部RAM區(qū)31H、30H中。(4)將內(nèi)部RAM區(qū)15H單元的內(nèi)容除以33H單元的內(nèi)容。(5)將商和余數(shù)分別傳送至內(nèi)部RAM區(qū)41H、40H中。四、實(shí)驗(yàn)參考程序參考程序1:加減法運(yùn)算地址機(jī)器碼源程序檢查數(shù)據(jù)ORG0050H0050H7540B5MOV40H,#0B5H(40H)=0053H7A36MOVR2,#36H(R2)=0055H7489MOVA,#89H(A)=(P)=0057H2540ADDA,40H(A)=(CY)=(AC)=(40H)=0059H3AADDCA,R2(A)=(CY)=(AC)=(R2)=005AHF550MOV50H,A(50H)=(A)=005CH9540SUBBA,40H(A)=(CY)=(AC)=(40H)=005EHF560MOV60H,A(60H)=(A)=END參考程序2:乘除法運(yùn)算地址機(jī)器碼源程序檢查數(shù)據(jù)ORG0150H0150H751575MOV15H,#75H(15H)=0153H753331MOV33H,#31H(33H)=0156HE515MOVA,15H(A)=0158H8533FOMOVB,33H(B)=015BHA4MULAB(A)=(B)=(OV)=015CHF530MOV30H,A(30H)=015EH85F031MOV31H,B(31H)=0161HE515MOVA,15H(A)=0163H8533FOMOVB,33H(B)=0166H84DIVAB(A)=(B)=(OV)=0167HF541MOV41H,A(41H)=0169H85F040MOV40H,B(40H)=END五、實(shí)驗(yàn)步驟1.新建設(shè)計(jì)文件、設(shè)置圖紙尺寸、設(shè)置網(wǎng)格、保存設(shè)計(jì)文件。文件名為“add”。2.選取元器件。從Proteus元器件庫中選取元器件AT89C51(單片機(jī))。3.放置元器件、編輯元器件、放置終端、連線。按圖2-3所示放置元器件并連線。4.添加源程序、編輯源程序、編譯源程序。源文件名為“mov.asm”。5.加載目標(biāo)代碼文件。“ClockFrequency”欄中的頻率要設(shè)為12MHz。6.仿真。單擊仿真工具欄“單步運(yùn)行”按鈕,進(jìn)入單步運(yùn)行狀態(tài)。分別打開工作寄存器窗口、特殊功能寄存器窗口、片內(nèi)數(shù)據(jù)存儲(chǔ)器窗口和源代碼調(diào)試窗口。單擊源代碼調(diào)試窗口“單步執(zhí)行”按鈕一次,可執(zhí)行一條指令;通過各調(diào)試窗口觀察每條指令執(zhí)行后數(shù)據(jù)處理的結(jié)果,以加深對硬件結(jié)構(gòu)和指令的理解。六、實(shí)驗(yàn)分析與總結(jié)1.將每執(zhí)行一條指令后的理論分析結(jié)果與實(shí)驗(yàn)中檢查的數(shù)據(jù)進(jìn)行比較,若不一致,請查找原因。2.分析不帶進(jìn)位的加法指令和帶進(jìn)位的加法指令的區(qū)別。七、實(shí)驗(yàn)思考1.BCD碼調(diào)整指令能否直接用于減法指令后面?2.執(zhí)行除法指令時(shí),若寄存器B的內(nèi)容為0,結(jié)果會(huì)如何?2.4邏輯運(yùn)算指令實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.掌握邏輯“與”、“或”、“異或”指令的使用。2.掌握移位指令的使用。3.掌握用Proteus調(diào)試匯編源程序的方法。二、實(shí)驗(yàn)預(yù)備知識邏輯“與”、“或”、“異或”指令的功能是將兩個(gè)指定的操作數(shù)按位進(jìn)行邏輯“與”、“或”、“異或”。目的操作數(shù)為累加器A時(shí),指令的操作影響標(biāo)志位P。執(zhí)行累加器A循環(huán)左移指令(RLA)一次,累加器A中的數(shù)據(jù)乘2;執(zhí)行累加器A循環(huán)右移指令(RRA)一次,累加器A中的數(shù)據(jù)除2。指令的操作不影響PSW標(biāo)志位。累加器A帶進(jìn)位循環(huán)左移指令(RLCA)和累加器A帶進(jìn)位循環(huán)右移指令(RRCA)的操作影響標(biāo)志位P和CY。三、實(shí)驗(yàn)內(nèi)容將邏輯運(yùn)算指令分成兩類,分別編寫兩個(gè)小程序,以完成數(shù)據(jù)的邏輯運(yùn)算、移位。1.參考程序1邏輯“與”、“或”、“異或”運(yùn)算(1)將立即數(shù)#E6H、#82H分別傳送至P0、A中。(2)將P0的高4位保留、低4位屏蔽,A的高4位屏蔽、低4位保留。(3)將P0與A進(jìn)行邏輯“或”運(yùn)算。(4)將P0與立即數(shù)#AAH進(jìn)行邏輯“異或”運(yùn)算。2.參考程序2移位操作(1)將立即數(shù)#88H、#03H分別傳送至內(nèi)部RAM區(qū)60H、70H中。(2)將內(nèi)部RAM區(qū)60H單元的內(nèi)容除以4,結(jié)果傳送至內(nèi)部RAM區(qū)61H。(3)將內(nèi)部RAM區(qū)70H單元的內(nèi)容乘4,結(jié)果傳送至內(nèi)部RAM區(qū)71H。(4)將內(nèi)部RAM區(qū)60H單元的內(nèi)容帶進(jìn)位右移兩次,結(jié)果傳送至內(nèi)部RAM區(qū)62H。(5)將內(nèi)部RAM區(qū)70H單元的內(nèi)容帶進(jìn)位左移兩次,結(jié)果傳送至內(nèi)部RAM區(qū)72H。四、實(shí)驗(yàn)參考程序參考程序1:邏輯“與”、“或”、“異或”運(yùn)算地址機(jī)器碼源程序檢查數(shù)據(jù)ORG0030H0030H7590E6MOVP1,#0E6H(P1)=0033H7482MOVA,#82H(A)=(PSW.0)=0035H5390FANLP1,#0FOH(P1)=0038H540FANLA,#0FH(A)=(PSW.0)=003AH4290ORLP1,A(P1)=003CH6390AAXRLP1,#0AAH(P1)=END參考程序2:移位操作地址機(jī)器碼源程序檢查數(shù)據(jù)ORG0130H0130H756088MOV60H,#88H(60H)=0133H757003MOV70H,#03H(70H)=0136HE560MOVA,60H(A)=0138H03RRA(A)=0139H03RRA(A)=013AHF561MOV61H,A(61H)=013CHE570MOVA,70H(A)=013EH23RLA(A)=013FH23RLA(A)=0140HF571MOV71H,A(71H)=0142HE560MOVA,60H(A)=0144HD3SETBC(CY)=0145H13RRCA(A)=0146H13RRCA(A)=0147HF562MOV62H,A(62H)=0149HE570MOVA,70H(A)=014BHD3SETBC(CY)=014CH33RLCA(A)=014DH33RLCA(A)=014EHF572MOV72H,A(72H)=END五、實(shí)驗(yàn)步驟1.新建設(shè)計(jì)文件、設(shè)置圖紙尺寸、設(shè)置網(wǎng)格、保存設(shè)計(jì)文件。文件名為“l(fā)ogic”。2.選取元器件。從Proteus元器件庫中選取元器件AT89C51(單片機(jī))。3.放置元器件、編輯元器件、放置終端、連線。按圖2-3所示放置元器件并連線。4.添加源程序、編輯源程序、編譯源程序。源文件名為“l(fā)ogic.asm”。5.加載目標(biāo)代碼文件。“ClockFrequency”欄中的頻率要設(shè)為12MHz。6.仿真。單擊仿真工具欄“單步運(yùn)行”按鈕,進(jìn)入單步運(yùn)行狀態(tài)。分別打開工作寄存器窗口、特殊功能寄存器窗口、片內(nèi)數(shù)據(jù)存儲(chǔ)器窗口和源代碼調(diào)試窗口。單擊源代碼調(diào)試窗口“單步執(zhí)行”按鈕一次,可執(zhí)行一條指令;通過各調(diào)試窗口觀察每條指令執(zhí)行后數(shù)據(jù)處理的結(jié)果,以加深對硬件結(jié)構(gòu)和指令的理解。六、實(shí)驗(yàn)分析與總結(jié)1.將每執(zhí)行一條指令后的理論分析結(jié)果與實(shí)驗(yàn)中檢查的數(shù)據(jù)進(jìn)行比較,若不一致,請查找原因。2.分析不帶進(jìn)位的移位指令和帶進(jìn)位的移位指令的區(qū)別。七、實(shí)驗(yàn)思考1.執(zhí)行求反指令CPLA后,程序狀態(tài)寄存器的奇偶標(biāo)志位P有無變化?2.P3口作為輸入口時(shí),要想保留高4位數(shù)據(jù)到累加器A中,應(yīng)如何編程?2.5控制轉(zhuǎn)移指令實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.掌握無條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令的使用。2.掌握調(diào)用指令和返回指令的使用。3.掌握用Proteus調(diào)試匯編源程序的方法。二、實(shí)驗(yàn)預(yù)備知識無條件轉(zhuǎn)移指令是指當(dāng)程序執(zhí)行到該指令時(shí),程序無條件轉(zhuǎn)移到指令所提供的地址處執(zhí)行。條件轉(zhuǎn)移指令是指根據(jù)給出的條件進(jìn)行判斷,若條件滿足,則程序轉(zhuǎn)向由偏移量確定的目的地址處去執(zhí)行;若條件不滿足,程序?qū)⒉粫?huì)轉(zhuǎn)移,而是按原順序執(zhí)行。相對偏移量為一個(gè)帶符號的8位數(shù),偏移范圍為-128~+127,共256個(gè)字節(jié)。累加器A判零轉(zhuǎn)移指令不改變累加器A的內(nèi)容,也不影響任何標(biāo)志位。減1非零轉(zhuǎn)移指令又稱循環(huán)轉(zhuǎn)移指令,該指令是把源操作數(shù)減1,結(jié)果送回到源操作數(shù)中去。并判斷結(jié)果是否為0,若不為0則轉(zhuǎn)移到目標(biāo)地址,繼續(xù)執(zhí)行循環(huán)程序;若為0則終止循環(huán)程序的執(zhí)行。把具有一定功能的公用程序段作為子程序,在主程序中采用調(diào)用指令(LCALL)調(diào)用子程序,子程序的最后一條指令為返回主程序指令(RET)。長調(diào)用指令(LCALL)的執(zhí)行過程是先將(PC)+3→PC,指向下一指令地址;再將把下一指令的16位地址(斷點(diǎn))壓入堆棧,先壓入PC0~7低位地址,后壓入PC8~15高位地址,(SP)+2→SP;最后將指令中給出的16位目標(biāo)地址addr16送入程序計(jì)數(shù)器PC。從而使程序轉(zhuǎn)向目標(biāo)地址addr16去執(zhí)行被調(diào)用的子程序。子程序返回指令(RET)的作用是將棧頂?shù)臄帱c(diǎn)地址送PC,于是,子程序返回主程序繼續(xù)執(zhí)行。三、實(shí)驗(yàn)內(nèi)容根據(jù)控制轉(zhuǎn)移類指令的不同用途,分別編寫二個(gè)小程序,以完成程序在不同條件下的轉(zhuǎn)移、調(diào)用。1.參考程序1累加器A判零轉(zhuǎn)移指令和無條件轉(zhuǎn)移指令(1)將立即數(shù)#01H傳送至A中。(2)判斷A中的內(nèi)容,若(A)=00H,則順序執(zhí)行MOVA,#02H指令;若(A)≠00H,則轉(zhuǎn)移執(zhí)行DECA指令;循環(huán)往復(fù)。2.參考程序2減1非零轉(zhuǎn)移指令、調(diào)用指令和返回指令(1)將片內(nèi)RAM20H~22H單元全部送入立即數(shù)#11H。(2)調(diào)用子程序?qū)⒘⒓磾?shù)#55H傳送至片內(nèi)RAM22H單元中。(3)返回主程序?qū)⒘⒓磾?shù)#55H分別傳送至片內(nèi)RAM20H、21H單元中。四、實(shí)驗(yàn)參考程序參考程序1:累加器A判零轉(zhuǎn)移指令和無條件轉(zhuǎn)移指令地址機(jī)器碼源程序檢查數(shù)據(jù)ORG0000H0000H4130AJMPMAINORG0230H0230H7401MAIN:MOVA,#01H(A)=0232H7003L1:JNZL20234H7402MOVA,#02H(A)=0236HOONOP(A)=0237H14L2:DECA(A)=0238H80F8SJMPL1END參考程序2:減1非零轉(zhuǎn)移指令、調(diào)用指令和返回指令地址機(jī)器碼源程序檢查數(shù)據(jù)ORG0000H0000H020320LJMPMAINORG0320H0320H758130MAIN:MOVSP,#30H(SP)=0323H7820MOVR0,#20H(R0)=0325H7A03MOVR2,#03H(R2)=0327H7411MOVA,#11H(A)=0329HF6LP:MOV@R0,A(20H)=(21H)=(22H)=032AH08INCR0(R0)=(R2)=032BHDAFCDJNZR2,LP032DH00NOP032EH120340LCALLL1(SP)=(31H)=(32H)=0331H752055MOV20H,#55H(20H)=(21H)=(22H)=0334H752155MOV21H,#55H(20H)=(21H)=(22H)=0337H80FESJMP$ORG0340H0340H752255L1:MOV22H,#55H(20H)=(21H)=(22H)=0343H22RETEND五、實(shí)驗(yàn)步驟1.新建設(shè)計(jì)文件、設(shè)置圖紙尺寸、設(shè)置網(wǎng)格、保存設(shè)計(jì)文件。文件名為“jump”。2.選取元器件。從Proteus元器件庫中選取元器件AT89C51(單片機(jī))。3.放置元器件、編輯元器件、放置終端、連線。按圖2-3所示放置元器件并連線。4.添加源程序、編輯源程序、編譯源程序。源文件名為“jump.asm”。5.加載目標(biāo)代碼文件?!癈lockFrequency”欄中的頻率要設(shè)為12MHz。6.仿真。單擊仿真工具欄“單步運(yùn)行”按鈕,進(jìn)入單步運(yùn)行狀態(tài)。分別打開工作寄存器窗口、特殊功能寄存器窗口、片內(nèi)數(shù)據(jù)存儲(chǔ)器窗口和源代碼調(diào)試窗口。單擊源代碼調(diào)試窗口“單步執(zhí)行”按鈕一次,可執(zhí)行一條指令;通過各調(diào)試窗口觀察每條指令執(zhí)行后數(shù)據(jù)處理的結(jié)果,以加深對硬件結(jié)構(gòu)和指令的理解。六、實(shí)驗(yàn)分析與總結(jié)1.將每執(zhí)行一條指令后的理論分析結(jié)果與實(shí)驗(yàn)中檢查的數(shù)據(jù)進(jìn)行比較,若不一致,請查找原因。2.分析累加器A判零轉(zhuǎn)移指令和減1非零轉(zhuǎn)移指令的偏移量的區(qū)別。七、實(shí)驗(yàn)思考1.若將參考程序1中的指令JNZL2改為CJNEA,#00H,L2,參考程序1的執(zhí)行結(jié)果如何?2.若將參考程序2中的指令LCALLL1改為ACALLL1,該指令的機(jī)器碼如何翻譯?2.6位操作指令實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?.掌握位傳送、運(yùn)算、置位、清零指令的使用。2.掌握位轉(zhuǎn)移指令的使用。3.掌握用Proteus調(diào)試匯編源程序的方法。二、實(shí)驗(yàn)預(yù)備知識在進(jìn)行位尋址時(shí),PSW中的進(jìn)位標(biāo)志CY作為位處理機(jī)的累加器,稱為位累加器。位尋址空間包括以下兩部分:片內(nèi)RAM中位尋址區(qū)——即字節(jié)地址20H~2FH單元中連續(xù)的128個(gè)位,位地址為00H~7FH。部分特殊功能寄存器中的可尋址位——凡SFR中字節(jié)地址能被8整除的特殊功能寄存器都可以進(jìn)行位尋址。位地址為80~F7H,一共83位。三、實(shí)驗(yàn)內(nèi)容根據(jù)位操作類指令的不同用途,分別編寫二個(gè)小程序,以完成程序在不同情況下的位傳送、運(yùn)算、置位、清零、轉(zhuǎn)移。1.參考程序1位傳送、運(yùn)算、置位、清零指令(1)將ACC.0、B.0置1,P2.1、P3.2置0。(2)編程計(jì)算邏輯方程P1.7=ACC.0∧(B.0∨P2.1)∧/P3.2。2.參考程序2位轉(zhuǎn)移指令(1)將立即數(shù)#87H、#5BH、#11H分別傳送至P1、A、內(nèi)部RAM區(qū)20H和24H中。(2)判斷P1中的內(nèi)容,若(P1.3)=0,則順序執(zhí)行JBCACC.3,L2指令;若(P1.3)≠0,則轉(zhuǎn)移執(zhí)行MOV20H,P1指令。(3)判斷A中的內(nèi)容,若(ACC.3)=0,則順序執(zhí)行MOV20H,P1指令;若(ACC.3)≠0,則轉(zhuǎn)移并把ACC.3位置0,然后執(zhí)行MOV20H,A指令。四、實(shí)驗(yàn)參考程序參考程序1:位傳送、運(yùn)算、置位、清零指令地

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論