![新微機原理實驗課演示文稿版_第1頁](http://file4.renrendoc.com/view/6bf43cd5ba8bca3d39a3e481673d2265/6bf43cd5ba8bca3d39a3e481673d22651.gif)
![新微機原理實驗課演示文稿版_第2頁](http://file4.renrendoc.com/view/6bf43cd5ba8bca3d39a3e481673d2265/6bf43cd5ba8bca3d39a3e481673d22652.gif)
![新微機原理實驗課演示文稿版_第3頁](http://file4.renrendoc.com/view/6bf43cd5ba8bca3d39a3e481673d2265/6bf43cd5ba8bca3d39a3e481673d22653.gif)
![新微機原理實驗課演示文稿版_第4頁](http://file4.renrendoc.com/view/6bf43cd5ba8bca3d39a3e481673d2265/6bf43cd5ba8bca3d39a3e481673d22654.gif)
![新微機原理實驗課演示文稿版_第5頁](http://file4.renrendoc.com/view/6bf43cd5ba8bca3d39a3e481673d2265/6bf43cd5ba8bca3d39a3e481673d22655.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、微機原理實驗課1MASM 611使用簡要說明 Microsoft宏匯編程序MASM611有建立匯編語言所需的全部工具,我們簡要介紹其集成開發(fā)軟件PWB。PWB是集匯編程序的編輯、編譯、連接、調(diào)試、運行于一體的綜合軟件。 運行 PWB 在計算機 C:盤上具體使用方法結(jié)合實例介紹 MASM611文件夾BINR文件夾運行程序PWB2軟件實驗部分 本部分共進行4次實驗,實驗內(nèi)容如下: 1實驗一 BCD碼的運算 2實驗三 循環(huán)結(jié)構(gòu)程序 3實驗四 排序程序 4實驗五 分支程序 3實驗一 BCD碼的運算 一實驗?zāi)康?1.熟悉在MASM611集成環(huán)境下建立、匯編、鏈接、調(diào)試和運行匯編語言程序的全過程。 2.掌
2、握匯編語言程序結(jié)構(gòu)中數(shù)據(jù)段、堆棧段、代碼段定義及內(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)試程序、查看
3、運算結(jié)果,進行手工驗證;并且用DEBUG修改數(shù)據(jù),重新執(zhí)行。4關(guān)于BCD碼、十六進制數(shù)的說明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碼:01111001在計算機里,所有的運算都是按二進制進行的,運算結(jié)果是二進制數(shù)(即十六進制數(shù)) 。為了把十六進制運算
4、結(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中的十六進制數(shù)調(diào)整為BCD格式5多位十進制數(shù)加法 .model small .data data1 db 11h,22h,33h,44h,00h data2 db 99h,88h,77h,66h,00h .code .startup mo
5、v 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首址DI Data2首址清進位設(shè)加法次數(shù)十進制調(diào)整; 部分和回送指向下單元數(shù)AL 第一加數(shù)AL AL+第二加數(shù)CX-1=0?結(jié)束YN6兩位十進制數(shù)乘法.model small.586.datadata1 db 34
6、hdata2 db 56hdata3 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,0 clclop: add al,bl daa xchg ah,al adc al,0 daa xchg ah,al loop lop mov data3,ax;積送乘積
7、存儲單元 nop nop nop .exit end7兩位十進制數(shù)乘法流程圖:開始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é)束8一、實驗?zāi)康?掌握循環(huán)結(jié)構(gòu)程序的設(shè)計、調(diào)試。二、實驗內(nèi)容1 多字節(jié)無符號數(shù)加法。2 設(shè)計一軟件延時器,并在屏幕上顯示軟件延時倒計時過程。三、實驗要求1
8、多字節(jié)無符號加法:在DATAS中存放10個雙字節(jié)無符號數(shù), 用循環(huán)結(jié)構(gòu)設(shè)計程序,通過程序運算,把這10個雙字節(jié)無符號 數(shù)相加,其和存入緊鄰加數(shù)之后的四個單元中。2軟件延時器:做一延時約1秒的軟件延時器,在屏幕上按9、 8、0順序顯示軟件延時倒計時過程。 實驗三 循環(huán)結(jié)構(gòu)程序9有關(guān)問題的說明循環(huán)程序的三個組成部分: 循環(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)控制條
9、件來控制循環(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)10子程序結(jié)構(gòu): procedure name PROC Attribute RET procedure name ENDP Attribute NEAR 調(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ī)
10、定一個功能號,以便進入相應(yīng)各自子程序的入口。系統(tǒng)功能調(diào)用的使用方法:指定的寄存器入口參數(shù)AH調(diào)用功能的功能號INT 21H11EX1:從鍵盤輸入單字符 MOV AH,01H ;1號功能調(diào)用 INT 21H將鍵盤輸入字符的ASCII碼送到 AL。EX2:從鍵盤輸入字符串 BUF 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 中字符從屏幕上顯示
11、出來。EX4:輸出字符串 BUF DB Thank you MOV DX,OFFSET BUF MOV AH,09H;9號功能調(diào)用 INT 21H將 指定 RAM 緩沖區(qū)中的字符串從屏幕上顯示出來。 為字符串結(jié)束符。EX5:直接控制臺輸入/輸出單字符 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 中字符送到 屏幕上顯示。12多字節(jié)無符號數(shù)加法 .MODEL SMALL .586 .DATADATAS D
12、W 1111H,2222H,3333H,4444H,5555H DW 6666H,7777H,8888H,9999H,0AAAAHLen equ $-datasRESULT DD 1 DUP(?) .CODE.STARTUP MOV SI,OFFSET DATAS;設(shè)指針 MOV CX,len/2;累加次數(shù) MOV EAX,0;清累加器 CLCLOP: MOV BX,SI;取加數(shù)到BX MOVZX EBX,BX ;將BX擴展成32位 ADC EAX,EBX; 加 INC SI;改指針 INC SI LOOP LOP;循環(huán)加 MOV RESULT,EAX;存結(jié)果 .EXIT END開始SI DA
13、TAS的首址CX 累加次數(shù)EAX 0清進位BX SI所指加數(shù)將BX擴展為32位EAX EAX+EBX+CFSI 指向下一加數(shù)CX-1=0?NY存結(jié)果 結(jié)束13軟件延時器.model small.data data db 20h,20h,20h,20h,20h,39h,0dh,$.code.startupmov cx,09h; 設(shè)循環(huán)次數(shù)lop:mov ah,09h;顯示功能調(diào)用lea dx,dataint 21hcall near ptr delay;調(diào)用延時子程序dec data+5;修改顯示數(shù)字loop lop.exitDelay proc near uses cx ;延時子程序 mov
14、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子程序返回子程序結(jié)束關(guān)鍵詞14實驗四 排序程序 一實驗?zāi)康?1學(xué)習(xí)無符號數(shù)比較大小指令; 2掌握多重循環(huán)編程方法; 3掌握匯編語言編寫排序程序的思路和方法。二實驗內(nèi)容 1單字節(jié)無符號數(shù)排序。 2去極值濾
15、波。三實驗要求 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ù)求平均值,用該平均值代表當前時刻系統(tǒng)狀態(tài)的真值。試編一程序完 成這個濾波過程。15單字節(jié)無符號數(shù)排序流程圖:開始BL 數(shù)據(jù)個數(shù)-1CX BL擴展數(shù)據(jù)指針 SI 置 0累加器 前數(shù) 前數(shù)與后數(shù)比較前數(shù)后數(shù)前
16、、后數(shù)交換數(shù)據(jù)指針 SI 指向下一數(shù)數(shù)據(jù)指針 SI 指向下一數(shù)YNBL-1CX-1=0?CX-1=0?NNYYZF=1?N結(jié)束Y16 .model small .586 .data datanum db 10 datas db 21h,13h,4h,5h,7h db 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,datas
17、si+1 mov datassi,al inc si loop lopnext: dec bl jz finish jmp lop0finish: nop .exit end17去極值濾波開始調(diào)排序子程序?qū)?shù)據(jù)進行排序?qū)ε磐晷虻臄?shù)據(jù)掐頭去尾求和求均值保存結(jié)果結(jié)束18 .model small .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,
18、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;送比較次數(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 i
19、nc siinc si loop lopnext: dec bl;修改比較次數(shù) jz finish jmp lop0finish: nop;結(jié)束 retpx endp end19實驗五 分支程序一、實驗?zāi)康?掌握分支程序編程方法,復(fù)雜分支程序的查表法等。二、實驗內(nèi)容 1、 學(xué)生課程成績分段統(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)存SC
20、ORE為首址開始存放。要求學(xué)生人數(shù)不少于10個,試編程序,按0 9、10 19、20 29、80 89、90 99及作弊、缺考等12種情況把學(xué)生的課程成績進行分段統(tǒng)計,將統(tǒng)計結(jié)果存入以COUNT為首址的12個單元中。 2、試編一程序掃描鍵盤,當B鍵按下時,在屏幕上顯示09循環(huán)計數(shù);S鍵按下時停止計數(shù);再按B鍵繼續(xù)計數(shù)過程。E鍵按下時退出程序。 3、用DEBUG調(diào)試程序預(yù)置數(shù)據(jù)和查看程序運行結(jié)果,以驗證程序正確性。 20學(xué)生課程成績分段統(tǒng)計開始設(shè)置學(xué)號、成績指針取學(xué)號取成績是結(jié)束標志?取十分位,并將十分值擴展為16位送DI,對DI所指統(tǒng)計區(qū)段統(tǒng)計值加1是作弊?是缺考?修改指針CX-1=0?11C
21、X 統(tǒng)計上限作弊統(tǒng)計區(qū)段統(tǒng)計值加1缺考統(tǒng)計區(qū)段統(tǒng)計值加1結(jié)束YYYYNNNN21 .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,12h,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
22、 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)計值加1down: 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 end22鍵盤及
23、屏幕顯示功能調(diào)用開始顯示提示信息置處理指針為“停止”調(diào)延時、鍵盤掃描程序有鍵動?轉(zhuǎn)處理指針處B 鍵?S 鍵?E 鍵?轉(zhuǎn)處理指針處結(jié)束置處理指針為“計數(shù)”置處理指針為“停止”NYYYYNNN處理指針為“計數(shù)”處理指針為“停止”計數(shù)顯示23延時、鍵盤掃描程序子程序定義BX 第二時常數(shù)CX 第一時常數(shù)CX-1=0?NYBX-1BX=0?NY子程序返回監(jiān)測鍵動有鍵動?做鍵動標志BX=1NY24.model small.dataMess1 db press b button - count,0dh,0ahmess2 db press s button - stop,0dh,0ahMess3 db pre
24、ss 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 ;調(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 ca
25、ll 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+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 c
26、x;延時子程序 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_retkey_ret: mov bx,1;做鍵動標志delay_ret: retDelay endp end25硬件實驗部分本部分共進行3次實驗,實驗內(nèi)容如下:1 實驗六 并行接口技術(shù)實驗 2 實驗七 8254定時/計數(shù)器實驗3 實驗九 A/D轉(zhuǎn)換實驗 (下面根據(jù)實驗臺
27、實物介紹實驗臺)26特別說明:為了方便實驗,實驗臺設(shè)計時已將實驗用相關(guān)器件的地 址線、數(shù)據(jù)總線及除片選(CS)外的控制線連接到位,并在每一 個實驗電路附近予留有若干信號連線插孔(或插針排)。實驗時 只要將相應(yīng)插孔用單股導(dǎo)線(或相應(yīng)插針排用扁平電纜)對應(yīng)相 連即可組成完整的實驗電路。在給出的實驗電路圖中,線路所 帶小圓圈即表示連線插孔。各芯片的片選(CS)可用單股導(dǎo)線連 接,也可通過將8位鉛筆開關(guān)的對應(yīng)位置ON連接。硬件實驗注意事項: 1.在實驗臺斷電條件下,才能用單股導(dǎo)線(或扁平電纜)連接電路; 2.線路連接完成、檢查確認沒有錯誤后,再開通實驗臺電源; 3.用單股導(dǎo)線連接電路時,要將單股導(dǎo)線線
28、頭整直,并確認線頭沒有 斷裂; 4.實驗完成后,關(guān)斷實驗臺電源,再抓住導(dǎo)線(或扁平電纜)的根 部,一根一根垂直拔掉連接導(dǎo)線(或扁平電纜) ,并把連接導(dǎo)線 、電纜整好放入線盒。27實驗六 并行接口技術(shù)實驗 一實驗?zāi)康?1.掌握8255A并行接口的基本使用方法。 2.理解數(shù)碼管掃描顯示原理,學(xué)習(xí)數(shù)碼管掃描顯示方法。二實驗內(nèi)容 1.用8255A作為并行接口,從8255A的一個端口輸入開關(guān)量到CPU或內(nèi)存,再將這一數(shù)據(jù)通過數(shù)據(jù)總線和8255A的另一個端口掃描輸出到數(shù)碼管。設(shè)8255A的A口為輸入方式,接邏輯電平開關(guān);8255A的B口為輸出方式,通過MC1413驅(qū)動器接數(shù)碼管的位選端;數(shù)碼管的字劃端通過
29、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口為輸出方式,通過MC1413驅(qū)動器接數(shù)碼管的位選端;數(shù)碼管的字劃端通過74HC573與數(shù)據(jù)總線相連。試編一動態(tài)掃描程序,讓6個數(shù)碼管“同時”點亮,顯示“1、2、3、4、5、6”。三實驗電路及設(shè)計 1.實驗電路圖2829 2.實驗連線(1)邏輯電平開關(guān)輸出孔K1K6對應(yīng)連
30、接到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( E200H);(5)74HC573的使能端smglt (CS573)連到譯碼控制單元的 SMGLT (E220H)。3.8255A的端口地址 PA口:E200H,PB 口:E201H,PC口:E202H,控制寄存器:E203H 。4.數(shù)碼管編碼表 “0”-3FH “1”-06H “2”-5BH “3”-4FH “4
31、”-66H “5”-6DH “6”-7DH “7”-07H “8”-7FH “9”-6FH “A”-77H “B”-7CH “C”-39H “D”-3EH “E”-79H “F”-71H 30有關(guān)問題的說明數(shù)碼管(共陰):DPDP共陰地不閉合,數(shù)碼管就點不亮31多個數(shù)碼管掃描顯示:32多個數(shù)碼管掃描顯示:限流電阻鎖存器JM3、JM2、JM1誰為,誰連接的數(shù)碼管就顯示鎖存器當前鎖存的值所謂掃描顯示是:對個數(shù)碼管:.給鎖存器送第個數(shù)碼管顯示內(nèi)容,而后第個數(shù)碼管公共端接低,延時.給鎖存器送第個數(shù)碼管顯示內(nèi)容,而后第個數(shù)碼管公共端接低,延時.給鎖存器送第個數(shù)碼管顯示內(nèi)容,而后第個數(shù)碼管公共端接低,延時
32、第步后,再從開始,周而復(fù)始。那么, JM3、JM2、JM1是互斥的了!連接數(shù)據(jù)總線D7D0 驅(qū)動器33實驗 6.174HC573鎖存器A口 K6 K5 K4 K3 K2 K1 開關(guān)ABCDEFGDP限流電阻DbusD7D08255MC1413驅(qū)動器B口COMDbusD7D0SMGLT CS8255A口34開始初始化8255點亮一位數(shù)碼管讀鍵盤有鍵?讀開關(guān)量,并取反位掃描,確定開關(guān)號取對應(yīng)開關(guān)號的字型碼輸出對應(yīng)的數(shù)字結(jié)束35; CS8255 - CS1; CS573 - SMGLT; k1.k6 - PA0.PA5; SM0.SM5-PB0.PB5; D0.D7-A.B.DP.model sma
33、ll .586 p8255 equ 0E200h ;片選地址 p_ctl equ 90h ;8255控制字 s_l_a equ 0E220h ;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 ;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í)
34、行 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 ;查表,BX+AL送ALmov dx,s_l_a;輸出對應(yīng)的數(shù)字out dx,aljmp lop ;循環(huán)掃描scan_end: .exit end36實驗 6.2限流電阻DbusD7D08255MC1413驅(qū)動器B口COMDbusD7D0SMGLTCS825574HC57
35、3鎖存器COMCOMCOMCOMCOMABCDEFGDP37開始初始化查表取顯示數(shù)字字型碼顯示字型碼送鎖存器(輸出)取對應(yīng)數(shù)碼管字位、并輸出+(下一掃描位置)掃描位數(shù)?調(diào)延時初始掃描位置(顯示數(shù)字)初始掃描位置讀鍵盤有鍵動?結(jié)束延時程序流程見前38; CS8255 - CS1; CS573 - SMGLT; SM0.SM5-PB0.PB5; D0.D7-A.B.DP; .model small p8255 equ 0E200H ;片選地址 p_ctl equ 10010000B;8255控制字s_l_a equ 0E220H ;573鎖存地址.datatable db 3FH,06H,5BH,
36、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_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
37、,;返回啟始位置1mov cl,1down:call delaymov ah,06;判有鍵動,跳出循環(huán)mov dl,0ffhint 21hjnz scan_endjmp lop;循環(huán)掃描scan_end:nop.exit 39delayproc near uses cx;延時子程序 mov bx,02hdelay1:mov cx,0h loop $ dec bx jnz delay1 retdelayendp end40實驗七 8254定時/計數(shù)器實驗 一實驗?zāi)康?1.掌握8254定時/計數(shù)器的基本使用方法。 2.了解8254定時/計數(shù)器利用級連擴大計數(shù)范圍的方法。 3.了解多I/O芯片協(xié)同工
38、作的原理和方法。二實驗內(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秒切換一次通行方向。三實驗電路及設(shè)計 1 .實驗電路圖 41 2.“實驗內(nèi)容1”實驗連線 (1)8254的GATE0、GATE1接高電平; (2)8254 T0的CLK0接1M時鐘孔; (3)8254 T1的CLK1接T0的OUT0;
39、(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的OUT1接8255A的PA1孔; (3)8255A的PB7PB0對應(yīng)連接到交通燈的 RW、GW、RN、GN、RE、GE、RS、GS燈 ; (4)8255A的片選端CS8255連到譯碼控制單元的CS1; 42 4.8254和82
40、55A的端口地址 8254的端口地址: 定時器0分頻系數(shù)寄存器 0E204H , 定時器1分頻系數(shù)寄存器 0E205H , 定時器2分頻系數(shù)寄存器 0E206H , 控制寄存器 0E207H 。 8255A的端口地址: PA口:0E200H ,PB 口:0E201H,PC口:0E202H, 控制寄存器:0E203H。 43實驗 .1開始初始化T0初始化T裝T0低字節(jié)計數(shù)初值結(jié)束裝T0高字節(jié)計數(shù)初值裝T低字節(jié)計數(shù)初值裝T高字節(jié)計數(shù)初值44;cs8254-CS2;clk0 - 1M;out0 -CLK1;out1 - BJ 或 L1;gate0 - K1,令k1=1;gate1 - K2,令k2=
41、1.MODEL SMALL CS8254 EQU 0E204H T0_CTL EQU 00110100B ; 對T0 兩次讀寫,先低后;高。 T0為方式2(分頻) T1_CTL EQU 01110110B ;對T1 兩次讀寫,先低;后高。 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 ;給T
42、0高字節(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,ALMOV AL,T1_DATA+1 ;給T1高字節(jié)裝計數(shù)初值OUT DX,AL.EXITEND45實驗 .開始8254 T0 初始化給8254 T0裝初值8254 T 初始化給8254 T裝初值8255初始化為A口入、B口出8255 B口輸出方向初值讀8255 PA1、測試8255 PA1PA1?讀8255 PA1、測試8255 PA1PA1控制換向8255 B口輸出方向值
43、檢查鍵盤有鍵盤動?結(jié)束46;cs8254-CS2;clk0 - 1M;out0 - clk1;out1 - 8255 的 PA1;gate0 - k1,令k1=1;gate1 - k2,令k2=1;JTDCS- k3,令k3=1;cs8255 - CS1;8255(PB7 . PB0)- (RW、GW、RN、GN、RE、; GE、RS、GS ) .MODEL SMALLT8254 EQU 0E204HT0_CTL EQU 00110100BT1_CTL EQU 01110110Bp8255 equ 0E200H;片選地址p_ctl equ 10010000B;8255控制字.DATAT0_DA
44、TA DB 0FFH,040HT1_DATA DB 0FFH,0dir_data DB 5ah.CODE.STARTUPMOV DX,T8254+3;8254 T0 初始化MOV AL,T0_CTLOUT DX,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 D
45、X,AL47mov dx,p8255+3;8255為A口入,B口出 mov al,p_ctlout dx,almov dx,p8255+1;8255 B口輸出方向初值mov al,dir_dataout dx,albit_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_
46、test1 ;上升沿沒到再測dir_ctl:mov al,dir_data ;方向控制not al ;換向mov dir_data,almov dx,p8255+1 ;8255 B口輸出方向值out dx,almov ah,01h ;檢查鍵盤int 21hor al,al ;有鍵盤輸入轉(zhuǎn)jnz dir_endjmp bit_test0dir_end:.EXITEND48實驗九 A/D轉(zhuǎn)換實驗 一實驗?zāi)康?學(xué)習(xí)模/數(shù)轉(zhuǎn)換器使用方法,理解模/數(shù)轉(zhuǎn)換原理。二實驗內(nèi)容 1給A/D轉(zhuǎn)換器輸入一可調(diào)節(jié)的電壓信號,假設(shè)該輸入信號為一水塔的水位高度信號,請結(jié)合應(yīng)用8255A接口芯片,編程完成以下功能:當水位低
47、于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è)計 1.實驗電路圖49.“實驗內(nèi)容1”實驗連線 以下連線假設(shè)8255A的A口為輸出方式,8255A的PA6控制一LED燈、8255A的 PA7控制報警風(fēng)鳴器。(1)A/D轉(zhuǎn)換單元的AD_S連接譯碼控制單元的AD_S (E228HE22FH );(2)A/D轉(zhuǎn)換單元的AD_OE連接譯碼控制單元的AD_OE (E228HE22FH );(3)A/D轉(zhuǎn)換器的IN0輸入端連接到直流電壓單
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 陜西省安康市2024-2025學(xué)年八年級(上)期末語文試卷
- 2025年全球及中國氯雷他定片行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球工商用管道除濕機行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國劃線輪(描線輪)行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球PTFE化學(xué)鍍鎳行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國汽車超高頻天線行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國多托盤貨叉行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球汽車行業(yè)用生物基聚酰胺行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國樹木介紹牌行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球醫(yī)美用A型肉毒毒素行業(yè)調(diào)研及趨勢分析報告
- 2025-2030年中國納米氧化鋁行業(yè)發(fā)展前景與投資戰(zhàn)略研究報告新版
- 2025年度正規(guī)離婚協(xié)議書電子版下載服務(wù)
- 2025年貴州蔬菜集團有限公司招聘筆試參考題庫含答案解析
- 煤礦安全生產(chǎn)方針及法律法規(guī)課件
- 2025年教科室工作計劃樣本(四篇)
- 【7歷期末】安徽省宣城市2023-2024學(xué)年七年級上學(xué)期期末考試歷史試題
- 春節(jié)后安全生產(chǎn)開工第一課
- 2025光伏組件清洗合同
- 電力電纜工程施工組織設(shè)計
- 2024年網(wǎng)格員考試題庫完美版
- 《建筑與市政工程防水規(guī)范》解讀
評論
0/150
提交評論