西北工業(yè)大學(xué)微機原理實驗課_第1頁
西北工業(yè)大學(xué)微機原理實驗課_第2頁
西北工業(yè)大學(xué)微機原理實驗課_第3頁
西北工業(yè)大學(xué)微機原理實驗課_第4頁
西北工業(yè)大學(xué)微機原理實驗課_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、王虎朝西北工業(yè)大學(xué)計算機實驗教學(xué)中心l實驗共20學(xué)時,分七次:軟件4次,硬件3次。l實驗報告完成后,以小班為單位按學(xué)號順序排放,在下次試 驗前兩天放在 B309-2。實驗報告每次批改三分之一。l實驗用計算機系統(tǒng)為Windows98,計算機C盤設(shè)置為保護方式,只有D盤對學(xué)生開放。因此,編寫的程序只能存在D盤。l1、實驗課程為單獨設(shè)課,實驗成績按百分制給出。l2、考核內(nèi)容及各部分比例: 實驗內(nèi)容完成質(zhì)量和進度占60%, 實驗報告占40%(批改兩次,每次10分,余5次每完成一次4分)。l3、學(xué)生實驗出勤和紀律(曠課一次扣15分,遲到一次扣110分,違紀一次扣15分。l4、有

2、事請假同學(xué)持假條,有病請假同學(xué)持醫(yī)院診斷證明,在微機原理實驗室上班且有空閑設(shè)備的情況下,取得上課老師允許后,即可進行實驗,實驗完成后寫一實驗內(nèi)容說明,請輔導(dǎo)老師簽字,交原帶課老師即可記入成績。l 利用Editplus和匯編相關(guān)軟件建立起基于Win98平臺的匯編語言集成調(diào)試環(huán)境,對我們學(xué)習(xí)匯編語言、開發(fā)匯編軟件將十分方便,它將我們學(xué)習(xí)匯編程序時的編輯、編譯、調(diào)試等工具集成于一體。對源程序的編譯和連接對目標程序的調(diào)試幫助文件源程序窗口寄存器窗口命令行窗口l F2:寄存器窗口的開/關(guān)l F3:在源程序方式和匯編方式之間切換l F4:切換到輸出屏幕l F5:執(zhí)行到下一個斷點或到程序結(jié)束(沒斷點)l F

3、6:激活各調(diào)試窗口 l F7:在光標所在行設(shè)置一個臨時斷點,并執(zhí)行到該行l(wèi) F8:執(zhí)行跟蹤命令l F9:在光標所在行設(shè)置或清除一個斷點(雙擊鼠標左鍵功能相同)l F10:執(zhí)行Program Step命令l PgUp:上卷一頁 PgDn:下卷一頁l Home:上卷到文件或命令緩沖區(qū)頂部 End: 下卷到文件或命令緩沖區(qū)底部本部分共進行4次實驗,實驗內(nèi)容如下: 1實驗一 BCD碼的運算 2實驗三 循環(huán)結(jié)構(gòu)程序 3實驗四 排序程序 4實驗五 分支程序 一實驗?zāi)康囊粚嶒災(zāi)康?1.熟悉在Editplus集成環(huán)境下建立、匯編、鏈接、調(diào)試和運行匯編語言程序的全過程。 2.掌握匯編語言程序結(jié)構(gòu)中數(shù)據(jù)段、堆棧段

4、、代碼段定義及內(nèi)存分配方法。 3.學(xué)會DEBUG調(diào)試程序主要命令的使用方法。 4.掌握用組合BCD碼表示數(shù)據(jù)的方法,并熟悉其加、減、乘、除運算。二實驗內(nèi)容 1.多位十進制數(shù)加法。 2.兩位十進制數(shù)乘法。三實驗要求 1.多位十進制數(shù)加法:在內(nèi)存中以DATA1和DATA2為首址,各分配5個字節(jié)單元,分別存入兩個8位組合BCD碼數(shù)據(jù)(低位在前),將兩數(shù)相加,結(jié)果送回到DATA2處。 2.兩位十進制數(shù)乘法:將被乘數(shù)和乘數(shù)以組合BCD碼形式分別存放于DATA1和DATA2定義的節(jié)單元中,經(jīng)乘法運算,乘積存入DATA3定義的兩個內(nèi)存單元中。 3.用DEBUG調(diào)試程序、查看運算結(jié)果,進行手工驗證;并且用DE

5、BUG修改數(shù)據(jù),重新執(zhí)行。BCD碼用4位二進制編碼表示一個十進制數(shù),又稱二十進制數(shù)。由于這4位二進制數(shù)的權(quán)值為8421,故也稱BCD碼為8421碼。在計算機里,用一個字節(jié)的低4位表示一位十進制數(shù)非組合BCD碼;用一個字節(jié)表示兩位十進制數(shù)組合BCD碼。非組合BCD碼uuuu 1001例:計算機里 79d 非組合BCD碼:uuuu0111 uuuu1001組合BCD碼0111 1001例:計算機里 79d 組合BCD碼:0111100116進制數(shù)0123456789ABCDEF二進制碼000000010010001101000101011001111000100110101011110011011

