版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
/微機(jī)原理實(shí)驗(yàn)指導(dǎo)書(版本0。1)余有靈副教授控制科學(xué)與工程系2007年11月13日
說明本實(shí)驗(yàn)指導(dǎo)書是依據(jù)西安唐都科教儀器公司的產(chǎn)品手冊編制,在實(shí)驗(yàn)中心相關(guān)領(lǐng)導(dǎo)和實(shí)驗(yàn)工作人員的幫助下完成的,在此表示感謝.
本次實(shí)驗(yàn)包括四個(gè)實(shí)驗(yàn)系統(tǒng)。任意完成其中兩個(gè)即可。實(shí)驗(yàn)3—1基本I/O接口電路設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆栈綢/O接口電路的設(shè)計(jì)方法.熟練匯編語言I/O端口操作指令的使用。實(shí)驗(yàn)設(shè)備PC微機(jī)一臺(tái)、TD—PIT+實(shí)驗(yàn)系統(tǒng)一套。實(shí)驗(yàn)內(nèi)容利用三態(tài)緩沖器74LS245、鎖存器74LS374設(shè)計(jì)微機(jī)總線和外部設(shè)備的數(shù)據(jù)通道,實(shí)現(xiàn)微機(jī)對外部輸入數(shù)據(jù)的讀取和對輸出數(shù)據(jù)的輸出。用開關(guān)及LED顯示單元的開關(guān)和數(shù)據(jù)燈作為輸入和輸出顯示設(shè)備,將讀到開關(guān)的數(shù)據(jù)顯示在數(shù)據(jù)燈上。實(shí)驗(yàn)原理輸入接口設(shè)計(jì)輸入接口一般用三態(tài)緩沖器實(shí)現(xiàn),外部設(shè)備輸入數(shù)據(jù)通過三態(tài)緩沖器,通過數(shù)據(jù)總線傳送給微機(jī)系統(tǒng).74LS245是一種8通道雙向的三態(tài)緩沖器,其管腳結(jié)構(gòu)如圖1所示.DIR引腳控制緩沖器數(shù)據(jù)方向,DIR為1表示數(shù)據(jù)由A[7:0]至B[7:0],DIR為0表示數(shù)據(jù)由B[7:0]至A[7:0]。G引腳為緩沖器的片選信號(hào),低電平有效.圖174LS245雙向三態(tài)緩沖器管腳圖輸出接口設(shè)計(jì)輸出接口一般用鎖存器實(shí)現(xiàn),從總線送出的數(shù)據(jù)可以暫存在鎖存器中。74LS374是一種8通道上沿觸發(fā)鎖存器。其管腳結(jié)構(gòu)如圖2所示。D[7:0]為輸入數(shù)據(jù)線,Q[7:0]為輸出數(shù)據(jù)線。CLK引腳為鎖存控制信號(hào),上升沿有效。當(dāng)上升沿到時(shí),輸出數(shù)據(jù)線鎖存輸入數(shù)據(jù)線上的數(shù)據(jù)。OE引腳為鎖存器的片選信號(hào),低電平有效。圖274LS374上沿觸發(fā)鎖存器管腳圖輸入輸出接口設(shè)計(jì)用74LS245和74LS374可以組成一個(gè)輸入輸出接口電路,既實(shí)現(xiàn)數(shù)據(jù)的輸入又實(shí)現(xiàn)數(shù)據(jù)的輸出,輸入輸出可以占用同一個(gè)端口。是輸入還是輸出用總線讀寫信號(hào)來區(qū)分??偩€讀信號(hào)IOR和片選信號(hào)CS相“或”來控制輸入接口74LS245的使能信號(hào)G.總線寫信號(hào)IOW和片選信號(hào)CS相“或”來控制輸出接口74LS374的鎖存信號(hào)CLK。實(shí)驗(yàn)系統(tǒng)中基本輸入輸出單元就實(shí)現(xiàn)了兩組這種的電路,任意A組的電路連接如圖3所示。圖3用74LS245和74LS374組成的輸入輸出接口電路實(shí)驗(yàn)說明及步驟本實(shí)驗(yàn)實(shí)現(xiàn)的是將開關(guān)K[7:0]的數(shù)據(jù)通過輸入數(shù)據(jù)通道讀入CPU的寄存器,然后再通過輸出數(shù)據(jù)通道將該數(shù)據(jù)輸出到數(shù)據(jù)燈顯示,該程序循環(huán)運(yùn)行,直到按動(dòng)鍵盤上任意按鍵再退出程序。實(shí)驗(yàn)程序流程如圖4所示。參考實(shí)驗(yàn)接線如圖5所示。實(shí)驗(yàn)步驟如下。確認(rèn)從PC機(jī)引出的兩根扁平電纜已經(jīng)連接在實(shí)驗(yàn)平臺(tái)上。參考圖5所示連接實(shí)驗(yàn)線路。首先運(yùn)行CHECK程序,查看并記錄與片選信號(hào)對應(yīng)的I/O端口始地址。參考實(shí)驗(yàn)流程圖編寫程序,注意使用正確的端口地址,然后編譯鏈接。運(yùn)行程序,撥動(dòng)開關(guān),觀看數(shù)據(jù)燈顯示是否正確。圖4基本I/O接口設(shè)計(jì)實(shí)驗(yàn)參考程序流程圖圖5基本I/O接口設(shè)計(jì)實(shí)驗(yàn)參考接線圖實(shí)驗(yàn)程序:;8位I/O接口電路設(shè)計(jì)實(shí)驗(yàn);***********根據(jù)查看端口資源修改下列符號(hào)值***************IOY0 ?EQU9C00H;片選IOY0對應(yīng)的端口始地址;*********************************************************STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATA1SEGMENT?MES?DB'Pressanykeytoexit!’,0AH,0DH,0AH,0DH,'$'DATA1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA1START:?MOV?AX,DATA1?MOV?DS,AX?MOV DX,OFFSETMES;顯示退出提示 ?MOV?AH,09H????INT 21H ?A1:?MOV?DX,IOY0;讀寫基本I/O單元低8位的端口?IN??AL,DX OUT DX,AL MOV AH,1;判斷是否有按鍵按下?INT16H JZA1;無按鍵則跳回繼續(xù)循環(huán),有則退出QUIT: MOVAX,4C00H;結(jié)束程序退出 INT21HCODE?ENDS ENDSTART?實(shí)驗(yàn)3-2地址譯碼電路設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)3-8譯碼器在接口電路中的應(yīng)用。掌握地址譯碼電路的一般設(shè)計(jì)方法。實(shí)驗(yàn)設(shè)備PC微機(jī)一臺(tái)、TD—PIT+實(shí)驗(yàn)系統(tǒng)一套。實(shí)驗(yàn)內(nèi)容用74LS138譯碼器設(shè)計(jì)地址譯碼電路,并用其輸出作為基本輸入輸出單元的片選信號(hào),使用設(shè)計(jì)的端口地址編寫程序,實(shí)現(xiàn)數(shù)據(jù)的輸入輸出。實(shí)驗(yàn)原理微機(jī)接口電路中,常采用74LS138譯碼器來實(shí)現(xiàn)I/O端口或存儲(chǔ)器的地址譯碼.74LS138有3個(gè)輸入引腳、3個(gè)控制引腳及8個(gè)輸出引腳,其管腳信號(hào)如圖6所示。當(dāng)3個(gè)控制信號(hào)有效時(shí),相應(yīng)于輸入信號(hào)A、B、C狀態(tài)的那個(gè)輸出端為低電平,該信號(hào)即可作為片選信號(hào).圖674LS138譯碼器管腳32位擴(kuò)展系統(tǒng)總線上有一個(gè)IOM/信號(hào),該信號(hào)為低電平時(shí)指示當(dāng)前操作為I/O操作,為高電平指示當(dāng)前操作為存儲(chǔ)器操作,它和譯碼器不同的連接可以用來區(qū)分是I/O端口譯碼還是存儲(chǔ)器端口譯碼。32位總線地址是由A2開始,所以地址是以4字節(jié)邊界對齊的.實(shí)驗(yàn)系統(tǒng)的I/O地址空間共有256字節(jié),偏移地址一般從00H~FFH。起始地址由PC機(jī)系統(tǒng)分配,可以用CHECK程序讀出。所以設(shè)計(jì)地址譯碼電路,主要是針對低8位地址線譯碼,得到偏移在00H~FFH之間的端口。本實(shí)驗(yàn)要求不使用總線上的片選信號(hào),自行設(shè)計(jì)端口偏移地址分別為C0H~DFH和E0H~FFH的譯碼電路,然后用譯碼輸出作為基本輸入輸出單元的片選。編寫程序,完成I/O數(shù)據(jù)操作。實(shí)驗(yàn)參考線路如圖3—2—2所示。圖7地址譯碼設(shè)計(jì)實(shí)驗(yàn)參考接線圖實(shí)驗(yàn)步驟確認(rèn)從PC機(jī)引出的兩根扁平電纜已經(jīng)連接在實(shí)驗(yàn)平臺(tái)上。按圖7所示連接實(shí)驗(yàn)線路。首先運(yùn)行CHECK程序,查看I/O端口始地址。利用設(shè)計(jì)好的端口地址編寫程序,然后編譯鏈接。運(yùn)行程序,撥動(dòng)開關(guān),觀看數(shù)據(jù)燈顯示是否正確.實(shí)驗(yàn)程序:;地址譯碼電路設(shè)計(jì)實(shí)驗(yàn);**********根據(jù)查看端口資源修改下列符號(hào)值*******************IOY0??EQU9C00H ?;片選IOY0對應(yīng)的端口始地址;***********************************************************Y7? EQUIOY0+0E0H??;譯碼電路輸出Y7對應(yīng)的端口地址STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATA1SEGMENT MESDB'Pressanykeytoexit!’,0AH,0DH,0AH,0DH,'$'DATA1ENDSCODESEGMENTASSUMECS:CODE,DS:DATA1START:?MOV?AX,DATA1?MOV DS,AX MOV?DX,OFFSETMES;顯示退出提示??MOV AH,09H ???INT 21H A1: MOV?DX,Y7;讀寫片選接Y7的端口?IN ?AL,DX OUT DX,AL?MOV AH,1;判斷是否有按鍵按下?INT?16H JZ A1;無按鍵則跳回繼續(xù)循環(huán),有則退出QUIT:?MOV AX,4C00H;結(jié)束程序退出 INT?21HCODE?ENDS?ENDSTART?實(shí)驗(yàn)3—3存儲(chǔ)器擴(kuò)展實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)靜態(tài)存儲(chǔ)器操作原理.學(xué)習(xí)32位總線存儲(chǔ)器接口電路設(shè)計(jì)。掌握不同總線字節(jié)寬度訪問存儲(chǔ)器的編程方法。實(shí)驗(yàn)設(shè)備PC微機(jī)一臺(tái)、TD—PIT+實(shí)驗(yàn)系統(tǒng)一套.實(shí)驗(yàn)內(nèi)容在32位擴(kuò)展系統(tǒng)總線上分別進(jìn)行32位存儲(chǔ)器擴(kuò)展和8位存儲(chǔ)器擴(kuò)展連接。編寫程序,將PC機(jī)內(nèi)存中的一段數(shù)據(jù)傳送至擴(kuò)展的存儲(chǔ)器中.并進(jìn)行規(guī)則和不規(guī)則雙字讀寫操作以及不同的總線字節(jié)訪問寬度指令操作,調(diào)試程序并分析時(shí)序的區(qū)別。實(shí)驗(yàn)原理SRAM62256介紹存儲(chǔ)器是用來存儲(chǔ)信息的部件,是計(jì)算機(jī)的重要組成部分,靜態(tài)RAM是由MOS管組成的觸發(fā)器電路,每個(gè)觸發(fā)器可以存放1位信息.只要不掉電,所儲(chǔ)存的信息就不會(huì)丟失。因此,靜態(tài)RAM工作穩(wěn)定,不要外加刷新電路,使用方便.但一般SRAM的每一個(gè)觸發(fā)器是由6個(gè)晶體管組成,SRAM芯片的集成度不會(huì)太高,目前較常用的有6116(2K×8位),6264(8K×8位)和62256(32K×8位).62256SRAM有32768個(gè)存儲(chǔ)單元,每個(gè)單元為8位字長。62256的引腳如圖8所示,WE、OE、CE的共同作用決定了芯片的運(yùn)行方式.圖862256引腳圖32位總線的存儲(chǔ)器接口32位擴(kuò)展系統(tǒng)總線提供XA2~XA23、BE0~BE3信號(hào)為存儲(chǔ)器提供物理地址。XA2~XA23用來確定一個(gè)4字節(jié)的存儲(chǔ)單元,BE0~BE3用來確定當(dāng)前操作中所涉及到4字節(jié)存儲(chǔ)單元中的那個(gè)字節(jié).BE0對應(yīng)D[7:0],BE1對應(yīng)D[15:8],BE2對應(yīng)D[23:16],BE3對應(yīng)D[31:24].其對應(yīng)關(guān)系如表1所示.表1BE[3:0]指示和數(shù)據(jù)總線有效對照表在SRAM實(shí)驗(yàn)單元中,使用了4片62256SRAM構(gòu)成4×8bits的32位存儲(chǔ)器,存儲(chǔ)體分為0體、1體、2體和3體,分別為字節(jié)使能線BE0、BE1、BE2和BE3選通。其電路結(jié)構(gòu)如圖9所示.圖932位存儲(chǔ)器單元電路結(jié)構(gòu)圖32位存儲(chǔ)器操作在存儲(chǔ)器中,從4的整數(shù)倍地址開始存放的雙字稱為規(guī)則雙字.從4的非整數(shù)倍地址開始存放的雙字稱為非規(guī)則雙字.CPU訪問規(guī)則雙字只需要一個(gè)總線周期,BE0、BE1、BE2和BE3同時(shí)有效,從而同時(shí)選通0、1、2和3四個(gè)存儲(chǔ)體。例如: MOV[0000],EAX MOV[0004],EAX兩次規(guī)則雙字操作對應(yīng)的時(shí)序如圖10所示.圖1032位存儲(chǔ)器規(guī)則雙字操作時(shí)序圖CPU訪問非規(guī)則雙字需要兩個(gè)總線周期.通過BE0、BE1、BE2和BE3在兩個(gè)周期中選通不同的字節(jié).例如從4的整數(shù)倍地址加1的單元開始訪問,第一個(gè)總線周期BE1、BE2和BE3有效,訪問3個(gè)字節(jié);第二個(gè)總線周期地址遞增,BE0有效,訪問剩余的一個(gè)字節(jié)。然后自動(dòng)將4個(gè)字節(jié)組合為一個(gè)雙字。例如:?MOV[0001],EAX??? MOV[0005],EAX兩次非規(guī)則雙字操作對應(yīng)的時(shí)序如圖11所示。圖1132位存儲(chǔ)器非規(guī)則雙字操作時(shí)序圖8位存儲(chǔ)器操作在32位總線上可以進(jìn)行8位存儲(chǔ)器的操作,允許CPU用字節(jié)指令進(jìn)行訪問.這樣的操作相當(dāng)于32位總線上其它3個(gè)字節(jié)不訪問。如圖9中只對0體存儲(chǔ)器(62256—0)進(jìn)行操作,其它3個(gè)存儲(chǔ)器的數(shù)據(jù)線不連接,字節(jié)使能始終是BE0有效,4字節(jié)空間只訪問最低的1個(gè)字節(jié)。實(shí)驗(yàn)說明及步驟實(shí)驗(yàn)系統(tǒng)的存儲(chǔ)器空間共有16MB,偏移為000000H~FFFFFFH。起始地址由PC機(jī)系統(tǒng)分配,可以用CHECK程序讀出。分配的存儲(chǔ)器空間遠(yuǎn)大于1MB,在實(shí)地址模式下無法操作,需要在CPU的保護(hù)模式下操作.實(shí)驗(yàn)程序要按照保護(hù)模式程序結(jié)構(gòu)編寫,在集成環(huán)境里的保護(hù)模式調(diào)試平臺(tái)上運(yùn)行。程序流程如圖12所示(a圖表示32位存儲(chǔ)器操作,b圖表示8位存儲(chǔ)器操作)。實(shí)驗(yàn)接線如圖13和圖14所示。(a)32位存儲(chǔ)器操作(b)8位存儲(chǔ)器操作圖12存儲(chǔ)器擴(kuò)展實(shí)驗(yàn)參考程序流程圖圖1332位存儲(chǔ)器擴(kuò)展實(shí)驗(yàn)參考接線圖圖148位存儲(chǔ)器擴(kuò)展實(shí)驗(yàn)參考接線圖實(shí)驗(yàn)步驟確認(rèn)從PC機(jī)引出的兩根扁平電纜已經(jīng)連接在實(shí)驗(yàn)平臺(tái)上。按圖13或圖14所示連接實(shí)驗(yàn)線路。首先運(yùn)行CHECK程序,查看存儲(chǔ)器空間始地址。利用查出的地址編寫32位及8位存儲(chǔ)器操作的程序,然后編譯鏈接。在保護(hù)模式調(diào)試環(huán)境(Tddebug的PmRun)下運(yùn)行程序,查看數(shù)據(jù)操作是否正確。將程序改為非規(guī)則雙字寫入操作,調(diào)試程序,查看在數(shù)據(jù)區(qū)讀出的存儲(chǔ)器數(shù)據(jù),分析寫入雙字的排列規(guī)則以及總線操作時(shí)序的原理。程序代碼;32位存儲(chǔ)器擴(kuò)展實(shí)驗(yàn)(32位寬度訪問).386P;*********根據(jù)CHECK配置信息修改下列符號(hào)值**************MY0_H?EQU0D9H? ?;片選MY0起始地址的最高位字節(jié)MY0_M EQU00H ??;片選MY0起始地址的次高位字節(jié)MY0_L EQU0000H ;片選MY0起始地址的低兩位字節(jié);******************************************************ATDW ?EQU92h;存在的可讀寫數(shù)據(jù)段屬性值A(chǔ)TCE EQU98h;存在的只執(zhí)行代碼段屬性值Desc STRUCLimitL DW??0000H;段界限(BIT0—15)BaseL?? DW 0000H;段基地址(BIT0-15)BaseM? DB???00H;段基地址(BIT16-23)Attributes? DB???00H;段屬性LimitH ? DB ??00H;段界限(BIT16-19)(含段屬性的高4位)BaseH DB? 00H;段基地址(BIT24—31)Desc?ENDS?DSEG? SEGMENT?USE16GDT LABELBYTEID1 DESC?〈0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH〉SCODE?DESC?〈0FFFFH,CSEG,,ATCE,,〉DATAS?DESC 〈D1LEN,DSEG1,,ATDW,,〉 ;源數(shù)據(jù)段描述符DATAD?DESC 〈2000H,MY0_L,MY0_M(jìn),ATDW,,MY0_H〉;目的數(shù)據(jù)段描述符GDTLEN =$—GDTSCODE_SEL =SCODE—GDTDATAS_SEL =DATAS-GDTDATAD_SEL?=DATAD-GDTID2? DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>ID3 ?DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH〉DSEG??ENDS?DSEG1 ?SEGMENTUSE16TDATA DD? 11111111H,22222222H,33333333H,44444444H;定義原數(shù)據(jù)段數(shù)據(jù)DD? 55555555H,66666666H,77777777H,88888888HDD??11111111H,22222222H,33333333H,44444444H;定義原數(shù)據(jù)段數(shù)據(jù)DD 55555555H,66666666H,77777777H,88888888HDD 11111111H,22222222H,33333333H,44444444H;定義原數(shù)據(jù)段數(shù)據(jù)DD??55555555H,66666666H,77777777H,88888888HD1LEN=$-1DSEG1 ENDSCSEG?SEGMENTUSE16???ASSUMECS:CSEGSTART?PROC MOV AX,DATAS_SEL;裝入數(shù)據(jù)段地址? MOV?DS,AX? ?MOV?AX,DATAD_SEL???MOV?ES,AX ?XOR SI,SI XOR?DI,DI ?;ADD?DI,1 MOV?CX,18HLOOP1:?MOV EAX,DS:[SI];將源數(shù)據(jù)段數(shù)據(jù)傳輸?shù)侥康臄?shù)據(jù)段 MOV?ES:[DI],EAX? ADD SI,4? ADD?DI,4 LOOP?LOOP1INT0FFHSTART ENDPCLEN =$—1CSEG ENDS?ENDSTART
;8位存儲(chǔ)器擴(kuò)展實(shí)驗(yàn)(8位寬度訪問)。386P;***********根據(jù)CHECK配置信息修改下列符號(hào)值*******************MY0_H EQU0D9H;片選MY0起始地址的最高位字節(jié)MY0_M(jìn) EQU00H;片選MY0起始地址的次高位字節(jié)MY0_L?EQU0000H;片選MY0起始地址的低兩位字節(jié);*************************************************************ATDW??EQU92h;存在的可讀寫數(shù)據(jù)段屬性值A(chǔ)TCE EQU98h;存在的只執(zhí)行代碼段屬性值Desc STRUCLimitL ?DW0000H;段界限(BIT0-15)BaseL?DW0000H;段基地址(BIT0-15)BaseM ?DB00H;段基地址(BIT16—23)Attributes?DB00H;段屬性LimitH? DB00H;段界限(BIT16—19)(含段屬性的高4位)BaseH? DB00H;段基地址(BIT24—31)Desc?ENDS??DSEG SEGMENT?USE16GDT LABELBYTEID1??DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>SCODE?DESC〈0FFFFH,CSEG,,ATCE,,>DATAS?DESC<D1LEN,DSEG1,,ATDW,,〉?;源數(shù)據(jù)段描述符DATAD?DESC〈2000H,MY0_L,MY0_M,ATDW,,MY0_H〉;目的數(shù)據(jù)段描述符GDTLEN =$—GDTSCODE_SEL =SCODE—GDTDATAS_SEL =DATAS—GDTDATAD_SEL?=DATAD-GDTID2? DESC〈0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH〉ID3? DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH〉DSEG ENDS?DSEG1SEGMENTUSE16TDATA DB? 00H,11H,22H,33H,44H,55H,66H,77H;定義源數(shù)據(jù)段數(shù)據(jù)DB88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFHDB00H,11H,22H,33H,44H,55H,66H,77H;定義源數(shù)據(jù)段數(shù)據(jù)DB88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFHDB00H,11H,22H,33H,44H,55H,66H,77H;定義源數(shù)據(jù)段數(shù)據(jù)DB88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFHD1LEN=$-1DSEG1 ENDSCSEG? SEGMENTUSE16? ?ASSUMECS:CSEGSTART PROC ? MOV AX,DATAS_SEL;裝入數(shù)據(jù)段 ??MOV?DS,AX???MOV AX,DATAD_SEL ??MOV?ES,AX XOR?SI,SI XOR DI,DI MOV?CX,30HLOOP1: MOV?AL,DS:[SI];將源數(shù)據(jù)段數(shù)據(jù)傳輸?shù)侥康臄?shù)據(jù)段 MOV?ES:[DI],AL?ADD SI,1?ADD?DI,4 LOOP?LOOP1?INT?0FFHSTART?ENDPCLEN ?=$-1CSEG?ENDSENDSTART?實(shí)驗(yàn)3-4FLASH存儲(chǔ)器擴(kuò)展實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)FLASH存儲(chǔ)器操作原理。了解AT29C010FLASHROM的編程特性。實(shí)驗(yàn)設(shè)備PC微機(jī)一臺(tái)、TD-PIT+實(shí)驗(yàn)系統(tǒng)一套。實(shí)驗(yàn)內(nèi)容編寫程序?qū)Γ芁ASHROM單元的AT29C010進(jìn)行數(shù)據(jù)傳輸操作,將PC機(jī)內(nèi)存中一段數(shù)據(jù)寫入到FLASHROM中.并利用FLASHROM的擦除和寫保護(hù)命令對存儲(chǔ)器進(jìn)行擦除和寫保護(hù).實(shí)驗(yàn)原理FLASHROM介紹可編程只讀存儲(chǔ)器FLASH通常也稱“閃爍”存儲(chǔ)器(或簡稱“閃存”),該類型的存儲(chǔ)器具有掉電時(shí)信息不丟失、塊擦除、單一供電、高密度信息存儲(chǔ)等特點(diǎn),主要用于保存系統(tǒng)引導(dǎo)程序和系統(tǒng)參數(shù)等需要長期保存的重要信息,現(xiàn)在又廣泛應(yīng)用于移動(dòng)存儲(chǔ)設(shè)備中。AT29C010是一種5V的在系統(tǒng)可編程可擦除FLASHROM,存儲(chǔ)容量為128K×8bits,其引腳如圖15所示。圖15A(chǔ)T29C010引腳圖AT29C010編程特性FLASHROM的操作與SRAM不同,數(shù)據(jù)是以數(shù)據(jù)塊的形式傳輸。AT29C010共有1024個(gè)扇區(qū),每扇區(qū)128字節(jié)。當(dāng)寫存儲(chǔ)器時(shí),連續(xù)的128字節(jié)被內(nèi)部鎖存器鎖存,然后存儲(chǔ)器進(jìn)入編程周期,將鎖存器中的128字節(jié)數(shù)據(jù)依次寫入存儲(chǔ)器扇區(qū)中,在此期間必須等待10ms以上再對下一扇區(qū)操作。寫一個(gè)扇區(qū)之前,存儲(chǔ)器會(huì)自動(dòng)擦除該扇區(qū)全部內(nèi)容,然后再進(jìn)行編程.AT29C010具有軟件數(shù)據(jù)保護(hù)功能,啟動(dòng)該功能是通過在編程之前寫入三個(gè)連續(xù)的程序命令,如圖16(a)所示。以后每次編程之前都要加上這三個(gè)命令,否則數(shù)據(jù)無法寫入.這樣可以防止意外的存儲(chǔ)器操作,而使數(shù)據(jù)被刪除。該功能可以通過寫入六個(gè)連續(xù)的程序命令取消,如圖16(b)所示。存儲(chǔ)器還提供一個(gè)軟件擦除功能,通過寫入六個(gè)連續(xù)的程序命令將整個(gè)存儲(chǔ)器的內(nèi)容全部擦除,如圖16(c)所示。(a)寫保護(hù)命令(b)取消寫保護(hù)命令(c)擦除命令圖16AT29C010軟件編程命令格式實(shí)驗(yàn)說明及步驟本實(shí)驗(yàn)要求編寫程序?qū)⒕彌_區(qū)內(nèi)定義的一段數(shù)據(jù)寫到FLASHROM的一個(gè)扇區(qū)中。并且通過帶軟件數(shù)據(jù)保護(hù)和不帶軟件數(shù)據(jù)保護(hù)不同的寫入方法,比較這兩種寫入方法有什么區(qū)別。最后用軟件擦除方法擦除FLASHROM中的內(nèi)容。程序編寫方法同靜態(tài)存儲(chǔ)器擴(kuò)展,用CHECK程序讀出存儲(chǔ)器空間始地址。按保護(hù)模式程序結(jié)構(gòu)編寫,在集成環(huán)境里的保護(hù)模式調(diào)試環(huán)境中運(yùn)行。參考線路連接如圖17所示。圖17FLASH存儲(chǔ)器擴(kuò)展實(shí)驗(yàn)參考接線圖實(shí)驗(yàn)步驟確認(rèn)從PC機(jī)引出的兩根扁平電纜已經(jīng)連接在實(shí)驗(yàn)平臺(tái)上。參考如圖17所示連接實(shí)驗(yàn)電路.首先運(yùn)行CHECK程序,查看存儲(chǔ)器空間始地址.利用查出的地址分別編寫帶數(shù)據(jù)保護(hù)寫、去掉數(shù)據(jù)寫保護(hù)、不帶保護(hù)寫和軟件擦除程序,然后編譯鏈接。在保護(hù)模式調(diào)試環(huán)境下先運(yùn)行帶數(shù)據(jù)保護(hù)寫程序,查看數(shù)據(jù)是否寫入正確。運(yùn)行不帶保護(hù)寫程序,查看數(shù)據(jù)是否寫入(應(yīng)該無法寫入)。運(yùn)行去掉寫保護(hù)程序,再用不帶保護(hù)寫程序?qū)慒LASH,查看數(shù)據(jù)寫入是否正確。運(yùn)行軟件擦除FLASH程序,查看數(shù)據(jù)是否都已擦除。通過這幾步的操作,分析FLASH存儲(chǔ)器的操作特性。程序代碼;帶保護(hù)寫FLASH實(shí)驗(yàn).386P;***********根據(jù)CHECK配置信息修改下列符號(hào)值*******************MY0_H EQU0D9H;片選MY0起始地址的最高位字節(jié)MY0_M?EQU00H;片選MY0起始地址的次高位字節(jié)MY0_L EQU0000H;片選MY0起始地址的低兩位字節(jié);**************************************************************ADD5555 EQU5555H*4;寫命令時(shí)用到的地址ADD2AAA?EQU2AAAH*4;寫命令時(shí)用到的地址ATDW? EQU92h;存在的可讀寫數(shù)據(jù)段屬性值ATCE? EQU98h;存在的只執(zhí)行代碼段屬性值DescSTRUCLimitL? DW0000H;段界限(BIT0-15)BaseL DW0000H;段基地址(BIT0-15)BaseM DB00H;段基地址(BIT16—23)Attributes DB00H;段屬性LimitH DB00H;段界限(BIT16-19)(含段屬性的高4位)BaseH??DB00H;段基地址(BIT24-31)DescENDSDSEG?SEGMENTUSE16GDT??LABELBYTEID1 DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>SCODE?DESC<0FFFFH,CSEG,,ATCE,,>DATAS DESC<D1LEN,DSEG1,,ATDW,,>?;源數(shù)據(jù)段DATAD DESC<0FFFFH,MY0_L,MY0_M,ATDW,01H,MY0_H>;目的數(shù)據(jù)段描述符GDTLEN =$—GDTSCODE_SEL?=SCODE-GDTDATAS_SEL?=DATAS—GDTDATAD_SEL =DATAD—GDTID2 ?DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>ID3??DESC〈0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>DSEG ?ENDSDSEG1 SEGMENTUSE16D1LEN ?=$-1DSEG1?ENDSCSEG ?SEGMENTUSE16 ?ASSUMECS:CSEGSTART?PROC ? MOVAX,DATAS_SEL ?MOVDS,AX???MOVAX,DATAD_SEL?MOVES,AXMOVEDI,ADD5555MOVES:[EDI],BYTEPTR0AAHMOVEDI,ADD2AAAMOVES:[EDI],BYTEPTR55HMOVEDI,ADD5555MOVES:[EDI],BYTEPTR0A0HMOVCX,0080HMOVAL,00HMOVDI,0000HLOOP1:MOVES:[DI],ALADDDI,4INCALLOOPLOOP1INT0FFhSTART?ENDPCLEN? =$—1CSEG? ENDSEND ?START
;去除FLASH寫保護(hù)實(shí)驗(yàn)。386P;*********根據(jù)CHECK配置信息修改下列符號(hào)值*******************MY0_H?EQU0D9H;片選MY0起始地址的最高位字節(jié)MY0_M?EQU00H;片選MY0起始地址的次高位字節(jié)MY0_L?EQU0000H;片選MY0起始地址的低兩位字節(jié);*********************************************************ADD5555 ?EQU5555H*4;寫命令時(shí)用到的地址ADD2AAA?EQU2AAAH*4;寫命令時(shí)用到的地址ATDW EQU92h;存在的可讀寫數(shù)據(jù)段屬性值A(chǔ)TCE EQU98h;存在的只執(zhí)行代碼段屬性值Desc STRUCLimitL? DW0000H;段界限(BIT0—15)BaseL DW0000H;段基地址(BIT0—15)BaseM?DB00H;段基地址(BIT16-23)Attributes?DB00H;段屬性LimitH? DB00H;段界限(BIT16—19)(含段屬性的高4位)BaseH?DB00H;段基地址(BIT24-31)Desc ENDSDSEG SEGMENTUSE16GDT??LABELBYTEID1??DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>SCODE??DESC〈0FFFFH,CSEG,,ATCE,,〉DATAS ?DESC〈D1LEN,DSEG1,,ATDW,,> ;源數(shù)據(jù)段DATAD?DESC<0FFFFH,MY0_L,MY0_M,ATDW,01H,MY0_H>;目的數(shù)據(jù)段描述符GDTLEN??=$—GDTSCODE_SEL?=SCODE-GDTDATAS_SEL =DATAS-GDTDATAD_SEL?=DATAD—GDTID2 DESC〈0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>ID3 ?DESC〈0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>DSEG ENDSDSEG1?SEGMENTUSE16D1LEN ?=$-1DSEG1 ENDSCSEG? SEGMENTUSE16? ASSUMECS:CSEGSTART PROC???MOVAX,DATAD_SEL ?MOVDS,AXMOVESI,ADD5555;將AA送入5555HMOV[ESI],BYTEPTR0AAHMOVESI,ADD2AAA;將55寫入2AAAHMOV[ESI],BYTEPTR55HMOVESI,ADD5555;將80寫入5555HMOV[ESI],BYTEPTR80HMOVESI,ADD5555;將AA寫入5555HMOV[ESI],BYTEPTR0AAHMOVESI,ADD2AAA;將55寫入2AAAHMOV[ESI],BYTEPTR55HMOVESI,ADD5555;將10寫入5555HMOV[ESI],BYTEPTR20HINT0FFhSTARTENDPCLEN ?=$—1CSEG? ENDSEND START;不帶保護(hù)寫FLASH實(shí)驗(yàn)。386P;***********根據(jù)CHECK配置信息修改下列符號(hào)值*******************MY0_H EQU0D9H;片選MY0起始地址的最高位字節(jié)MY0_M(jìn)?EQU00H;片選MY0起始地址的次高位字節(jié)MY0_L EQU0000H;片選MY0起始地址的低兩位字節(jié);*********************************************************ADD5555 ?EQU5555H*4;寫命令時(shí)用到的地址ADD2AAA EQU2AAAH*4;寫命令時(shí)用到的地址ATDWEQU92h;存在的可讀寫數(shù)據(jù)段屬性值ATCEEQU98h;存在的只執(zhí)行代碼段屬性值Desc STRUCLimitL ?DW0000H;段界限(BIT0-15)BaseL DW0000H;段基地址(BIT0—15)BaseM DB00H;段基地址(BIT16—23)Attributes?DB00H;段屬性LimitH? DB00H;段界限(BIT16-19)(含段屬性的高4位)BaseH? DB00H;段基地址(BIT24—31)Desc ENDSDSEG SEGMENTUSE16GDT? LABELBYTEID1? DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>SCODE DESC〈0FFFFH,CSEG,,ATCE,,>DATAS DESC<D1LEN,DSEG1,,ATDW,,>?;源數(shù)據(jù)段DATAD DESC<0FFFFH,MY0_L,MY0_M,ATDW,01H,MY0_H〉;目的數(shù)據(jù)段描述符GDTLEN ?=$—GDTSCODE_SEL?=SCODE-GDTDATAS_SEL?=DATAS—GDTDATAD_SEL =DATAD-GDTID2 ?DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH>ID3??DESC<0FFFFH,0FFFFH,0FFH,0FFH,0FFH,0FFH〉DSEG ENDSDSEG1 SEGMENTUSE16D1LEN?=$-1DSEG1?ENDSCSEG ?SEGMENTUSE16 ??ASSUMECS:CSEGSTART PROC ? MOV?AX,DATAS_SEL ??MOV?DS,AX???MOV AX,DATAD_SEL ? MOV?ES,AX MOVCX,0080H MOVAL,7FH? MOV?DI,0000HLOOP1:MOVES:[DI],ALADDDI,4DEC
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州電力職業(yè)技術(shù)學(xué)院《Office高級(jí)應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州財(cái)經(jīng)職業(yè)學(xué)院《路基路面B》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽幼兒師范高等??茖W(xué)校《照明設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025湖北建筑安全員B證考試題庫附答案
- 2025廣東省安全員知識(shí)題庫及答案
- 貴陽康養(yǎng)職業(yè)大學(xué)《計(jì)量經(jīng)濟(jì)學(xué)基礎(chǔ)與應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州中醫(yī)藥大學(xué)《播音與主持基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025江西省安全員考試題庫及答案
- 2025安徽省安全員-C證考試(專職安全員)題庫附答案
- 廣州醫(yī)科大學(xué)《電影中的法律問題》2023-2024學(xué)年第一學(xué)期期末試卷
- 大班春季班級(jí)工作計(jì)劃范文
- 《新媒體導(dǎo)論》(第二版)-課件 第5、6章 新媒體的社交化:社會(huì)化媒體的發(fā)展及其應(yīng)用、新媒體的移動(dòng)化:新時(shí)空下的新傳播
- 2023-2024學(xué)年重慶市七校聯(lián)盟物理高二上期末統(tǒng)考試題含解析
- 人教PEP版(2023版)小學(xué)英語三年級(jí)上冊電子課本
- 擋土墻設(shè)計(jì)計(jì)算說明
- 殘疾人康復(fù)合作協(xié)議(殘聯(lián)與康復(fù)機(jī)構(gòu)協(xié)議書)
- 橋梁檢修通道施工方案
- 英文寫作課件:段落的寫作
- 6.8.3 數(shù)據(jù)分類實(shí)例-鳶尾花分類
- 魯科版(五四制)八年級(jí)上冊《第三章 光現(xiàn)象》章節(jié)練習(xí)(含解析)
- 產(chǎn)業(yè)園運(yùn)營合作協(xié)議
評(píng)論
0/150
提交評(píng)論