北郵微機(jī)原理硬件實(shí)驗(yàn)報(bào)告完整版.doc_第1頁
北郵微機(jī)原理硬件實(shí)驗(yàn)報(bào)告完整版.doc_第2頁
北郵微機(jī)原理硬件實(shí)驗(yàn)報(bào)告完整版.doc_第3頁
北郵微機(jī)原理硬件實(shí)驗(yàn)報(bào)告完整版.doc_第4頁
北郵微機(jī)原理硬件實(shí)驗(yàn)報(bào)告完整版.doc_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

微機(jī)原理硬件實(shí)驗(yàn)I/O地址譯碼&簡單并行接口班級:姓名:學(xué)號:一 實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)一:掌握I/O地址譯碼電路的工作原理。實(shí)驗(yàn)二:掌握簡單并行接口的工作原理及使用方法。 二、實(shí)驗(yàn)原理和內(nèi)容 實(shí)驗(yàn)一:1、實(shí)驗(yàn)電路如圖4-1-1所示,其中74LS74為D觸發(fā)器,可直接使用實(shí)驗(yàn)臺上數(shù)字電路實(shí)驗(yàn)區(qū)的D觸發(fā)器,74LS138為地址譯碼器。譯碼輸出端Y0Y7在實(shí)驗(yàn)臺上“I/O地址“輸出端引出,每個(gè)輸出端包含8個(gè)地址,Y0:280H287H,Y1:288H28FH, 當(dāng)CPU執(zhí)行I/O指令且地址在280H2BFH范圍內(nèi),譯碼器選中,必有一根譯碼線輸出負(fù)脈沖。 例如:執(zhí)行下面兩條指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4輸出一個(gè)負(fù)脈沖,執(zhí)行下面兩條指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX) Y5輸出一個(gè)負(fù)脈沖。 圖4-1-1 利用這個(gè)負(fù)脈沖控制L7閃爍發(fā)光(亮、滅、亮、滅、),時(shí)間間隔通過軟件延時(shí)實(shí)現(xiàn)。 2、接線: Y4/IO地址 接 CLK/D觸發(fā)器 Y5/IO地址 接 CD/D觸發(fā)器 D/D觸發(fā)器 接 SD/D角發(fā)器 接 +5V Q/D觸發(fā)器 接 L7(LED燈)或 邏輯筆實(shí)驗(yàn)二:1、按下面圖4-2-1簡單并行輸出接口電路圖連接線路(74LS273插通用插座,74LS32用實(shí)驗(yàn)臺上的“或門”)。74LS273為八D觸發(fā)器,8個(gè)D輸入端分別接數(shù)據(jù)總線D0D7,8個(gè)Q輸出端接LED顯示電路L0L7。 2、編程從鍵盤輸入一個(gè)字符或數(shù)字,將其ASC碼通過這個(gè)輸出接口輸出,根據(jù)8個(gè)發(fā)光二極管發(fā)光情況驗(yàn)證正確性。 圖4-2-13、接線: 按圖4-2-1接線(圖中虛線為實(shí)驗(yàn)所需接線,74LS32為實(shí)驗(yàn)臺邏輯或門) 三 硬件接線圖及軟件程序流程圖1硬件接線圖實(shí)驗(yàn)一:實(shí)驗(yàn)二:2軟件程序流程圖實(shí)驗(yàn)一: 開始Y4輸出一個(gè)負(fù)脈沖燈亮,調(diào)用延時(shí)子程序燈滅,調(diào)用延時(shí)子程序Y5輸出一個(gè)負(fù)脈沖結(jié)束實(shí)驗(yàn)二:四 源程序?qū)嶒?yàn)一:DATA SEGMENTDATA ENDSSTACK SEGMENT STACK STACK DB 100H DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;延時(shí)子程序DELAY1 PROC NEARMOV BX,500HPUSH CXLOOP2:MOV CX,0FFFHWAIT1: LOOP WAIT1DEC BXJNZ LOOP2POP CXRETDELAY1 ENDP;L7閃爍START:MOV CX,0FFFFHLOOP1:MOV DX,2A0H;燈亮OUT DX,ALCALL DELAY1MOV DX,2A8H ;燈滅OUT DX,ALCALL DELAY1LOOP LOOP1 ;循環(huán)閃爍CODE ENDSEND START實(shí)驗(yàn)二:DATA SEGMENTDATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AH,1;鍵盤輸入 INT 21H CMP AL,27;判斷是否為ESC鍵 JZ EXIT MOV DX,2A8H OUT DX,AL ;輸出 JMP START;返回DOSEXIT: MOV DX,2A8H MOV AL,0 OUT DX,AL ;所有燈滅 MOV AX,4C00H INT 21HCODE ENDS END START五 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)一:L7閃爍實(shí)驗(yàn)二:從鍵盤輸入字符或數(shù)字,若不是Esc鍵,則二極管顯示其ASCII碼情況,若按下ESC,則返回dos,且各LED燈滅。六:實(shí)驗(yàn)總結(jié)1主要問題是對題目中所給的硬件接線圖不是很理解,如第二個(gè)實(shí)驗(yàn)中或門的作用。向老師請教后明白了硬件接線圖的原理,做實(shí)驗(yàn)就容易許多。2在第一個(gè)實(shí)驗(yàn)中起先對AL進(jìn)行了賦值,后來發(fā)現(xiàn)是沒必要的,不對AL賦值對產(chǎn)生負(fù)脈沖無影響,后來刪掉了相應(yīng)的賦值語句,精簡了代碼。七 實(shí)驗(yàn)收獲與心得體會這是第一次接觸微原硬件實(shí)驗(yàn),實(shí)驗(yàn)板比小學(xué)期單片機(jī)實(shí)驗(yàn)更豐富,但也會導(dǎo)致剛開始的時(shí)候不知道該把線接在哪。在明白了硬件接法,將自己的代碼反映在硬件上時(shí),覺得非常有趣。之前一直以為微原實(shí)驗(yàn)不如C+等高級語言編程有趣,現(xiàn)在看來絲毫不遜色。且通過自己動手實(shí)驗(yàn),使我對理論課所學(xué)知識有了更好的理解。期待通過這幾次微原實(shí)驗(yàn)?zāi)茏屛沂斋@更多知識。微機(jī)原理硬件實(shí)驗(yàn)可編程并行接口8255&七段數(shù)碼管&鍵盤顯示控制實(shí)驗(yàn)班級:姓名:學(xué)號:一 實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)三:通過實(shí)驗(yàn),掌握8255工作于方式0以及設(shè)置A口為輸出口,C口為輸入口的方法。實(shí)驗(yàn)四:掌握數(shù)碼管顯示數(shù)字的原理。實(shí)驗(yàn)五:掌握8255控制鍵盤及顯示電路的基本功能及編程方法。 掌握一般鍵盤和顯示電路的工作原理。 二 實(shí)驗(yàn)原理和內(nèi)容實(shí)驗(yàn)三:1、實(shí)驗(yàn)電路見硬件連接圖,8255C口接邏輯電平開關(guān)K0K7,A口接LED顯示電路L0L7。 2、編程從8255C口輸入數(shù)據(jù),再從A口輸出。 實(shí)驗(yàn)四:靜態(tài)顯示:按下圖連接好電路,將8255的A口PA0PA7分別與七段數(shù)碼管的段碼驅(qū)動輸入端adp相連,位碼驅(qū)動輸入端S0、S1 、S2、S3接PC0、PC1、PC2、PC3,編程在數(shù)碼管顯示自己的學(xué)號的后四位。實(shí)驗(yàn)五:編程:使得在小鍵盤上每按一個(gè)健,4位數(shù)碼管上顯示出相應(yīng)字符。三 硬件接線圖及軟件程序流程圖1硬件接線圖實(shí)驗(yàn)三:實(shí)驗(yàn)四:2軟件程序流程圖實(shí)驗(yàn)三: (引用講義上已給出的圖)實(shí)驗(yàn)四:(引用講義上已給出的圖)實(shí)驗(yàn)五:是否否否是是是按鍵是否釋放是否為抖動數(shù)碼管顯示查表法得到對應(yīng)的字符結(jié)束返回dos按鍵為0行掃描法判斷按下的列是否有鍵按下掃描鍵盤開始四 源程序?qū)嶒?yàn)三DATA SEGMENTDATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOVDS,AX MOV DX,28BH;8255初始化,10001001,C口輸入,A口輸出 MOV AL,89H OUT DX,ALLOOP1:MOV DX,28AH ;C口輸入 IN AL,DX MOV DX,288H ;A口輸出 OUT DX,AL MOV AH,01H INT 16H JNZ EXIT ;ZF=0說明有按鍵輸入,故退出 JMP LOOP1EXIT:MOVAX,4C00H INT21HCODEENDS END START實(shí)驗(yàn)四DATA SEGMENTDATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODESEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATA MOVDS,AX MOV DX,28BH ;8255控制寄存器端口地址28BH MOV AL,80H ;工作方式為0 OUT DX,AL ;初始化8255 DIGITAL:MOV DX,28AH ;熄滅數(shù)碼管 MOV AL,00H OUT DX,AL MOV DX,288H ;A口顯示5 MOV AL,6DH OUT DX,AL MOV DX,28AH ;C口00000001(位碼) MOV AL,01H OUT DX,AL MOV DX,28AH ;熄滅數(shù)碼管 MOV AL,00H OUT DX,AL MOV DX,288H ;A口顯示2 MOV AL,5BH OUT DX,AL MOV DX,28AH ;C口00000010(位碼) MOV AL,02H OUT DX,AL MOV DX,28AH ;熄滅數(shù)碼管 MOV AL,00H OUT DX,AL MOV DX,288H ;A口顯示6 MOV AL,7DH OUT DX,AL MOV DX,28AH MOV AL,04H ;C口00000100(位碼) OUT DX,AL MOV DX,28AH ;熄滅數(shù)碼管 MOV AL,00H OUT DX,AL MOV DX,288H ;A口顯示0 MOV AL,3FH OUT DX,AL MOV DX,28AH MOVAL,08H ;C口00001000(位碼) OUT DX,AL MOV DX,28AH ;熄滅數(shù)碼管 MOV AL,00H OUT DX,AL MOV AH,01H INT 16H JNZ EXIT ;ZF=0說明有按鍵輸入,故退出 JMP DIGITALEXIT:MOVAX,4C00H INT21HCODEENDS END START 實(shí)驗(yàn)五DATA SEGMENTTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H;數(shù)碼管顯示 0123456789ABCDEFNUM DB 70H,0B0H,0D0H,0E0H;用于掃描鍵盤 70H=01110000,0B0H=10110000,0D0H=11010000,0E0H=11100000DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;延時(shí)子程序DELAY PROC NEAR PUSH CX MOV CX,100H WAIT1: LOOP WAIT1 POP CX RETDELAY ENDP;獲取鍵盤的輸入數(shù)字的子程序,通過BX寄存器傳遞KEY PROC NEAR PUSH AX;保護(hù)現(xiàn)場 PUSH CX PUSH DX MOV CX,00H ;從第一行開始掃描CHECK: MOV DX,28AH ;C口地址給DX MOV BX,OFFSET NUM ADD BX,CX MOV AL,BX OUT DX,AL;防抖 IN AL,DX;判斷是否有鍵盤按下 MOV AH,AL CALL DELAY IN AL,DX CMP AL,AH JNZ CHECK ;不相等說明為抖動,重新檢測;判斷按下的列 AND AL,0FH CMP AL,0FH JZ NEXT CMP AL,0EH JZ NEXT1 CMP AL,0DH JZ NEXT2 CMP AL,0BH JZ NEXT3 MOV BX,00H JMP GOTNEXT: INC CX ;修改變量掃描下一行 CMP CX,04H JNZ JUMP1 MOV CX,00HJUMP1: JMP CHECKNEXT1: MOV BX,03H JMP GOTNEXT2: MOV BX,02H JMP GOTNEXT3: MOV BX,01H;計(jì)算按下鍵盤的數(shù)值GOT: MOV AL,CL MOV DL,04H MUL DL ADD BL,AL ;此時(shí)BX中所存即為對應(yīng)的偏移量 POP DX;恢復(fù)現(xiàn)場 POP CX POP AX RET KEY ENDP;主程序START: MOV AX,DATA MOV DS,AX MOV DX,28BH ;8255初始化 MOV AL,81H ;C口輸入 OUT DX,AL MOV DX,289H ;B口位選數(shù)碼管 MOV AL,01H OUT DX,AL;掃描鍵盤LOOP1: CALL KEY;數(shù)碼管顯示字符 MOV AX,BX MOV BX,OFFSET TABLE ADD BX,AX ;此時(shí)BX即為對應(yīng)的地址 MOV AL,BX CMP BX,OFFSET TABLE ;按下的為0則退出 JZ EXIT MOV DX,288H ;A口輸出 OUT DX,AL MOV DX,28AH ;C口輸入 IN AL,DX;檢測鍵盤是否彈起 MOV AH,ALLOOP2: CALL DELAY IN AL,DX CMP AL,AH JZ LOOP2 JMP LOOP1;返回DOS EXIT: MOV AL,00H MOV DX,288H ;A口輸出 OUT DX,AL MOVAX,4C00H INT21H CODE ENDS END START五 實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)三:撥動K0K7,對應(yīng)的L0L7亮,有按鍵輸入則退出。實(shí)驗(yàn)四:數(shù)碼管顯示學(xué)號的后四位:0625。有按鍵輸入則退出。實(shí)驗(yàn)五:按小鍵盤1F則數(shù)碼管顯示對應(yīng)的字符,按下0則結(jié)束。六:實(shí)驗(yàn)總結(jié)本次實(shí)驗(yàn)課做了三個(gè)實(shí)驗(yàn),每個(gè)實(shí)驗(yàn)也都變換了端口重新操作以加深理解,覺得比第一次做的更熟練。本次實(shí)驗(yàn)遇到問題的主要是實(shí)驗(yàn)五,鍵盤掃描及防抖程序較為復(fù)雜,需要考慮很多。在添加按小鍵盤0則退出時(shí)起初代碼位置不對導(dǎo)致有邏輯錯(cuò)誤,修改了兩次才正確。七 實(shí)驗(yàn)收獲與心得體會這次實(shí)驗(yàn)覺得和小學(xué)期的單片機(jī)實(shí)驗(yàn)有很多的想通之處。小學(xué)期使用的鍵盤掃描方法就是行掃描法,所以這次對掃描方法的理解更輕松一些。通過這次實(shí)驗(yàn),我對8255的應(yīng)用有了更深的了解。這次實(shí)驗(yàn)我更加注意了代碼優(yōu)化,每個(gè)實(shí)驗(yàn)都添加了退出的代碼,覺得更可靠。實(shí)驗(yàn)三和四相對來說更容易,幾乎是靜態(tài)的,而實(shí)驗(yàn)五由于一直隨著按鍵而變化所以需要考慮多種情況和變化,增加了難度,這也提高了我編程時(shí)考慮多種情況的意識,相信對我以后的編程也有很多的好處。微機(jī)原理硬件實(shí)驗(yàn)可編程定時(shí)器/計(jì)數(shù)器(8253/8254)班級:姓名:學(xué)號:一、 實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)掌握8253用作定時(shí)器的編程原理; 二、 實(shí)驗(yàn)原理和內(nèi)容1完成一個(gè)音樂發(fā)生器,通過喇叭或蜂鳴器放出音樂,并在數(shù)碼管上顯示樂譜。2擴(kuò)展部分:利用小鍵盤實(shí)現(xiàn)彈琴功能,并顯示彈奏的樂譜。 注意:8253輸入頻率應(yīng)小于2MHz。三 硬件接線圖及軟件程序流程圖1 硬件接線圖2 軟件程序流程圖掃描鍵盤判斷輸入播放音樂,數(shù)碼管顯示相應(yīng)的音符是否播放結(jié)束初始化8254 8255,A口接數(shù)碼管顯示,B口位選數(shù)碼管,C口接小鍵盤輸入發(fā)出對應(yīng)的音,數(shù)碼管顯示音符按鍵是否彈起熄滅數(shù)碼管,返回dos結(jié)束停止發(fā)音,初始化8254開始輸入為0輸入18輸入為9是是否四 源程序DATA SEGMENTFENPIN DW 0001H,3906,3472,3125,2932,2604,2344,2083,1953;分頻比DIGITAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;數(shù)碼管MUSIC DB 0,1,2,3,1,1,2,3,1,0,3,4,5,0,3,4,5,0,5,6,5,4,3,1,0,5,6,5,4,3,1,0,1,5,1,0,1,5,1,0 ;存放播放的樂曲音符NUM DB 00H,070H,0B0H,0D0H,0E0H ;檢測鍵盤輸入DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;延時(shí)子程序DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RETDELAY ENDP;延時(shí)子程序2DELAY1 PROC NEAR PUSH CX MOV CX,0FFFFH WAIT1: LOOP WAIT1 POP CX RETDELAY1 ENDP;獲取鍵盤輸入值的子程序KEY PROC NEAR PUSH AX ;保護(hù)現(xiàn)場 PUSH CX PUSH DX MOV CX,01HCHECK: MOV DX,28AH ;C口地址給DX MOV BX,OFFSET NUM ADD BX,CX MOV AL,BX OUT DX,AL;防抖 IN AL,DX ;判斷是否有鍵盤按下 MOV AH,AL CALL DELAY IN AL,DX CMP AL,AH JNZ CHECK ;不相等說明為抖動,重新檢測;判斷按下的列 AND AL,0FH CMP AL,0FH JZ NEXT CMP AL,0EH JZ NEXT1 CMP AL,0DH JZ NEXT2 CMP AL,0BH JZ NEXT3 MOV BX,01H JMP GOTNEXT: INC CX ;修改變量掃描下一行 CMP CX,05H JNZ JUMP1 MOV CX,01HJUMP1: JMP CHECKNEXT1: MOV BX,04H JMP GOTNEXT2: MOV BX,03H JMP GOTNEXT3: MOV BX,02H;計(jì)算按下鍵盤的數(shù)值GOT: SUB CX,01H MOV AL,CL MOV DL,04H MUL DL ADD BL,AL SUB BL,01H ;此時(shí)BX中所存即為對應(yīng)的偏移量 POP DX ;恢復(fù)現(xiàn)場 POP CX POP AX RET KEY ENDP;主程序START: MOV AX,DATA MOV DS,AX ;8253初始化 MOV DX,283H MOV AL,36H OUT DX,AL ;8255初始化 MOV DX,28BH MOV AL,81H ;C口輸入 OUT DX,AL MOV DX,289H ;B口位選數(shù)碼管 MOV AL,01H OUT DX,AL;掃描鍵盤LOOP1: CALL KEY CMP BX,0 ;按0播放音樂 JZ PLAY0 CMP BX,9 ;按9退出 JZ EXIT;按18發(fā)出對應(yīng)音 MOV CX,BX MOV BX,OFFSET DIGITAL ;數(shù)碼管顯示音符 ADD BX,CX MOV AL,BX MOV DX,288H ;A口輸出 OUT DX,AL ;播放該音符 MOV BX,OFFSET FENPIN MOV AX,CX ADD AX,AX ADD BX,AX ;計(jì)數(shù),先低八位后高八位 MOV AX,BX MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL CALL DELAY1 CALL DELAY1 MOV DX,28AH ;C口輸入 IN AL,DX;檢測鍵盤是否彈起 MOV AH,ALLOOP2: CALL DELAY IN AL,DX CMP AL,AH JZ LOOP2 ;初始化8253,停止播放音樂 MOV AX,0H MOV DX,283H MOV AL,36H OUT DX,AL JMP LOOP1 ;播放音樂PLAY0: MOV CX,01HPLAY: PUSH CX ;讀取音符,存于CX中 MOV BX,OFFSET MUSIC ADD BX,CX MOV AL,BX MOV CL,AL MOV CH,0H ;數(shù)碼管顯示 MOV BX,OFFSET DIGITAL ADD BX,CX MOV AL,BX MOV DX,288H OUT DX,AL ;播放該樂符 MOV BX,OFFSET FENPIN MOV AX,CX ADD AX,AX ADD BX,AX ;計(jì)數(shù),先低八位后高八位 MOV AX,BX MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL POP CX ;延時(shí),持續(xù)播放 MOV AX,90HLOOP3: CALL DELAY1 DEC AX JNZ LOOP3 ;樂曲未結(jié)束時(shí),CX加1 INC CX CMP CX,28H;共40個(gè)音符 JNZ JUM JMP LOOP1JUM: JMP PLAYEXIT: MOV AL,0 MOV DX,288H OUT DX,AL MOV AX,4C00H INT 21H CODE ENDS END START 五 實(shí)驗(yàn)結(jié)果按小鍵盤的0時(shí),播放預(yù)置音樂兩只老虎,同時(shí)數(shù)碼管顯示相應(yīng)的音符;按小鍵盤的18時(shí),分別發(fā)出do,re,mi,fa,so,la,si,高音do,數(shù)碼管顯示按下的音符;按小鍵盤的9時(shí),熄滅數(shù)碼管,回到dos六:實(shí)驗(yàn)總結(jié)由于小學(xué)期單片機(jī)實(shí)驗(yàn)做的就是電子琴,原理上比較熟悉,所以這次實(shí)驗(yàn)比較容易。在調(diào)試時(shí),主要是調(diào)整延時(shí)以使音樂播放更準(zhǔn)確。延時(shí)程序是保證本次實(shí)驗(yàn)成功的關(guān)鍵。在彈奏時(shí),發(fā)聲時(shí)長即為按鍵時(shí)長,按鍵彈起時(shí)停止播放音樂(但為保證按鍵很短時(shí)發(fā)聲不至于太急促,仍在此處加入了一點(diǎn)延時(shí))。七 實(shí)驗(yàn)收獲與心得體會這次實(shí)驗(yàn)的主要收獲是熟悉了可編程定時(shí)器/計(jì)數(shù)器的使用??梢岳?253/8254工作于方式三來產(chǎn)生相應(yīng)頻率的方波,送給喇叭后發(fā)出相應(yīng)的音。這次實(shí)驗(yàn)也使我對查表調(diào)用的使用更得心應(yīng)手。本實(shí)驗(yàn)只使用了09,后面的鍵沒有應(yīng)用。在以后如果有機(jī)會進(jìn)一步完善,可以給其他鍵賦予功能,如播放更多音樂、使數(shù)碼管顯示更豐富等等。在本次實(shí)驗(yàn)調(diào)試時(shí)主要是調(diào)整延時(shí),這使我更加體會到了延時(shí)的重要性,看似不起眼的幾行代碼在整個(gè)電子琴程序中起到了很重要的作用,可以檢測防抖時(shí)使用,可以調(diào)整音樂時(shí)使用等等。在程序中,真的是失之毫厘差之千里。以后的編程中我也會注意每一個(gè)細(xì)節(jié),使程序更加優(yōu)化。八 思考題寫出8253計(jì)數(shù)初值,輸入頻率和輸出頻率的關(guān)系:答:輸出頻率 = 輸入頻率/8253計(jì)數(shù)初值微機(jī)原理硬件實(shí)驗(yàn)串行通訊8251班級:姓名:學(xué)號:一、實(shí)驗(yàn)?zāi)康?1、了解串行通訊的基本原理。 2、掌握串行接口芯片8251的工作原理和編程方法。 二、實(shí)驗(yàn)原理和內(nèi)容 基礎(chǔ)功能:1、按圖4-16-1連接好電路,(8251插通用插座)其中8254計(jì)數(shù)器用于產(chǎn)生8251的發(fā)送和接收時(shí)鐘,TXD和RXD連在一起。 2、編程: 從鍵盤輸入一個(gè)字符,將其ASCII碼加 1 后發(fā)送出去,再接收回來在屏幕上顯示,(或?qū)?nèi)存制定區(qū)域內(nèi)存放的一批數(shù)據(jù)通過8251A的TXD發(fā)送出去,然后從RXD接收回來,并在屏幕上或數(shù)碼管上顯示出來。)實(shí)現(xiàn)自發(fā)自收。 擴(kuò)展功能:雙機(jī)通信,將發(fā)送端用小鍵盤發(fā)送數(shù)據(jù),接收端用數(shù)碼管顯示接收的數(shù)據(jù)。三、硬件接線圖及軟件程序流程圖1硬件接線圖(引用講義上的流程圖)2軟件程序流程圖(引用講義上的流程圖)四 源程序1單機(jī)通信:DATA SEGMENTSTRING DB TRANSLATE ,$STRING1 DB RECEIVE ,$STRING2 DB 0DH,0AH,$DATA ENDSSTACK SEGMENT STACK SATCK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;延時(shí)子程序DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RETDELAY ENDPSTART: MOV AX,DATA MOV DS,AX ;8254初始化 MOV DX,283H MOV AL,16H ;計(jì)數(shù)器0,只讀低字節(jié),方式0,二進(jìn)制 OUT DX,AL CALL DELAY MOV DX,280H;計(jì)數(shù)器0,初值為52 MOV AL,34H OUT DX,AL CALL DELAY ;8251初始化 MOV DX,2B9H;控制端口 MOV AL,40H;內(nèi)部復(fù)位命令 OUT DX,AL NOP CALL DELAY MOV AL,5EH;方式控制字 OUT DX,AL MOV AL,37H;命令控制字 OUT DX,AL CALL DELAY ;發(fā)送數(shù)據(jù)GOON: MOV DX,2B9H;讀狀態(tài)字 IN AL,DX TEST AL,01H JZ GOON ;顯示提示語句 MOV AH,09H MOV DX,OFFSET STRING INT 21H MOV AH,01H INT 21H ;檢測是否為ESC鍵 CMP AL,1BH JZ EXIT INC AL;加1 MOV DX,2B8H OUT DX,AL ;接收數(shù)據(jù)RECEIVE: MOV DX,2B9H IN AL,DX TEST AL,02H JZ RECEIVE ;顯示提示語句 MOV AH,09H MOV DX,OFFSET STRING2 INT 21H MOV AH,09H MOV DX,OFFSET STRING1 INT 21H MOV DX,2B8H IN AL,DX MOV DL,AL MOV AH,02H;顯示接收的數(shù)據(jù) INT 21H MOV AH,09H MOV DX,OFFSET STRING2 INT 21H JMP GOON EXIT: MOV AX,4C00H INT 21H CODE ENDS END START雙機(jī)通信DATA SEGMENTSTRING DB Please put in a word,0DH,0AH,$TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H ;數(shù)碼管顯示NUM DB 70H,0B0H,0D0H,0E0HDATA ENDSSTACK SEGMENT STACK SATCK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;延時(shí)子程序DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RETDELAY ENDP;延時(shí)子程序2DELAY1 PROC NEAR PUSH CX PUSH BX MOV BX,250 LP2: MOV CX,0FFFFH LP1: LOOP LP1 DEC BX JNZ LP2 POP BX POP CX RETDELAY1 ENDPinput PROC NEAR LOOP1: MOV DX,28AH mov al,01111111b out dx,al in al,dx and al,00001111b cmp al,00000111b jz case0 CMP AL,00001011B JZ CASE1 CMP AL,00001101B JZ CASE2 CMP AL,00001110B JZ CASE3 mov al,10111111b out dx,al in al,dx and al,00001111b cmp al,00000111b jz case4 CMP AL,00001011B JZ CASE5 CM

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論