6、1101111BCD碼000000010010001101000101011001111000100110進制數(shù)0123456789在計算機里,所有的運算都是按二進制進行的,運算結(jié)果是二進制數(shù)(即十六進制數(shù)) 。為了把十六進制運算結(jié)果轉(zhuǎn)換成十進制,匯編語言中引進了組合BCD碼加法調(diào)整指令DAA和減法調(diào)整指令DAS。 DAA 加法的十進制調(diào)整指令 該指令之前要執(zhí)行ADD或ADC。調(diào)整方法:若AF為1,或AL中的低4位是十六進制的A F,則AL內(nèi)容加06H,AF置1; 若CF為1,或AL中的高4位是十六進制的A F,則AL內(nèi)容加60H,CF置1。 AF 輔助進位標志 CF進位標志AL AL中的十六

7、進制數(shù)調(diào)整為BCD格式 .model small .data data1 db 11h,22h,33h,44h,00h data2 db 99h,88h,77h,66h,00h .code .startup mov si,offset data1 ;設(shè)指針 mov di,offset data2 clc ;清進位 mov cx,5 ;設(shè)加法次數(shù)lop: mov al,si ;取第一加數(shù) adc al,di ;取第二加數(shù) daa ;十進制調(diào)整 mov di,al ;結(jié)果存入指定單元 inc si ;指針加1 inc diloop lop ;循環(huán) .exit end 流程圖:開始SI Data1首

8、址DI Data2首址清進位設(shè)加法次數(shù)十進制調(diào)整; 部分和回送指向下單元數(shù)AL 第一加數(shù)AL AL+第二加數(shù)+CFCX-1=0?結(jié)束YN開始BL 第一乘數(shù)BH 第一乘數(shù)分離出第一乘數(shù)的“個位”分離出第一乘數(shù)的“十位”第一乘數(shù)的“十位”移到“個位”后,再乘 10合成得到16進制的第一乘數(shù)CX 16進制的第一乘數(shù)BCD碼轉(zhuǎn)換成16進制數(shù)11AX 0清進位BL 第二乘數(shù)第二乘數(shù)做加法次數(shù)十進制調(diào)整AL與AH內(nèi)容交換AL AL+0+CFAL AL+BLAL與AH內(nèi)容交換十進制調(diào)整CX-1=0?NY存儲結(jié)果結(jié)束.model small.586.datadata1 db 34hdata2 db 56hda

9、ta3 dw 1 dup (?).code.startup mov bl,data1 ;第一乘數(shù)轉(zhuǎn)換成16進制數(shù) mov bh,bl and bh,0fh and bl,0f0h mov cL,4 shr bl,cL mov al,10 mul bl add al,bh movzx cx, al ;置加法次數(shù)計數(shù)器 mov bl,data2 ; 第二乘數(shù)做BCD 加法,加第一乘數(shù)次 mov ax,0clclop: add al,bl daa xchg ah,al adc al,0 daa xchg ah,al loop lop mov data3,ax;積送乘積存儲單元 nop nop nop

10、 .exit end一、實驗?zāi)康囊?、實驗?zāi)康?掌握循環(huán)結(jié)構(gòu)程序的設(shè)計、調(diào)試。二、實驗內(nèi)容二、實驗內(nèi)容l1 多字節(jié)無符號數(shù)加法。l2 設(shè)計一軟件延時器,并在屏幕上顯示軟件延時倒計時過程。三、實驗要求三、實驗要求l1多字節(jié)無符號加法:在DATAS中存放10個雙字節(jié)無符號數(shù), l 用循環(huán)結(jié)構(gòu)設(shè)計程序,通過程序運算,把這10個雙字節(jié)無符號 l 數(shù)相加,其和存入緊鄰加數(shù)之后的四個單元中。l2軟件延時器:做一延時約1秒的軟件延時器,在屏幕上按9、l 8、0 順序顯示軟件延時倒計時過程。l3. 修改實驗2,做一延時約1秒的軟件延時器,在屏幕上按99、l 98、00 順序顯示軟件延時倒計時過程。 循環(huán)程序的三

11、個組成部分: 循環(huán)初始狀態(tài)設(shè)置。設(shè)置循環(huán)次數(shù)、為循環(huán)體正常工作建立初始狀態(tài)等。 循環(huán)體。循環(huán)工作的主體,包含循環(huán)的工作部分和修改部分。循環(huán)的工作部分是為完成程序功能而設(shè)計的程序段;循環(huán)的修改部分是為保證每一次重復(fù)時,參加執(zhí)行的信息能發(fā)生有規(guī)律的變化而建立的程序段。 循環(huán)控制部分。選擇一個循環(huán)控制條件來控制循環(huán)的運行和結(jié)束。循環(huán)程序的結(jié)構(gòu):循環(huán)初始狀態(tài)循環(huán)控制條件循環(huán)體YN循環(huán)初始狀態(tài)循環(huán)體循環(huán)控制條件YNDO-WHILE結(jié)構(gòu)DO-UNTIL結(jié)構(gòu)子程序結(jié)構(gòu): procedure name PROC Attribute RET procedure name ENDP Attribute NEAR

12、調(diào)用程序和過程在同一個代碼段中FAR 調(diào)用程序和過程不在同一個代碼段中系統(tǒng)功能調(diào)用:系統(tǒng)功能調(diào)用是DOS為方便匯編語言編寫而提供的一組約80個功能調(diào)用的常用子程序,它分為設(shè)備管理、文件管理和目錄管理等幾類。DOS規(guī)定用軟中斷指令 INT 21H 進入各功能調(diào)用子程序的總?cè)肟冢贋槊總€功能調(diào)用規(guī)定一個功能號,以便進入相應(yīng)各自子程序的入口。系統(tǒng)功能調(diào)用的使用方法:指定的寄存器入口參數(shù)AH調(diào)用功能的功能號INT 21HEX1:從鍵盤輸入單字符:從鍵盤輸入單字符 MOV AH,01H ;1號功能調(diào)用 INT 21H將鍵盤輸入字符的ASCII碼送到 AL。EX2:從鍵盤輸入字符串:從鍵盤輸入字符串 BU

13、F DB 10 DUP(?) LEA DX,BUF MOV AH,0AH ;0A號功能調(diào)用 INT 21H將鍵盤輸入的字符串寫到 RAM 中去,擊回車鍵表示字符串結(jié)束。字符數(shù)與予留空間的關(guān)系為:少補零多丟失。EX3:輸出單字符:輸出單字符 MOV DL,M MOV AH,02H; 2號功能調(diào)用 INT 21H將 DL 中字符從屏幕上顯示出來。EX4:輸出字符串:輸出字符串 BUF DB Thank you MOV DX,OFFSET BUF MOV AH,09H;9號功能調(diào)用 INT 21H將 指定 RAM 緩沖區(qū)中的字符串從屏幕上顯示出來。 為字符串結(jié)束符。EX5:直接控制臺輸入/輸出單字符

14、 MOV DL,0FFH;DL=0FFH時, MOV AH,06H; 6號功能調(diào)用 INT 21H; 將鍵盤輸入字符 送到 AL 中。 MOV DL,M; DL 0FFH時, MOV AH,06H; 6號功能調(diào)用 INT 21H; 將 DL 中字符送到 屏幕上顯示。 .MODEL SMALL.MODEL SMALL .586 .586 .DATA .DATADATAS DW 1111H,2222H,3333H,4444H,5555H DATAS DW 1111H,2222H,3333H,4444H,5555H DW 6666H,7777H,8888H,9999H,0AAAAH DW 6666H

15、,7777H,8888H,9999H,0AAAAHRESULT DD 1 DUP(?) RESULT DD 1 DUP(?) .CODE.CODE.STARTUP.STARTUP MOV SI,OFFSET DATAS MOV SI,OFFSET DATAS;設(shè)指針 MOV CX,10MOV CX,10;累加次數(shù) MOV EAX,0MOV EAX,0;清累加器LOP: MOV BX,SILOP: MOV BX,SI;取加數(shù)到BX MOVZX EBX,BXMOVZX EBX,BX ;將BX擴展成32位 ADD EAX,EBXADD EAX,EBX; 加 INC SIINC SI;改指針 INC

16、SIINC SI LOOP LOPLOOP LOP;循環(huán)加 MOV RESULT,EAXMOV RESULT,EAX;存結(jié)果 .EXIT.EXIT ENDEND開始SI DATAS的首址CX 累加次數(shù)EAX 0清進位BX SI所指加數(shù)將BX擴展為32位EAX EAX+EBX+CFSI 指向下一加數(shù)CX-1=0?NY存結(jié)果 結(jié)束.model small.data data db 20h,20h,20h,20h,20h,39h,0dh,$.code.startupmov cx,0Ah; 設(shè)循環(huán)次數(shù)lop:mov ah,09h;顯示功能調(diào)用lea dx,dataint 21hcall near pt

17、r delay;調(diào)用延時子程序dec data+5;修改顯示數(shù)字loop lop.exitDelay proc near uses cx ;延時子程序 mov bx,06ffh ;設(shè)第二時常數(shù)Delay1 :mov cx,0h loop $ ;自身循環(huán)CX次 dec bx ;第二時常數(shù)減1 jnz delay1 ;不為零循環(huán) retDelay endpend開始CX 循環(huán)次數(shù)字符串顯示功能調(diào)用延時子程序調(diào)用顯示數(shù)字修改CX-1=0?NY結(jié)束主程序流程:主程序流程:延時子程序流程:延時子程序流程:延時子程序定義BX 第二時常數(shù)CX 第一時常數(shù)CX-1=0?NYBX-1BX=0?NY子程序返回子程

18、序結(jié)束關(guān)鍵詞一實驗?zāi)康囊粚嶒災(zāi)康?1學(xué)習(xí)無符號數(shù)比較大小指令; 2掌握多重循環(huán)編程方法; 3掌握匯編語言編寫排序程序的思路和方法。二實驗內(nèi)容二實驗內(nèi)容 1單字節(jié)無符號數(shù)排序。 2去極值濾波。三實驗要求三實驗要求 1單字節(jié)無符號數(shù)排序:DATANUM單元開始存放單字節(jié)無符號數(shù),表示要排序數(shù)據(jù) 的個數(shù),DATAS單元開始存放要排序的數(shù)據(jù),數(shù)據(jù)個數(shù)至少10個,程序運行之后,這些數(shù)據(jù)按照由小到大的順序仍然存放于DATAS單元開始的位置。 2 去極值濾波:某控制系統(tǒng)為了抗干擾,采用去極值濾波法處理采集數(shù)據(jù),取連 續(xù)6個A/D采樣值(12位雙字節(jié),低12位),要求去掉最大值和最小值,將 余下4個數(shù)求平均值

19、,用該平均值代表當前時刻系統(tǒng)狀態(tài)的真值。試編一程序完 成這個濾波過程。 3. 擴展1:對實驗2的排序結(jié)果,在屏幕上顯示出來屏幕上顯示出來。 4。擴展1:對實驗2中預(yù)排序的數(shù)用鍵盤輸入鍵盤輸入,排序結(jié)果在屏幕上顯示出來屏幕上顯示出來。流程圖:開始BL 數(shù)據(jù)個數(shù)-1CX BL擴展數(shù)據(jù)指針 SI 置 0累加器 前數(shù) 前數(shù)與后數(shù)比較前數(shù)后數(shù)前、后數(shù)交換數(shù)據(jù)指針 SI 指向下一數(shù)數(shù)據(jù)指針 SI 指向下一數(shù)YNBL-1CX-1=0?CX-1=0?NNYYZF=1?N結(jié)束Y .model small .586 .data datanum db 10 datas db 21h,13h,4h,5h,7h db

20、6h,8h,20h,9h,11h .code .startup mov bl,datanum dec bl lop0: movzx cx,bl mov si,0 lop: mov al,datassi cmp al,datassi+1 ja jh inc si loop lop jmp next jh: xchg al,datassi+1 mov datassi,al inc si loop lopnext: dec bl jz finish jmp lop0finish: nop .exit end開始調(diào)排序子程序?qū)?shù)據(jù)進行排序?qū)ε磐晷虻臄?shù)據(jù)掐頭去尾求和求均值保存結(jié)果結(jié)束 .model sm

21、all .586 .datadatanum db 6datasdw 0123h,0abch,0234h dw 0345h,0456h,0567h .code.startupcall px ;排序mov si,offset datas+2 ;掐頭去尾送指針mov cx,4 ;送累加次數(shù)clc ;清進位mov ax,0 ;取首數(shù)qh: adc ax,si ;累加inc siinc siloop qhshr ax,2 ;除4mov datas,ax ;存結(jié)果到DATAS首位 .exitpxproc near mov bl,datanum;取字長 dec bllop0: movzx cx,bl;送比較

22、次數(shù) mov si,0lop:mov ax,datassi;送前數(shù)cmp ax,datassi+2;與后數(shù)比較 ja jh;前大于后,轉(zhuǎn)交換inc siinc si;指針加 1 loop lop;循環(huán)比較 jmp next;一輪排序完jh: xchg ax,datassi+2;交換 mov datassi,ax inc siinc si loop lopnext: dec bl;修改比較次數(shù) jz finish jmp lop0finish: nop;結(jié)束 retpx endp end一、實驗?zāi)康囊?、實驗?zāi)康?掌握分支程序編程方法,復(fù)雜分支程序的查表法等。二、實驗內(nèi)容二、實驗內(nèi)容 1、 學(xué)生課

23、程成績分段統(tǒng)計。 2、 鍵盤及屏幕顯示功能調(diào)用。三、實驗要求三、實驗要求 1、 學(xué)生課程成績分段統(tǒng)計:用單字節(jié)表示每個學(xué)生的學(xué)號,學(xué)生的課程成績用兩位十進制數(shù)表示(最低0分,最高99分),規(guī)定0F0H表示作弊,0F1H表示缺考,0FFH為一組學(xué)生成績的結(jié)束符。學(xué)生成績在內(nèi)存的存放形式為“學(xué)號,成績”,每個學(xué)生占兩個字節(jié),從內(nèi)存SCORE為首址開始存放。要求學(xué)生人數(shù)不少于10個,試編程序,按0 9、10 19、20 29、80 89、90 99及作弊、缺考等12種情況把學(xué)生的課程成績進行分段統(tǒng)計,將統(tǒng)計結(jié)果存入以COUNT為首址的12個單元中。 2、試編一程序掃描鍵盤,當B鍵按下時,在屏幕上顯示

24、09循環(huán)計數(shù);S鍵按下時停止計數(shù);再按B鍵繼續(xù)計數(shù)過程。E鍵按下時退出程序。 3、用DEBUG調(diào)試程序預(yù)置數(shù)據(jù)和查看程序運行結(jié)果,以驗證程序正確性。 開始設(shè)置學(xué)號、成績指針取學(xué)號取成績是結(jié)束標志?取十分位,并將十分值擴展為16位送DI,對DI所指統(tǒng)計區(qū)段統(tǒng)計值加1是作弊?是缺考?修改指針CX-1=0?11CX 統(tǒng)計上限作弊統(tǒng)計區(qū)段統(tǒng)計值加1缺考統(tǒng)計區(qū)段統(tǒng)計值加1結(jié)束YYYYNNNN .model small .586 .data score db 1,10h,2,20h,3,30h,4,40h,5,50h,6,77h,7,70h db 8,80h,9,90h,10h,08,11h,0f0h,1

25、2h,0f1h,0ffhcount db 12 dup(?) .code .startup mov cx,30;送統(tǒng)計上限 mov si,0;SCORE 統(tǒng)計指針statistic: mov al,scoresi ;取學(xué)號 cmp al,0ffh ;判是否為結(jié)束 je sta_end;轉(zhuǎn)統(tǒng)計結(jié)束 mov bl,scoresi+1 ;取成績 cmp bl,0f0h;是否作弊 je fake;是,轉(zhuǎn)作弊處理 cmp bl,0f1h;是否缺考 je miss;是,轉(zhuǎn)缺考處理 shr bl,4;取十分位 movzx di,bl ;將十分值擴展為16位送DI inc countdi ;相應(yīng)區(qū)段統(tǒng)計值加1

26、down: inc si ;改指針 inc si loop statistic;循環(huán)sta_end:nop;結(jié)束 .exitfake: mov di,10;作弊處理 inc countdi jmp downmiss: mov di,11;缺考處理 inc countdi jmp down end開始顯示提示信息置處理指針為“停止”調(diào)延時、鍵盤掃描程序有鍵動?轉(zhuǎn)處理指針處B 鍵?S 鍵?E 鍵?轉(zhuǎn)處理指針處結(jié)束置處理指針為“計數(shù)”置處理指針為“停止”NYYYYNNN處理指針為“計數(shù)”處理指針為“停止”計數(shù)顯示延時、鍵盤掃描程序子程序定義BX 第二時常數(shù)CX 第一時常數(shù)CX-1=0?NYBX-1B

27、X=0?NY子程序返回監(jiān)測鍵動有鍵動?做鍵動標志BX=1NY.model small.dataMess1 db press b button - count,0dh,0ahmess2 db press s button - stop,0dh,0ahMess3 db press e button - exit,0dh,0ah,$count db 20h,20h,20h,20h,20h,30h,0dh,$.code.startupmov ah,09h;顯示提示信息mov dx,offset mess1int 21hmov si,stop;設(shè)處理指針scan: call near ptr delay

28、 ;調(diào)延時、鍵掃程序 or bx,bx;判有無鍵動 jnz scan1;有鍵動,轉(zhuǎn)鍵處理 jmp si;無鍵動,轉(zhuǎn)當前處理程序scan1: cmp al,b ;鍵處理程序 je b_proc cmp al,s je s_proc cmp al,e je e_proc call delay jmp sib_proc: mov si,count_;B鍵處理 jmp scans_proc: mov si,stop;S鍵處理 jmp scane_proc: nop;E鍵處理 nop .exitcount_: inc count+5;修改顯示數(shù)字 mov al,3ah;比較超限 cmp al,count

29、+5 ja down;若不超限,調(diào)顯示 mov count+5,30h;超限,設(shè)啟始值down: mov ah,09h;顯示功能調(diào)用 lea dx,count int 21h jmp scanstop: jmp scan nopDelay proc near uses cx;延時子程序 mov bx,380h;設(shè)第二時常數(shù)delay1: mov cx,0h loop $;自身循環(huán)CX次 mov dl,0ffh;監(jiān)測鍵動 mov ah,06h int 21h jnz key_ret ;若有鍵動,延時終止,轉(zhuǎn)鍵處理 dec bx;第二時常數(shù)減1 jnz delay1;不為零循環(huán) jmp delay

30、_retkey_ret: mov bx,1;做鍵動標志delay_ret: retDelay endp end本部分共進行3次實驗,實驗內(nèi)容如下:1 實驗六 并行接口技術(shù)實驗 2 實驗七 8254定時/計數(shù)器實驗3 實驗九 A/D轉(zhuǎn)換實驗 (下面根據(jù)實驗臺實物介紹實驗臺)特別說明:特別說明:為了方便實驗,實驗臺設(shè)計時已將實驗用相關(guān)器件的地 址線、數(shù)據(jù)總線及除片選(CS)外的控制線連接到位,并在每一 個實驗電路附近予留有若干信號連線插孔(或插針排)。實驗時 只要將相應(yīng)插孔用單股導(dǎo)線(或相應(yīng)插針排用扁平電纜)對應(yīng)相 連即可組成完整的實驗電路。在給出的實驗電路圖中,線路所 帶小圓圈即表示連線插孔。各

31、芯片的片選(CS)可用單股導(dǎo)線連 接,也可通過將8位鉛筆開關(guān)的對應(yīng)位置ON連接。硬件實驗注意事項:硬件實驗注意事項: 1.在實驗臺斷電條件下,才能用單股導(dǎo)線(或扁平電纜)連接電路; 2.線路連接完成、檢查確認沒有錯誤后,再開通實驗臺電源; 3.用單股導(dǎo)線連接電路時,要將單股導(dǎo)線線頭整直,并確認線頭沒有 斷裂; 4.實驗完成后,關(guān)斷實驗臺電源,再抓住導(dǎo)線(或扁平電纜)的根 部,一根一根垂直拔掉連接導(dǎo)線(或扁平電纜) ,并把連接導(dǎo)線 、電纜整好放入線盒。一實驗?zāi)康囊粚嶒災(zāi)康?1.掌握8255A并行接口的基本使用方法。 2.理解數(shù)碼管掃描顯示原理,學(xué)習(xí)數(shù)碼管掃描顯示方法。二實驗內(nèi)容二實驗內(nèi)容 1.用

32、8255A作為并行接口,從8255A的一個端口輸入開關(guān)量到CPU或內(nèi)存,再將這一數(shù)據(jù)通過數(shù)據(jù)總線和8255A的另一個端口掃描輸出到數(shù)碼管。設(shè)8255A的A口為輸入方式,接邏輯電平開關(guān);8255A的B口為輸出方式,通過MC1413驅(qū)動器接數(shù)碼管的位選端;數(shù)碼管的字劃端通過74HC573與數(shù)據(jù)總線相連;邏輯電平開關(guān)K1K6按16編號。試編一程序,用一位數(shù)碼管指示出邏輯電平開關(guān)為“0”狀態(tài)的開關(guān)編號,即當1號邏輯電平開關(guān)為“0”時,所選數(shù)碼管顯示“1”,2號邏輯電平開關(guān)為“0”時,數(shù)碼管顯示“2”,6號邏輯電平開關(guān)為“0”時,數(shù)碼管顯示“6”。所有邏輯開關(guān)的初始狀態(tài)為“1”。 2.設(shè)8255A的B口

33、為輸出方式,通過MC1413驅(qū)動器接數(shù)碼管的位選端;數(shù)碼管的字劃端通過74HC573與數(shù)據(jù)總線相連。試編一動態(tài)掃描程序,讓6個數(shù)碼管“同時”點亮,顯示“1、2、3、4、5、6”。三實驗電路及設(shè)計三實驗電路及設(shè)計 1.實驗電路圖 2.實驗連線(1)邏輯電平開關(guān)輸出孔K1K6對應(yīng)連接到8255A的PA0PA5;(2)8255A的PB0PB5對應(yīng)連接到數(shù)碼管的位選端SM0SM5;(3)數(shù)據(jù)總線D0、D1、D2、D3、D4、D5、D6、D7對應(yīng)連接到數(shù)碼 管的字劃端a、b、c、d、e、f、g、dp;(4)8255A的片選端CS8255連到譯碼控制單元的 CS1( 0C800H);(5)74HC573的

34、使能端smglt (CS573)連到譯碼控制單元的 SMGLT (C820H)。3.8255A的端口地址 PA口:C800H,PB 口:C801H,PC口:C802H,控制寄存器:C803H 。4.數(shù)碼管編碼表 “0”-3FH “1”-06H “2”-5BH “3”-4FH “4”-66H “5”-6DH “6”-7DH “7”-07H “8”-7FH “9”-6FH “A”-77H “B”-7CH “C”-39H “D”-3EH “E”-79H “F”-71H 數(shù)碼管(共陰):DPDP共陰地數(shù)字字型碼5不閉合,數(shù)碼管就點不亮多個數(shù)碼管掃描顯示:多個數(shù)碼管掃描顯示:多個數(shù)碼管掃描顯示:限流電阻

35、鎖存器JM3、JM2、JM1誰為,誰連接的數(shù)碼管就顯示鎖存器當前鎖存的值所謂掃描顯示是:對個數(shù)碼管:.給鎖存器送第個數(shù)碼管顯示內(nèi)容,而后第個數(shù)碼管公共端接低,延時.給鎖存器送第個數(shù)碼管顯示內(nèi)容,而后第個數(shù)碼管公共端接低,延時.給鎖存器送第個數(shù)碼管顯示內(nèi)容,而后第個數(shù)碼管公共端接低,延時第步后,再從開始,周而復(fù)始。那么, JM3、JM2、JM1是互斥的了!連接數(shù)據(jù)總線D7D0 驅(qū)動器74HC573鎖存器A口 K6 K5 K4 K3 K2 K1 開關(guān)ABCDEFGDP限流電阻DbusD7D08255MC1413驅(qū)動器B口COMDbusD7D0SMGLT CS8255A口開始初始化8255點亮一位數(shù)

36、碼管讀鍵盤有鍵?讀開關(guān)量,并取反位掃描,確定開關(guān)號取對應(yīng)開關(guān)號的字型碼輸出對應(yīng)的數(shù)字結(jié)束; CS8255 - CS1; CS573 - SMGLT; k1.k6 - PA0.PA5; SM0.SM5-PB0.PB5; D0.D7-A.B.DP.model small .586 p8255 equ 0C800h ;片選地址 p_ctl equ 90h ;8255控制字 s_l_a equ 0C820h ;573鎖存地址.datatable db 3fh,06h,5bh,4fh,66h ;0,1,2,3,4字型 db 6dh,7dh,07h,7fh,6fh ;5,6,7,8,9 .code .st

37、artup mov dx , p8255+3 ;8255初始化 mov al , p_ctl out dx,al mov dx , p8255 +1 ;點亮數(shù)碼管SM0 mov al, 01h out dx,allop: mov ah,06h ;鍵入“e”結(jié)束執(zhí)行 mov dl,0ffh int 21h cmp al,e je scan_end mov dx,p8255 ;讀開關(guān) in al,dx not al movzx ax,al bsf bx,ax ;從ax低位起掃描,將第一個 ; 為1的位號存BXxchg al,blmov bx,offset table ;讀字型碼xlat ;查表,B

38、X+AL送ALmov dx,s_l_a;輸出對應(yīng)的數(shù)字out dx,aljmp lop ;循環(huán)掃描scan_end: .exit end限流電阻DbusD7D08255MC1413驅(qū)動器B口COMDbusD7D0SMGLTCS825574HC573鎖存器COMCOMCOMCOMCOMABCDEFGDP開始初始化查表取顯示數(shù)字字型碼顯示字型碼送鎖存器(輸出)取對應(yīng)數(shù)碼管字位、并輸出+(下一掃描位置)掃描位數(shù)?調(diào)延時初始掃描位置(顯示數(shù)字)初始掃描位置讀鍵盤有鍵動?結(jié)束延時程序流程見前; CS8255 - CS1; CS573 - SMGLT; SM0.SM5-PB0.PB5; D0.D7-A.B

39、.DP; .model small p8255 equ 0C800H ;片選地址 p_ctl equ 10010000B;8255控制字s_l_a equ 0C820H ;573鎖存地址.datatable db 3FH,06H,5BH,4FH ,66H ;0,1,2,3,4 db 6DH,7DH,07H,7FH ,6FH ;5,6,7,8,9 .code .startup mov dx,p8255+3;發(fā)控制字 mov al,p_ctlout dx,almov cl,1;設(shè)掃描位置lop:mov al,cl;取顯示數(shù)字mov bx,offset table;讀字型碼xlatmov dx,s_

40、l_a;輸出字型碼out dx,al mov al,10000000brol al,cl ;左循環(huán)移位 mov dx,p8255+1out dx,al ;送B口控制的數(shù)碼管位inc clcmp cl,6jbe down;若顯示位置大于等于6,;返回啟始位置1mov cl,1down:call delaymov ah,06;判有鍵動,跳出循環(huán)mov dl,0ffhint 21hjnz scan_endjmp lop;循環(huán)掃描scan_end:nop.exit delayproc near uses cx;延時子程序 mov bx,02hdelay1:mov cx,0h loop $ dec bx

41、 jnz delay1 retdelayendp end一實驗?zāi)康囊粚嶒災(zāi)康?1.掌握8254定時/計數(shù)器的基本使用方法。 2.了解8254定時/計數(shù)器利用級連擴大計數(shù)范圍的方法。 3.了解多I/O芯片協(xié)同工作的原理和方法。二實驗內(nèi)容二實驗內(nèi)容 1.將8254定時器0設(shè)置為方式2(分頻),定時器1設(shè)置為方式3(方波),定時器0的CLK0端接1M時鐘,定時器0的輸出脈沖作為定時器1的時鐘輸入。將定時器1的輸出脈沖接在一個LED燈上或風(fēng)鳴器上。編程使8254工作,觀察燈的狀態(tài)或風(fēng)鳴器聲響。 2.用8254做秒信號源,用8255A控制交通燈的紅綠變化,完成一交通燈控制系統(tǒng),使每10秒切換一次通行方向

42、。三實驗電路及設(shè)計三實驗電路及設(shè)計 1 .實驗電路圖 2.“實驗內(nèi)容1”實驗連線 (1)8254的GATE0、GATE1接高電平; (2)8254 T0的CLK0接1M時鐘孔; (3)8254 T1的CLK1接T0的OUT0; (4)8254的片選端CS8254連到譯碼控制單元的 CS2; (5)8254 T1的OUT1接LED燈或風(fēng)鳴器的輸入端BJ孔。 3.“實驗內(nèi)容2”實驗連線 以下連線假設(shè)8255A的A口為輸入方式、B口為輸出方式,8255A的PA1 連接8254 T1的OUT1,8255A的B口控制交通燈的八只LED燈。 (1)連線同“實驗內(nèi)容1”的(1)(4); (2)8254 T1

43、的OUT1接8255A的PA1孔; (3)8255A的PB7PB0對應(yīng)連接到交通燈的 RW、GW、RN、GN、RE、GE、RS、GS燈 ; (4)8255A的片選端CS8255連到譯碼控制單元的CS1; (5) JTD接高電平。 4.8254和8255A的端口地址 8254的端口地址: 定時器0分頻系數(shù)寄存器 0C804H , 定時器1分頻系數(shù)寄存器 0C805H , 定時器2分頻系數(shù)寄存器 0C806H , 控制寄存器 0C807H 。 8255A的端口地址: PA口:0C800H ,PB 口:0C801H,PC口:0C802H, 控制寄存器:0C803H。 8254OUT GATE CLK

44、T0DbusD7D0CS8254CLK =1MHzOUT GATE CLKT1OUT GATE CLKT2Vcc開始初始化T0初始化T裝T0低字節(jié)計數(shù)初值結(jié)束裝T0高字節(jié)計數(shù)初值裝T低字節(jié)計數(shù)初值裝T高字節(jié)計數(shù)初值;cs8254-CS2;clk0 - 1M;out0 -CLK1;out1 - BJ 或 L1;gate0 - K1,令k1=1;gate1 - K2,令k2=1.MODEL SMALL CS8254 EQU 0c804H T0_CTL EQU 00110100B ; 對T0 兩次讀寫,先低后;高。 T0為方式2(分頻) T1_CTL EQU 01110110B ;對T1 兩次讀寫,

45、先低;后高。 T1為方式3(方波).DATA T0_DATA DB 0FFH,040H T1_DATA DB 0FFH,0.CODE.STARTUPMOV DX,CS8254+3 ;初始化T0MOV AL,T0_CTLOUT DX,ALMOV DX,CS8254 ;給T0低字節(jié)裝計數(shù)初值MOV AL,T0_DATAOUT DX,ALMOV AL,T0_DATA+1 ;給T0高字節(jié)裝計數(shù)初值OUT DX,ALMOV DX,CS8254+3 ;初始化T1MOV AL,T1_CTLOUT DX,ALMOV DX,CS8254+1MOV AL,T1_DATA ;給T1低字節(jié)裝計數(shù)初值OUT DX,AL

46、MOV AL,T1_DATA+1 ;給T1高字節(jié)裝計數(shù)初值OUT DX,AL.EXITEND開始8254 T0 初始化給8254 T0裝初值8254 T 初始化給8254 T裝初值8255初始化為A口入、B口出8255 B口輸出方向初值讀8255 PA1、測試8255 PA1PA1?讀8255 PA1、測試8255 PA1PA1控制換向8255 B口輸出方向值檢查鍵盤有鍵盤動?結(jié)束;cs8254-CS2;clk0 - 1M;out0 - clk1;out1 - 8255 的 PA1;gate0 - k1,令k1=1;gate1 - k2,令k2=1;JTDCS- k3,令k3=1”;JTD-k

47、4,令k3=1”;cs8255 - CS1;8255(PB7 . PB0)- (RW、GW、RN、GN、RE、; GE、RS、GS ) .MODEL SMALLT8254 EQU 0c804HT0_CTL EQU 00110100BT1_CTL EQU 01110110Bp8255 equ 0c800H ;片選地址p_ctl equ 10010000B;8255控制字.DATAT0_DATA DB 0FFH,040HT1_DATA DB 0FFH,0dir_data DB 5ah.CODE.STARTUPMOV DX,T8254+3 ;8254 T0 初始化MOV AL,T0_CTLOUT D

48、X,ALMOV DX,T8254 ;給8254 T0裝初值MOV AL,T0_DATAOUT DX,ALMOV AL,T0_DATA+1OUT DX,ALMOV DX,T8254+3 ;8254 T1初始化MOV AL,T1_CTLOUT DX,ALMOV DX,T8254+1 ;給8254 T1裝初值MOV AL,T1_DATAOUT DX,ALMOV AL,T1_DATA+1OUT DX,ALmov dx,p8255+3;8255為A口入,B口出 mov al,p_ctlout dx,almov dx,p8255+1;8255 B口輸出方向初值mov al,dir_dataout dx,a

49、lbit_test0:;掃描上升沿mov dx,p8255in al,dxtest al,2 ;測試8255 PA1,等待PA1=0jz bit_test1 ;PA1=0轉(zhuǎn)jmp bit_test0 ;PA1=1再測bit_test1:mov dx,p8255in al,dxtest al,2 ; 測試8255 PA1,等待PA1=1jnz dir_ctl ;有上升沿轉(zhuǎn)jmp bit_test1 ;上升沿沒到再測dir_ctl:mov al,dir_data ;方向控制not al ;換向mov dir_data,almov dx,p8255+1 ;8255 B口輸出方向值out dx,alm

50、ov ah,06h ;檢查鍵盤 mov dl,0ffhint 21hor al,al ;有鍵盤輸入轉(zhuǎn)jnz dir_endjmp bit_test0dir_end:.EXITEND一實驗?zāi)康囊粚嶒災(zāi)康?學(xué)習(xí)模/數(shù)轉(zhuǎn)換器使用方法,理解模/數(shù)轉(zhuǎn)換原理。二實驗內(nèi)容二實驗內(nèi)容 1給A/D轉(zhuǎn)換器輸入一可調(diào)節(jié)的電壓信號,假設(shè)該輸入信號為一水塔的水位高度信號,請結(jié)合應(yīng)用8255A接口芯片,編程完成以下功能:當水位低于PL時開報警、并打開水泵(點亮一指示燈),水位在PLPH之間時關(guān)閉報警,水位高于PH時開報警、并關(guān)閉水泵(指示燈熄滅)。設(shè)PH=0B4H (約3.5V),PL=66H (約2.0V)。 2用A/D轉(zhuǎn)換器對電壓信號V4連續(xù)采集4次,求出均值,放入指定單元;并把采集均值轉(zhuǎn)換為電壓,通過8255在數(shù)碼管上顯示。三實驗電路及設(shè)計三實驗電路及設(shè)計 1.實驗電路圖.“實驗內(nèi)容1”實驗連線 以下連線假設(shè)8255A的A口為輸出方式,8255A的PA6控制一LED燈、8

溫馨提示

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

評論

0/150

提交評論