久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

北京郵電大學 微機原理軟件實驗3

時間:2019-05-15 10:13:27下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《北京郵電大學 微機原理軟件實驗3》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《北京郵電大學 微機原理軟件實驗3》。

第一篇:北京郵電大學 微機原理軟件實驗3

北京郵電大學

微機原理軟件實驗·第三次實驗

題目一:

一、實驗目的1、2、初步掌握中斷程序的設計方法;

初步掌握修改 DOS 系統中斷,以適應實際使用的方法。

二、實驗內容

編一程序,在顯示器上顯示時、分、秒。借用計數器8253的Timer0作為中斷源,通過8259A向CPU發中斷,每10ms產生一次中斷。在中斷服務程序中管理刷新時、分、秒。

要求:

1、輸入文件名(如:CLK)后清屏后顯示:

2、Current time is: xx:xx:xx(時分秒鍵盤輸入)

3、打回車,時、分、秒開始計時。時鐘不停的刷新。

4、當鍵入CTRL+C時,停止計時,返回系統,且系統正常運行不死機。

提示:

8253的初始化程序段可借用。口地址為40H、41H、42H、43H,控制字為36H=00110110B,時間常數TC=11932:1.1932MHz/11932=100Hz,輸出方波頻率為100Hz,其周期為1000/100=10ms。

三、設計思路

1、開始程序流程圖

重新在屏幕上打印時間是判斷鍵盤緩沖區有無按鍵按下定義數據段和堆棧段回車是否按下判斷內存中的時間是否被修改保存源中斷向量否是秒表功能否否將timer子程序地址設置為中斷向量顯示字符串:“Now the time is:”是判斷“S”是否按下否設置8253工作狀態,使其輸出方波100Hz判斷設定時間是否符合規范否輸出一條錯誤信息判斷Ctrl+C是否按下是設置8259A工作狀態輸出一條提示信息,要求用戶設定時間是退出程序

2、中斷子程序流程圖

子程序開始記下進入中斷的次數判斷次數是否為100是計數清零,修改內存中存儲的時間查看是否有進位否進位調整結束

3、可能用到的指令

① STI 置中斷允許位.CLI 清中斷允許位.格式:CLI STI 功能:開關中斷允許標志,用于在程序中防止中斷嵌套,設置中斷。

② STOS(STOre into String)存入串指令 格式:STOS DST STOSB //存放字節串(DI)= AL STOSW //存放字串(DI)= AX 執行操作:把AL或AX中的內容存放由DI指定的附加段的字節或字單元中,并根據DF值修改及數據類型修改DI的內容。字節操作:((DT))←(AL),(DI)←(DI)±1

4、① 字操作:((DI))←(AX),(DI)←(DI)±2無條件轉移指令

IN輸入指令

長格式為:IN AL,PORT(字節)IN AX,PORT(字)執行的操作:(AL)<-(PORT)(字節)(AX)<-(wPORT+1,PORT)(字)短格式為:IN AL,DX(字節)IN AX,DX(字)

OUT輸出指令

長格式為:OUT PORT,AL(字節)OUT PORT,AX(字)執行的操作:(PORT)<-(AL)(字節)(PORT+1,PORT)<-(AX)(字)短格式為:OUT DX,AL(字節)OUT DX,AX(字)執行的操作:((DX))<-(AL)(字節)((DX)+1,(DX))<-AX(字)

設置中斷向量 格式:

mov al,8 mov ah,25h int 21h DS:DX=中斷向量 AL=中斷類型號

查看中斷向量 格式:

mov al,8

mov ah,35h AL=中斷類型 ES:BX=中斷向量

計數器芯片8253簡介 初始化

使用8253前,要進行初始化編程。初始化編程的步驟是:

A向控制寄存器端口寫入控制字對使用的計數器規定其使用方式等。B 向使用的計數器端口寫入計數初值。

② 8253控制字

D7D6=00:使用0號計數器,D7D6=01:使用1號計數器

D7D6=10:使用2號計數器,D7D6=11:無效 D5D4=00:鎖存當前計數值

D5D4=01:只寫低8位(高8位為0),讀出時只讀低8位 D5D4=10:只寫高8位(低8位為0),讀出時只讀高8位 D5D4=11:先讀/寫低8位,后讀/寫高8位計數值

D3D2D1=000:選擇方式0,D3D2D1=001:選擇方式1 D3D2D1=X10:選擇方式2,D3D2D1=X11:選擇方式3 D3D2D1=100:選擇方式4,D3D2D1=101:選擇方式5 D0=0:計數初值為二進制,D0=1:計數初值為BCD碼數

四、源程序

data segment count100 db 100

;100個10ms=1s,此處count100起計數作用 msg1 db 'Please enter the current time(XX:XX:XX)!(Press ENTER to use default time)$' msg2 db 'Sorry,your date entered incorrectly ,please try again!$' msg3 db 'Now, the time is:',0ah,'(Press Ctrl+C to EXIT.)',0ah,'(Press Enter to use as a Stopwatch.)',0ah,'(Press S or s to set current time again.)(XX:XX:XX)$' msg4 db 0ah,'Program EXIT normally.$' tenhour db '0';小時十位數 hour db '0',':';小時個位數 tenmin db '0';分鐘十位數 minute db '0',':';分鐘個位數 tensec db '0';秒十位數 second db '0’;秒個位數 data ends

stack segment stack 'stack' db 256 dup(0)stack ends

code segment assume cs:code,ds:data,es:data

start: mov ax,seg data mov es,ax mov ds,ax

cli;使中斷標志IF=0 mov al,8;保存源中斷向量 mov ah,35h int 21h push es push bx

mov ax,0

mov es,ax;es置零,這是準備中斷向量的寫入 mov di,20h

mov ax,offset timer;中斷子程序timer的偏移量 stows

;字符串填充,將AX的內容

;(timer偏移量)存入di所指向的單元,;di的增減取決于DF,默認段基址總是ES mov ax,cs

stosw;timer端基址

mov al,36h

out 43h,a;設置8253控制字為36H

mov bx,11932

;分頻系數為11932,分頻結

;果1.1932MHz/11932=100Hz,10ms變化一次

mov al,bl;分兩次設置分頻系數 out 40h,al

mov al,bh out 40h,al

mov al,0fch;主PIC端口設置為0fch out 21h,al

sti;開中斷,允許外部中斷

mov ax,seg data mov es,ax mov ds,ax

mov dx,offset msg1;打印提示信息1 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h

settime:mov si,offset tenhour;設定時間 mov ah,01h int 21h cmp al,0dh jz forever1 cmp al,'0' jc error2;如果輸入不合法,報錯 cmp al,'3' jnc error2 mov [si],al inc si cmp al,'2' jz ershi

mov ah,01h;如果小時高位為1,;低位可以設置0~9 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error2 cmp al,'9'+1 jnc error2 mov [si],al inc si jmp fen

ershi: mov ah,01h;如果小時高位為2,低位可以設置0~4 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error2 cmp al,'4' jnc error2 mov [si],al inc si jmp fen

fen: mov ah,01h;分高位可設置0~5 int 21h cmp al,0dh jz forever1 cmp al,':' jnz error1 mov [si],al inc si

mov ah,01h int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'6' jnc error1 mov [si],al inc si

zcy4: mov ah,01h;分低位0~9 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'9'+1 jnc error1 mov [si],al inc si jmp zcy

settime2:jmp settime;用來跳轉接力 error2: jmp error1 forever1:jmp next2

zcy: mov ah,01h;秒高位可設置0~5 int 21h cmp al,0dh jz forever1 cmp al,':' jnz error1 mov [si],al inc si

mov ah,01h int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'6' jnc error1 mov [si],al inc si

mov ah,01h;秒低位可設置0~9 int 21h cmp al,0dh jz forever1 cmp al,'0' jc error1 cmp al,'9'+1 jnc error1 mov [si],al inc si

jmp next2

error1: mov dl,0ah;用來報錯:設置時間不合法 mov ah,02h int 21h

mov dx,offset msg2;打印提示信息2 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h

jmp settime

settime3: jmp settime2;跳轉接力

next2: MOV AX,0003H;做時鐘顯示初始化 INT 10H;清屏顯示 mov dl,0ah mov ah,02h int 21h mov dx,offset msg3;打印提示信息3 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h forever:mov bx,offset tenhour;這個程序段循環執行 mov cx,8 cmp tenhour,'2';如果超過24點,置為0點 jnz dispclk cmp hour,'4' jnz dispclk mov tenhour,'0' mov hour,'0' dispclk:mov dl,[bx];用來顯示當前時間 call dispchar inc bx loop dispclk

;調用顯示子程序,顯示初始狀態時間,;比如”11:11:11"

mov dl,0dh;輸出一個換行 call dispchar

xor al,al;讀鍵盤緩沖區 mov ah,0bh int 21h cmp al,0FFH jnz next3 mov ah,08h;取其字符 int 21h cmp al,03h;Ctrl+C退出 jz stop cmp al,'s';S/s設定時間 jz settime3 cmp al,'S' jz settime3 cmp al,0dh jnz next3 mov dl,0ah;回車則使用秒表功能 mov ah,02h int 21h jmp forever

next3: mov al,second

next: cmp al,second;判斷second是否發生變化je next;如果沒有,循環比較

jmp forever;如果有變化,刷新輸出

stop: mov dx,offset msg4;打印提示信息4 mov ah,09h int 21h mov dl,0ah mov ah,02h int 21h

pop dx;恢復中斷向量 pop ds mov al,8 mov ah,25h int 21h mov ah,4ch int 21h

timer proc far;中斷程序timer push ax

dec count100;計數100次

jnz timerx;如果計數小于100,跳出中斷 mov count100,100

;否則重置count100<=100;1s已經到達

inc second;加一秒 cmp second,'9'

;判斷大小,用于進位,以下原理相同 jle timerx

mov second,'0' inc tensec cmp tensec,'6' jl timerx

mov tensec,'0' inc minute cmp minute,'9' jle timerx

mov minute,'0' inc tenmin cmp tenmin,'6' jl timerx

mov tenmin,'0' inc hour cmp hour,'9' ja adjhour cmp hour,'3' jnz timerx

cmp tenhour,'1' jnz timerx mov hour,'1' mov tenhour,'0'

jmp short timerx;段內短轉移

adjhour:inc tenhour mov hour,'0' timerx: mov al,20h out 20h,al;主PIC口地址 pop ax;出棧恢復 iret;中斷返回 timer endp

dispchar proc near;顯示子函數 push bx mov bx,0 mov ah,02h

int 21h

;DOS功能調用,輸出DL內容 pop bx ret

dispchar endp

code ends end start

五、實驗結果(反色)

這幅圖是運行程序之后,設定時間,輸入的時間不合法的截圖。當輸入不合法的字符時,對彈出一條錯誤信息,然后要求重新輸入時間。

這幅圖是輸入一個合法字符串后,時鐘被設定為該值,并且正常計數的程序截圖。

這幅圖是在時鐘運行的過程中,按下Enter鍵,進入秒表模式的截圖。秒表模式,會將按下Enter的時間保存下來。

這幅圖是在時鐘運行的過程中,按下S鍵,進入設定模式的截圖。該截圖輸入字符串不合法。當輸入合法的字符串后,程序將清屏,這是截圖和正常計時狀態一樣。

這幅圖是按下Ctrl+C,程序正常退出的截圖。程序正常退出后,與之前的運行情況完全一樣,程序運行不死機。

六、實驗總結:

這次微原實驗是我設計比較大型的匯編程序,從如何使用8253/8255開始,到程序被完整調通為止,這個實驗帶給我的是對于課本第七章、第八章的知識更加清晰的認識與了解,和對于微機運行的原理的進一步認識。在這次實驗中,我都要求自己先做整體思路規劃,再去做代碼實現,這樣節省了我大量時間。也給我帶來了很多收獲。

整體的思路規劃:我認識到,相比于直接悶頭就上的編程方法,有一個好的整體思路規劃,會節省很多后期的力氣,對于任務的完成大有裨益。

嚴謹認真的代碼風格:匯編語言的編譯器不如C++等高級語言,當程序出錯時,并不會給出錯誤。我們要有嚴謹的代碼風格,才能保證效率。

學會調試:匯編語言的編譯器較差,當程序出錯時,我們要善用DEBUG工具,去認真地分析程序的每一部動向,找到問題所在。

回歸課本基本概念:在編程的過程中,曾經出過一個bug,總是無法正常的進入計時中斷Timer。經過我查閱課本,發現是8253的控制字設置有問題。這說明我對課本的內容掌握的還不夠好,應該多多回歸課本基本概念,才可以順利的編程。

第二篇:北京郵電大學微機原理與接口技術硬件實驗報告

信息與通信工程學院

微機原理與接口技術硬件實驗報告

姓 學 序

級:

名:

號:

號:

期: 2015-10-30——2015-12-26 目錄

實驗一 I/O地址譯碼.............................................................................................................................3

一、實驗目的............................................................................................................................3

二、實驗原理及內容..............................................................................................................3

三、硬件接線圖與軟件程序流程圖..................................................................................3

四、源程序.......................................................................................................................................4

五、實驗結果..................................................................................................................................5

六、實驗總結..................................................................................................................................5

七、實驗收獲與心得體會...........................................................................................................5 實驗二簡單并行接口..............................................................................................................................5

一、實驗目的............................................................................................................................5

二、實驗原理及內容..............................................................................................................5

三、硬件接線圖與軟件程序流程圖........................................................................................6

四、源程序.......................................................................................................................................6

五、實驗結果..................................................................................................................................7

六、實驗總結..................................................................................................................................7

七、實驗收獲與心得體會...........................................................................................................7 實驗四七段數碼管..................................................................................................................................7

一、實驗目的..................................................................................................................................7

二、實驗原理及內容....................................................................................................................8

三、硬件接線圖與軟件程序流程圖........................................................................................8

四、源程序.......................................................................................................................................9

五、實驗結果...............................................................................................................................11

六、實驗總結...............................................................................................................................11

七、實驗收獲與心得體會........................................................................................................11 實驗八可編程定時器/計數器(8253/8254).........................................................................11

一、實驗目的...............................................................................................................................11

二、實驗原理及內容.................................................................................................................11

三、硬件接線圖與軟件程序流程圖.....................................................................................12

四、源程序....................................................................................................................................13

五、實驗結果...............................................................................................................................17

六、實驗總結與思考題............................................................................................................17

七、實驗收獲與心得體會........................................................................................................17 實驗十六串行通訊8251....................................................................................................................18

一、實驗目的...............................................................................................................................18

二、實驗原理及內容.................................................................................................................18

三、硬件接線圖與軟件程序流程圖.....................................................................................18

四、源程序....................................................................................................................................19

五、實驗結果...............................................................................................................................22

六、實驗總結與思考題............................................................................................................22

七、實驗收獲與心得體會........................................................................................................22

實驗一 I/O地址譯碼

一、實驗目的

掌握I/O地址譯碼電路的工作原理。

二、實驗原理及內容

1、實驗電路如圖1-1所示,其中74LS74為D觸發器,可直接使用實驗臺上數字電路實驗區的D觸發器,74LS138為地址譯碼器。譯碼輸出端Y0~Y7在實驗臺上“I/O地址“輸出端引出,每個輸出端包含8個地址,Y0:280H~287H,Y1:288H~28FH,??當CPU執行I/O指令且地址在280H~2BFH范圍內,譯碼器選中,必有一根譯碼線輸出負脈沖。例如:執行下面兩條指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX)

Y4輸出一個負脈沖,執行下面兩條指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX)Y5輸出一個負脈沖。

利用這個負脈沖控制L7閃爍發光(亮、滅、亮、滅、??),時間間隔通過軟件延時實現。

2、接線: Y4/IO地址接 CLK/D觸發器 Y5/IO地址接 CD/D觸發器

D/D觸發器接 SD/D角發器接 +5V Q/D觸發器接 L7(LED燈)或邏輯筆

三、硬件接線圖與軟件程序流程圖

硬件連接圖如下: 程序流程圖如下:

四、源程序

CODE SEGMENT

ASSUME CS:CODE ;定義代碼段

START:

MOV DX,2A0H

;選通Y4

OUT DX,AL

CALL DELAY

;延時

MOV DX,2A8H

;選通Y5

OUT DX,AL

CALL DELAY ;延時

MOV AH,1H

INT 16H;01號功能調用,從鍵盤接收按鍵 JZ START

;無鍵按下,返回START MOV AH,4CH;有鍵按下,返回DOS系統 INT 21H

DELAY PROC NEAR

;延時子程序,循環系數為100

MOV BX,100 LOOP1: MOV CX,0

LOOP2: LOOP LOOP2

DEC BX

JNZ LOOP1

RET

DELAY ENDP

CODE

ENDS

END START

五、實驗結果

按下鍵盤時L7閃爍發光,交替亮滅。

六、實驗總結

實驗一開始時不理解怎樣選通Y4和Y5的地址,對整個接口電路分析后才明白了譯碼電路真正的原理。

七、實驗收獲與心得體會

本次實驗主要了解了端口的輸出,D觸發器作為一個外部端口實現了向D觸發器內寫值并正確輸出,控制燈泡亮滅,實現了譯碼功能。對I/O接口有了更深的理解,對以后的實驗很有幫助。這次實驗是第一次用匯編語言來讓硬件實現功能,和之前學過的C++有很大的區別,也讓我進一步看到了他們的不同之處。

實驗二簡單并行接口

一、實驗目的

掌握簡單并行接口的工作原理及使用方法。

二、實驗原理及內容

1、按下面圖4-2-1簡單并行輸出接口電路圖連接線路(74LS273插通用插座,74LS32用實驗臺上的“或門”)。74LS273為八D觸發器,8個D輸入端分別接數據總線D0~D7,8個Q輸出端接LED顯示電路L0~L7。

2、編程從鍵盤輸入一個字符或數字,將其ASCⅡ碼通過這個輸出接口輸出,根據8個發光二極管發光情況驗證正確性。

3、按下面圖4-2-2簡單并行輸入接口電路圖連接電路(74LS244插通用插座,74LS32用實驗臺上的“或門”)。74LS244為八緩沖器,8個數據輸入端分別接邏輯電平開關輸出K0~K7,8個數據輸出端分別接數據總線D0~D7。

4、用邏輯電平開關預置某個字母的ASCⅡ碼,編程輸入這個ASCⅡ碼,并將其對應字母在屏幕上顯示出來。

5、接線:1)輸出

按圖4-2-1接線(圖中虛線為實驗所需接線,74LS32為實驗臺邏輯或門)2)輸入

按圖4-2-2接線(圖中虛線為實驗所需接線,74LS32為實驗臺邏輯或門)

三、硬件接線圖與軟件程序流程圖

硬件連接圖如下:

圖4-2-1

圖4-2-2

程序流程圖如下:

四、源程序 CODE SEGMENT;定義代碼段 ASSUME CS:CODE START:MOV AH,1 INT 21H;從鍵盤檢測輸入 CMP AL,00011011B JZ EXIT MOV DX,2A8H;送出ASCII碼 OUT DX,AL MOV DX,2A0H;讀入ASCII碼 IN AL,DX MOV DL,AL MOV AH,02H;屏幕顯示ASCII碼 INT 21H JMP START;循環檢測

EXIT:MOV AX,4C00H;返回DOS INT 21H CODE ENDS END START

五、實驗結果

從鍵盤輸入字符或數字,若不是Esc鍵,則二極管顯示其ASCII碼情況,若按下ESC,則返回dos,且各LED燈滅。

六、實驗總結

實驗一開始不太明白如何把輸入的字符通過二極管顯示出來,后來參考了實驗一的譯碼輸出,理解了實驗原理。

七、實驗收獲與心得體會

這次實驗是對I/O接口譯碼電路的運用,進一步熟悉了譯碼電路、鍵盤輸入檢測等功能的運用,讓我很好的明白了CPU的地址總線與外部接口是如何工作,也進一步了解了硬件實驗,希望在以后的實驗中有更多的收獲。

實驗四七段數碼管

一、實驗目的

掌握數碼管顯示數字的原理

二、實驗原理及內容

1、靜態顯示:按4-4-1連接好電路,將8255的A口PA0~PA7分別與七段數碼管的段碼驅動輸入端a~dp相連,位碼驅動輸入端S0、S1、S2、S3接PC0、PC1、PC2、PC3,編程在數碼管顯示自己的學號的后四位。(或編程在數碼管上循環顯示“00-99”,位碼驅動輸入端S0、S1 接PC0、PC1;S2、S3接地。)

2、接線: PA7~PA0/8255 接dp~a/LED數碼管 PC3~PC0/8255 接 S3~S0/LED數碼管 CS/8255 接 Y1/IO地址

三、硬件接線圖與軟件程序流程圖

硬件連接圖如下:

程序流程圖如下:

四、源程序

DATA SEGMENT;定義代碼段 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV DX,28BH;控制口地址

MOV AL,80H;控制字10000000設定工作方式0,所有口都置為輸出

OUT DX,AL

LOP1: MOV DX,288H ;A口地址

MOV AL,3fH;段選寫0 OUT DX,AL

MOV DX,28AH;位選第4個LED,C口地址

MOV AL,08H OUT DX,AL

MOV DX,28AH;熄滅數碼管

MOV AL,0 OUT DX,AL

MOV DX,288H;段選寫3 MOV AL,4fH OUT DX,AL

MOV DX,28AH ;位選第3個LED MOV AL,04H OUT DX,AL

MOV DX,28AH;熄滅數碼管

MOV AL,0 OUT DX,AL

MOV DX,288H ;段選寫0 MOV AL,3fH OUT DX,AL

MOV DX,28AH;位選第2個LED MOV AL,02H OUT DX,AL

MOV DX,28AH ;熄滅數碼管

MOV AL,0 OUT DX,AL

MOV DX,288H ;段選寫0 MOV AL,3fH OUT DX,AL

MOV DX,28AH ;位選第1個LED MOV AL,01H OUT DX,AL

MOV DX,28AH ;熄滅數碼管 MOV AL,0 OUT DX,AL

MOV AH,01H INT 16H JNZ EXIT;有鍵輸入則退出

JMP LOP1 EXIT: MOV AX,4C00H;返回DOS INT 21H CODE ENDS END START

五、實驗結果

結果顯示了學號的后四位0300,如下如所示:

當有鍵盤輸入時,返回DOS系統。

六、實驗總結

本次實驗用了8255并行接口芯片,采用方式0,所有口都用輸出模式,A口為段選,控制輸出的數據,C口為位選,控制不同的位不斷掃描、交替亮滅。

七、實驗收獲與心得體會

這次實驗在前兩次實驗的基礎上,用到了并行接口芯片和數碼管,在數碼管上顯示數據,在8255工作在方式0時,用兩個輸出端口,控制數碼管工作,數碼管在之前數電實驗的基礎上比較好理解,這次實驗較之前的實驗更有難度,不過學到了很多知識,由于理論還沒有講到8255,實驗有一定難度,不過對理論課也有一定的幫助。

實驗八可編程定時器/計數器(8253/8254)

一、實驗目的

學習掌握8253用作定時器的編程原理;

二、實驗原理及內容

1.8253初始化

使用8253前,要進行初始化編程。初始化編程的步驟是: ①向控制寄存器端口寫入控制字對使用的計數器規定其使用方式等。②向使用的計數器端口寫入計數初值。2.8253控制字

D7D6=00:使用0號計數器,D7D6=01:使用1號計數器 D7D6=10:使用2號計數器,D7D6=11:無效 D5D4=00:鎖存當前計數值

D5D4=01:只寫低8位(高8位為0),讀出時只讀低8位 D5D4=10:只寫高8位(低8位為0),讀出時只讀高8位 D5D4=11:先讀/寫低8位,后讀/寫高8位計數值

D3D2D1=000:選擇方式0,D3D2D1=001:選擇方式1 D3D2D1=X10:選擇方式2,D3D2D1=X11:選擇方式3 D3D2D1=100:選擇方式4,D3D2D1=101:選擇方式5 D0=0:計數初值為二進制,D0=1:計數初值為BCD碼數

3.實驗內容

完成一個音樂發生器,通過喇叭或蜂鳴器放出音樂,并在數碼管上顯示樂譜。利用小鍵盤實現彈琴功能,并顯示彈奏的樂譜。

三、硬件接線圖與軟件程序流程圖

接線圖如下:

CS /8253 接 Y0 /IO 地址 GATE0 /8253 接 +5V CLK0 /8253 接 1M時鐘

OUT0 /8253 接喇叭或蜂鳴器 程序流程圖如下:

四、源程序

DATA SEGMENT FENPIN DW 0001H,3906,3472,3125,2932,2604,2344,2083,1953;分頻比 DIGITAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;數碼管 MUSIC DB 5,3,5,3,5,3,1,1,2,4,3,2,5,5,5,5,5,3,5,3,5,3,1,1,2,4,3,2,1,1,1,1,2,2,4,4,3,1,5,5;存放播放的樂曲音符

NUM DB 00H,070H,0B0H,0D0H,0E0H ;檢測鍵盤輸入 DATA ENDS

STACK SEGMENT STACK 'STACK' DB 100 DUP(?)STACK ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK

;延時子程序

DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RET DELAY ENDP

;延時子程序2 DELAY1 PROC NEAR PUSH CX MOV CX,0FFFFH WAIT1: LOOP WAIT1 POP CX RET DELAY1 ENDP

;獲取鍵盤輸入值的子程序 KEY PROC NEAR PUSH AX ;保護現場 PUSH CX PUSH DX MOV CX,01H 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,01H JMP GOT NEXT: INC CX ;修改變量掃描下一行 CMP CX,05H JNZ JUMP1 MOV CX,01H JUMP1: JMP CHECK NEXT1: MOV BX,04H JMP GOT NEXT2: MOV BX,03H JMP GOT NEXT3: MOV BX,02H

;計算按下鍵盤的數值

GOT: SUB CX,01H MOV AL,CL MOV DL,04H MUL DL ADD BL,AL SUB BL,01H ;此時BX中所存即為對應的偏移量 POP DX ;恢復現場 POP CX POP AX RET KEY ENDP

;主程序

START: MOV AX,DATA MOV DS,AX ;8253初始化

MOV DX,283H MOV AL,36H控制字為00110110,選計數器0,先讀低字節再讀高字節,選用工作方式3 OUT DX,AL ;8255初始化

MOV DX,28BH MOV AL,81H ;C口輸入(10000001)

OUT DX,AL MOV DX,289H ;B口位選數碼管

MOV AL,01H OUT DX,AL ;掃描鍵盤

LOOP1: CALL KEY CMP BX,0 ;按0播放音樂 JZ PLAY0 CMP BX,9 ;按9退出 JZ EXIT ;按1~8發出對應音 MOV CX,BX MOV BX,OFFSET DIGITAL ;數碼管顯示音符 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 ;計數,先低八位后高八位 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,AL LOOP2: 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,01H PLAY: PUSH CX

;讀取音符,存于CX中

MOV BX,OFFSET MUSIC ADD BX,CX MOV AL,[BX] MOV CL,AL MOV CH,0H ;數碼管顯示

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 ;計數,先低八位后高八位 MOV AX,[BX] MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL POP CX ;延時,持續播放

MOV AX,90H LOOP3: CALL DELAY1 DEC AX JNZ LOOP3 ;樂曲未結束時,CX加1 INC CX CMP CX,28H;共40個音符 JNZ JUM JMP LOOP1 JUM: JMP PLAY

EXIT: MOV AL,0 MOV DX,288H OUT DX,AL MOV AX,4C00H INT 21H

CODE ENDS END START

五、實驗結果

按下鍵盤0,播放歌曲“粉刷匠”,數碼管顯示相應的音符;按下小鍵盤的1——8,喇叭播放所對應的音符,數碼管顯示按下的音符;按下鍵盤的9時,數碼管熄滅,返回DOS系統。

六、實驗總結與思考題

實驗主要用了8253計數器,其工作在方式3下,作為方波發生器,產生不同音符的不同頻率的方波。根據音符頻率和1M的時鐘確定輸入頻率,檢測鍵盤的輸入,判斷輸入的字符,8253產生相應的頻率,喇叭播放音符,數碼管輸出按下的音符。實驗的難點在于怎樣判斷鍵盤的輸入。

思考題:寫出8253計數初值,輸入頻率和輸出頻率的關系:

答:輸出頻率 = 輸入頻率/8253計數初值

七、實驗收獲與心得體會

這次實驗較之前的實驗難度較大,用到了8255、8253、數碼管,是個相對來說系統點的實驗,這也使得代碼在實現起來比較多而復雜。一開始實驗時不理解8255計數器的工作原理,對音符如何通過喇叭顯示出來也不明白,在弄清楚了他們的原理和相互之間的聯系之后,才慢慢理解。實驗的內容要求編一小段音樂,雖然實驗很難,但是也增加了我們對實驗的興趣。實驗十六串行通訊8251

一、實驗目的

1、了解串行通訊的基本原理。

2、掌握串行接口芯片8251的工作原理和編程方法。

二、實驗原理及內容

1、按下圖連接好電路,(8251插通用插座)其中8254計數器用于產生8251的發送和接收時鐘,TXD和RXD連在一起。

2、編程: 從鍵盤輸入一個字符,將其ASCII碼加 1 后發送出去,再接收回來在屏幕上顯示,(或將內存制定區域內存放的一批數據通過8251A的TXD發送出去,然后從RXD接收回來,并在屏幕上或數碼管上顯示出來。)實現自發自收。

3、接線: CLK0 /8254 接 1M時鐘 GATE0 /8254 接 +5V 0UT0 /8254 接 TX/RXCLK /8251 CS /8254 接 Y0 /IO地址 CS /8251 接 Y7 /IO地址 RXD /8251 接 TXD /8251

三、硬件接線圖與軟件程序流程圖

硬件接線圖如下: 程序流程圖如下:

四、源程序

DATA SEGMENT;定義數據段

STRING DB 'SEND ','$';定義字符串 STRING1 DB 'RECEIVE ','$' STRING2 DB 0DH,0AH,'$'

DATA ENDS

STACK SEGMENT STACK 'SATCK';定義堆棧段

DB 100 DUP(?)STACK ENDS

CODE SEGMENT;定義代碼段

ASSUME CS:CODE,DS:DATA,SS:STACK

;延時子程序

DELAY PROC NEAR PUSH CX MOV CX,100H WAIT0: LOOP WAIT0 POP CX RET DELAY ENDP

START: MOV AX,DATA MOV DS,AX;8254初始化

MOV DX,283H MOV AL,16H;(00010110)計數器0,只讀低字節,方式3,二進制 OUT DX,AL CALL DELAY MOV DX,280H;計數器0,初值為52 MOV AL,34H;初值52 OUT DX,AL CALL DELAY;8251初始化

MOV DX,2B9H;控制端口地址

MOV AL,40H;(01000000)內部復位命令 OUT DX,AL NOP CALL DELAY MOV AL,5E;(01011110)方式控制字:波特率因子為16,一位停止位,一位奇校

驗的異步方式

OUT DX,AL MOV AL,37H;(00110111)命令控制字 OUT DX,AL CALL DELAY

;發送數據

GOON: MOV DX,2B9H;讀狀態字 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;接收數據

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;顯示接收的數據 INT 21H MOV AH,09H MOV DX,OFFSET STRING2 INT 21H JMP GOON ;不斷的發送讀寫

EXIT: MOV AX,4C00H;返回DOS INT 21H

CODE ENDS END START

五、實驗結果

實驗結果如上圖所示,輸出字符為輸入字符的下一個,可以連續的發送接收,按下Esc健時,返回DOS。

六、實驗總結與思考題

實驗用到了串行通信接口芯片8251A,采用異步方式,確定了方式控制字。8254計數器的計數初值=時鐘頻率/(波特率×波特率因子),這里的時鐘頻率接 1MHz,波特率若選1200,波特率因子若選16,則計數器初值為52。

實驗的難點在于發送和接收,當TxRDY為高電平時發送緩存區空,此時可以寫入數據,8251A與01進行與運算,若結果為1表示可以發送數據;當RxRDY為高電平時接收緩存區滿,此時可以讀數據,8251A與10進行與運算,若結果為1表示可以接收數據。

思考題:在實驗中,你如何確定RxC,TxC的值,寫出計算公式 答:RxC=TxC=8253輸出時鐘頻率=8251波特率*波特率因子

七、實驗收獲與心得體會

這次實驗主要用了串行接口8251A,相比并行接口較為簡單,還用到了計數器8253,又加強了對其的了解,這次實驗課是在理論課剛上完之后,對8251A的理解也比較到位,所以整個實驗都進行的比較順利,對理論課不太懂得知識,經過實驗后也都弄得比較清楚。這是硬件實驗的最后一次,用到了兩個芯片,還是比較系統的。這學期的硬件實驗讓我提高了自己的實際操作能力,幫助更好的理解了理論課所學的知識,也對匯編語言有了更直觀的了解,收獲了很多。

第三篇:北京郵電大學通信原理復習計劃

北郵通信原理復習計劃

一 考研數據分析

北京郵電大學信息與通信工程學院每年得招生人數每年都在700人左右(其中保送生150人左右),2010年的招生人數可上北郵主頁上查詢。2005年初試分數線300分,2006年初試分數線320分,2007年初試分數線305分,2008年初試分數線320分,2009年初試分數線300分,注意,這個只是復試分數線,也就是參加復試同學中的最低分數,實際錄取分數因每個組的情況不同而不同,最高的有370+,低的也有才330+的。

二 復習計劃

因為你們暑假要上為期大概一個月的課程,所以暑假期間就不加重你們的負擔,但上課結束后就得全身心的開始復習專業課。

具體復習過程分為三個階段: 第一階段:8月20日到10月19日

本階段的主要任務是過一遍課本,先不要做課后習題,但可以稍微看一下,大致了解一下方向和難度,為第二遍看書做相關的準備,各章節的時間和精力分派參照各章節的星級水平,但告誡各位第一遍最好是同等對待,因為通原的考試范圍就是書上所涉及的所有內容,各章節的星級水平劃定只是根據以往真題得來的,所以該看的都得看。

第二階段:10月20日至12月19日之前是強化階段

此階段是真個復習期間中最重要的時間段,此過程完成的好壞將直接影響最后卷面成績,所以各位要用心對待,至于復習時間可以根據個人情況進行適當的延長;具體復習內容是先看書,再做習題集,一遍不夠可以多來幾次。

第三階段:12月20日開始是沖刺階段

此階段主要是做最后的總結,連串知識點和做歷年真題。三 《通信原理》知識點分析

第一章 序論

通信系統基本模型★

第二章 第三章 預備知識

1.自相關函數與功率譜密度★★★★★

2.互相關函數與互譜密度★

3.Hilbert變換的定義與性質★★ 4.解析信號的定義與性質★★★

5.帶通信號的表示法、復包絡、帶通系統的等效基帶分析★★★ 6.隨機過程的平均自相關函數、平均功率譜密度、循環平穩過程★ 7.窄帶平穩高斯噪聲:定義、表示式、正交分量與同相分量的統計特性、幅度和相位的統計特性。★★★

第三章 模擬調制

1.DSB-SC的原理、信號表達式、波形特點、調制解調方法、頻譜分析(確定信號、隨機信號)、帶寬計算、抗噪聲性能分析★★★

2.AM的原理、信號表達式、波形特點、調制解調方法、頻譜分析(確 定信號、隨機信號)、帶寬計算、抗噪聲性能分析★★★

3.SSB的原理、信號表達式、波形特點、調制解調方法、頻譜分析(確定信號、隨機信號)、帶寬計算、抗噪聲性能分析★★★

4.VSB的原理、信號表達式、波形特點、調制解調方法、頻譜分析(確定信號、隨機信號)、帶寬計算、抗噪聲性能分析★★★

5.PM、FM的原理、信號表達式、調制指數、相位偏移常數、頻率偏移常熟、PM和FM的關系。單音頻角度調制信號的頻譜分析及帶寬計算。信號表達式、波形特點、調制解調方法、頻譜分析(確定信號、隨機信號)、帶寬計算、抗噪聲性能分析★★★

6.窄帶調角信號表達式及其在間接調頻中的作用★★★★ 7.調頻方法(直接調頻、間接調頻)。定性了解鑒頻方法(普通鑒頻器、鎖相鑒頻器)。

8.FM在大信噪比下的信噪比分析。輸出噪聲的拋物線特征。★★ 9.FMD的原理和典型應用實例。★★ 第4章 數字

1.信息速率/碼元速率、比特間隔/碼元間隔、誤比特率/誤符號率、頻帶利用率。★★★★★

2.數字PAM信號的表達式、常用的數字PAM信號(單雙極性的RZ/NRZ、差分碼、多電平碼)★★★

3.PAM信號的功率譜密度分析,功率譜密度的基本特點。★★

4.線路碼型的目的。AMI、HDB3碼、Manchester碼的編解碼規則、信號特點(時域、頻域)。★★★ 5.數字基帶信號的接收原理、利用低通或匹配濾波器接收時的誤碼率分析、最佳門限問題。★★★★★

6.碼間干擾的概念、奈奎斯特準則、奈奎斯特極限、升余弦滾降★★★★★

7.最佳基帶系統★★★★★

8.眼圖的測量方法、眼圖所體現的信息★★

9.定性了解均衡的目的、時域線性均衡的基本原理、ZF和MMSE準則的含義、DFE的概念、自適應均衡的概念。★★

10.部分響應系統的目的,相關編碼和預編碼的原理和作用。第I類和第IV類部分響應系統中具體的編碼規則、頻域及時域特性。★★

11.符號同步的概念,符號同步的基本方法:線譜法,超前-滯后法★★ 第5章 數字頻帶傳輸

1.OOK、2FSK的原理、信號表達式、調制解調框圖(限帶/非限帶,相干/非相干,最佳/非最佳)、功率譜分析、帶寬計算、相干解調的誤碼率分析。定性了解非相干解調的誤碼率分析。★★★★★

2.BPSK的原理、信號表達式、調制解調框圖(限帶/非限帶,最佳/非最佳)、功率譜分析、帶寬計算、誤碼率分析;相干載波提取:平方環、Costas環。相位模糊問題。★★★

3.DPSK的原理和解調方法(相干/非相干),誤碼率(差分相干只做定性要求)★★★★★★

4.QPSK的原理、信號表達式、調制解調框圖、功率譜、誤碼率分析;格雷映射。誤比特率與誤符號率。★★★★ 5.定性了解DQPSK的原理。★★ 6.OQPSK的目的,方法。★★

7.信號空間的概念,歸一化正交基函數,M元信號的矢量表示★★★★ 8.最佳接收理論,MAP準則/ML準則;★★★

9.AWGN信道中M進制確定信號的最佳接收,匹配濾波器和相關器的等價性。★★★★★

10.MASK、MPSK、MQAM的星座圖、信號表達式、調制解調框圖、功率譜密度、相干解調時誤符號率分析方法。★★★★

11.了解MFSK的矢量表示、波形相關系數、最佳接收框圖、帶寬計算。定性了解誤碼率隨M增加而減小的特性★★★

12.MSK的原理、相位路徑、正交表達式、功率譜密度及誤碼率★ 13.定性了解GMSK的簡單概念★ 第6章 模擬信號的數字化

1.低通及基帶信號的抽樣定理;★★★★ 2.TDM原理★★★★

3.標量量化:均勻量化及最佳量化的原理及性能分析★★★

4.對數壓縮:A律u律壓縮的目的、A律十三折線編碼規則★★★ 5.定性了解DPCM及增量調制的★★ 第7章 信道及信道容量

1.信道的實例和模型★★

2.多經衰落(平衰落和頻率選擇性衰落,時延擴展,相關帶寬,多普勒擴展,相干時間)★★★★

3.抗衰落的一般措施★★★ 4.分集接受的基本原理★★★

5.信道容量的分析(二元無記憶對稱信道,AWGN信道)★★★ 6.信道的復用★★★★ 第8章 信道編碼

1.信道編碼的基本概念★★ 2.線性分組碼★★★★★

基本概念★★★★

生成矩陣和監督矩陣★★★★★

對偶碼★★

系統碼的編碼和譯碼★★★★★

漢明碼★★

3.循環碼★★★★★

基本概念★★★★

多項式描述基本概念★★★★★

生成多項式和生成矩陣基本概念★★★★★

監督多項式和監督矩陣★★★★★

編碼電路★★★★★

譯碼電路★★

編碼的加長和縮短★

循環冗余檢驗★★

4.卷積碼的編碼和譯碼★★★★★ 5.BCH碼,糾正突發錯誤碼,交織,級聯碼,Turbo碼,高效率信道編碼TCM和LDPC★★★

第9章 擴頻通信

1.瑞德麥徹碼及其性質★★ 2.沃爾什碼及其性質★★★ 3.正交碼的應用★★★★

4.m序列的產生及性質,自相關特性★★★★★

5.直接序列擴頻的原理,功率譜密度,四種抗干擾性能★★★★★ 第10章 正交頻分復用多載波調制技術

1.OFDM多載波調制技術的基本原理★★★★★ 2.OFDM調制的熟悉實現★★★★★ 3.循環前綴★★★★

4.OFDM系統的收發信機★★★ 5.OFDM系統的峰均比★★★

6.載波頻率偏移對子載波間干擾的影響★★★★ 7.OFDM系統的應用★★ 第11章 通信系統的優化

1.通信系統優化的物理與數學模型★★★ 2.通信系統單指標下的優化★★★★

3.基于AWGN信道在可靠指標下的優化★★★

4.隨參信道通信系統在可靠指標下優化的思路★★ 第12章 通信網的基本知識★

第四篇:北京科技大學微機原理實驗報告

微機原理及應用實驗報告

學院: 班級: 學號: 姓名:

微機實驗報告書(Ⅰ)學號:姓名:班級: 同組名單:實驗日期:

實驗題目:8253可編程定時器計數器

實驗目標:掌握8253的基本工作原理和編程方法 實驗步驟:

連接電路圖

如圖虛線連接電路,將計數器0設置為方式0,計數器初值為N(N<=0FH),用手動逐個輸入單脈沖,編程使計數值在屏幕上顯示,并同時用邏輯筆觀察OUT0電平變化(當輸入N+1個脈沖后OUT0變高電平)。程序框圖:

程序清單:

;*************************;;* 8253方式0計數器實驗 *;;*************************;IOPORT

EQU

0C800H-0280H

IO8253A EQU

IOPORT+283H

IO8253B EQU

IOPORT+280H

CODE SEGMENT

ASSUME

CS:CODE

START: MOV

AL,00010000B

;設置8253工作方式

MOV

DX,IO8253A

OUT

DX,AL

MOV

DX,IO8253B

;送計數初值為0FH

MOV

AL,0FH

OUT

DX,AL

LLL: IN

AL,DX

;讀計數初值

CALL

DISP

;調顯示子程序

PUSH

DX

MOV

AH,06H

MOV

DL,0FFH

INT

21H

POP

DX

JZ

LLL

;跳轉到LLL

MOV

AH,4CH

;退出

INT

21H

DISP PROC

NEAR

;顯示子程序

PUSH

DX

AND

AL,0FH

;首先取低四位

MOV

DL,AL

CMP

DL,9

;判斷是否<=9

JLE

NUM

;若是則為'0'-'9',ASCII碼加30H

ADD

DL,7

;否則為'A'-'F',ASCII碼加37H

NUM: ADD

DL,30H

MOV

AH,02H

;顯示

INT

21H

MOV

DL,0DH

;加回車符

INT

21H

MOV

DL,0AH

;加換行符

INT

21H

POP

DX

RET

;子程序返回

DISP ENDP

CODE ENDS

END

START 運行結果:

每輸入一個單脈沖,屏幕上的數值減1,從15減到0后(撥動16次后),檢測到OUT0輸出由低電平變為高電平。小結(體會與收獲):

通過預習和實驗,學會了 8253 芯片和微機接口原理和方法,掌握 8253 定時器/計數器的基本工作原理、工作方式和編程原理,熟悉了匯編代碼的編寫。實驗中,連接電路,利用代碼控制實驗電路,深對了課本理論的理解。

由于是第一次實驗,進程比較緩慢,所以僅進行了8253可編程定時器/計數器的一個實驗,下次實驗會熟練一些。

微機實驗報告書(Ⅱ)

學號:姓名:班級: 同組名單:實驗日期:

實驗題目:1.8253可編程定時器計數器

2.8255可編程并行接口(方式0)3.七段數碼管

實驗目標:1.掌握8253的基本工作原理和編程方法

2.掌握8255方式0的工作原理及使用方法 3.掌握數碼管顯示數字的原理

實驗步驟: 實驗一:

連接電路圖

按上圖連接電路,將計數器0、計數器1分別設置為方式3,計數初值設為1000,用邏輯筆觀察OUT1輸出電平的變化(頻率1HZ)。實驗二:

連接電路圖

1)實驗電路如圖,8255C口接邏輯電平開關K0~K7,A口接LED顯示電路L0~L7。

2)編程從8255C口輸入數據,再從A口輸出。實驗三:

連接電路圖

靜態顯示:按圖連接好電路,將8255的A口PA0~PA6分別與七段數碼管的段碼驅動輸入端a~g相連,位碼驅動輸入端S1接+5V(選中), S0、dp接地(關閉)。編程從鍵盤輸入一位十進制數字(0~9),在七段數碼管上顯示出來。程序框圖: 實驗一:

實驗二:

實驗三:

程序清單: 實驗一:

;*******************;* 8253分頻 *;******************* IOPORT EQU

0C800H-0280H

IO8253A EQU

IOPORT+283H

IO8253B EQU

IOPORT+280H

IO8253C EQU

IOPORT+281H

CODE SEGMENT

ASSUME

CS:CODE

START: MOV

DX,IO8253A;向8253寫控制字

MOV

AL,36H

;工作方式

OUT

DX,AL

MOV

AX,1000

;寫入循環計數初值1000

MOV

DX,IO8253B

OUT

DX,AL

;先寫入低字節

MOV

AL,AH

OUT

DX,AL

;后寫入高字節

MOV

DX,IO8253A

MOV

AL,76H

;設工作方式

OUT

DX,AL

MOV

AX,1000

;寫入循環計數初值1000

MOV

DX,IO8253C

OUT

DX,AL

;先寫低字節

MOV

AL,AH

OUT

DX,AL

;后寫高字節

MOV

AH,4CH

;程序退出

INT

21H

CODE ENDS

END

START

實驗二:

;*************************;;* 8255A的基本輸入輸出 *;;*************************;IOPORT EQU 0C800H‐280H IO8255A EQU IOPORT+288H IO8255B EQU IOPORT+ 28BH IO8255C EQU IOPORT+28AH CODE SEGMENT ASSUME CS:CODE START: MOV DX,IO8255B;對 8255 進行設定,A 輸出,C 輸入

MOV AL,10001001B

OUT DX,AL INPUT: MOV DX,IO8255C;從 C 輸入

IN AL,DX

MOV DX,IO8255A;從 A 輸出

OUT DX,AL

MOV DL,0FFH;判斷是否有按鍵

MOV AH,06H

INT 21H

JZ INPUT;若無,則繼續 C 輸入,A 輸出

MOV AH,4CH;否則,返回 DOS

INT 21H CODE ENDS END START 實驗三:

;************************************;;*鍵盤輸入數據(0-9)控制LED數碼管顯示*;;************************************;

DATA

SEGMENT

IOPORT

EQU

0C800H-280H IO8255A

EQU

IOPORT+288H IO8255B

EQU

IOPORT+28BH IO8255C

EQU

IOPORT+28AH

LED

DB

3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

MESG1

DB

0DH,0AH,'Input a num(0--9),other key is exit:',0DH,0AH,'$' DATA

ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

MOV

AX,DATA

MOV

DS,AX

MOV

DX,IO8255B

;使 8255 的A口為輸出方式

MOV

AX,10000000B

OUT

DX,AL

SSS:

MOV

DX,OFFSET MESG1

;顯示提示信息

MOV

AH,09H

INT

21H

MOV

AH,01

;從鍵盤接收字符

INT

21H

CMP

AL,30H

;是否小于 0

JL

EXIT

;若是則退出

CMP

AL,39H

;是否大于9

JG

EXIT

;若是則退出

SUB

AL,30H

;將所得字符的 ASCII 碼減 30H

MOV

BX,OFFSET LED

;BX為數碼表的起始地址

XLAT

;求出相應的段碼

MOV

DX,IO8255A

;從 8255 的A口輸出

OUT

DX,AL

JMP

SSS

;轉 SSS EXIT:

MOV

AH,4CH

;返回

INT

21H CODE

ENDS

END

START;

運行結果: 實驗一:

8253通道0和通道1均工作在方式3,計數初值均為1000。通道0的時鐘輸入為1MHz標準脈沖,產生1000Hz的方波;通道1以通道0輸出的1000Hz方波脈沖為輸入,產生1Hz的方波。用邏輯筆發現,OUT1 輸出電平呈規律性高低變化(顯示燈閃爍),時間間隔為 1s,說明輸出頻率為 1Hz,實現計時器功能。實驗二:

當邏輯開關K0~K7中的一個或幾個打開時,對應的LED燈就會亮起來,即利用8255A實現了基本的輸入輸出控制。實驗三:

靜態顯示:當從鍵盤輸入0~9任一數字時,七段數碼管上便 會顯示相應的數字,按下其他按鍵則退出程序。小結(體會和收獲):

通過本次實驗,進一步了解了8253可編程定時器/計數器;鞏固了可編程并行接口8255的基本知識點,了解了該芯片的應用。通過編程實現,熟悉了8255方式控制字,了解了方式0和基本工作原理。通過這三次實驗的學習,對于可編程接口芯片有了更深的認識,掌握了基本的微機接口方法。

在實驗過程中要細心,當編譯、鏈接或者運行的時候遇到錯誤的時候,要仔細檢查程序的輸入是否正確,很容易輸錯字母數字。

微機實驗報告書(Ⅲ)

學號:姓名:班級: 同組名單:實驗日期: 實驗題目:步進電機控制實驗

實驗目標:1.了解步進電機控制的基本原理

2.掌握控制步進電機轉動的編程方法

實驗步驟:

連接電路圖

1)按圖14連接線路,利用8255輸出脈沖序列,開關K0~K6控制步進電機轉速,K7控制步進電機轉向。8255 CS接288H~28FH。PA0~PA3接BA~BD;PC0~PC7接K0~K7。

2)編程:當K0~K6中某一開關為“1”(向上撥)時步進電機啟動。K7向上撥電機正轉,向下撥電機反轉。程序框圖:

程序清單:

;*******************************;;*

步進電機

*;;*******************************;

DATA

SEGMENT

IOPORT

EQU

0E400H-280H

IO8255A

EQU

IOPORT+288H

;8255A 輸出端口

IO8255B

EQU

IOPORT+ 28BH

;8255B 控制端口

IO8255C

EQU

IOPORT+ 28AH

;8255C 輸入端口

BUF

DB

0

MES

DB

'K0-K6 ARE SPEED CONTROL',0AH,0DH

DB

'K6 IS THE LOWEST SPEED ',0AH,0DH

DB

'K0 IS THE HIGHEST SPEED',0AH,0DH

DB

'K7 IS THE DIRECTION CONTROL',0AH,0DH,'$'

DATA

ENDS

CODE SEGMENT

ASSUME

CS:CODE,DS:DATA

START:

MOV

AX,CS

MOV

DS,AX

MOV

AX,DATA

MOV

DS,AX

MOV

DX,OFFSET MES

MOV

AH,09

INT

21H

MOV

DX,IO8255B

MOV

AL, 10001001B

OUT

DX,AL

;8255 C輸入, A 輸出

MOV

BUF,33H

OUT1:

MOV

AL,BUF

MOV

DX,IO8255A

OUT

DX,AL

PUSH

DX

MOV

AH,06H

MOV

DL,0FFH

INT

21H

POP

DX

JE

IN1

MOV

AH,4CH

INT

21H

IN1:

MOV

DX,IO8255C

IN

AL,DX

;輸入開關狀態

TEST

AL,01H

JNZ

K0

TEST

AL,02H

JNZ

K1

TEST

AL,04H

JNZ

K2

TEST

AL,08H

JNZ

K3

TEST

AL,10H

JNZ

K4

TEST

AL,20H

JNZ

TEST

JNZ

STOP:

MOV

MOV

JMP

K0:

MOV

SAM:

TEST

JZ

JMP

K1:

MOV

JMP

SAM

K2:

MOV

JMP

K3:

MOV

JMP

K4:

MOV

JMP

K5:

MOV

JMP

K6:

MOV

JMP

SAM

ZX0:

CALL

MOV

ROR

MOV

JMP

NX0:

CALL

MOV

ROL

MOV

JMP

DELAY

PROC

DELAY1:

MOV

DELAY2:

LOOP

K5

AL,40H K6

DX,IO8255C AL,0FFH

OUT1

BL,40H

AL,80H ZX0 NX0

BL,50H

BL,70H

SAM

BL,80H SAM

BL,0A0H SAM

BL,0C0H SAM

BL,0FFH

DELAY

AL,BUF

AL,1

BUF,AL OUT1

DELAY

AL,BUF

AL,1

BUF,AL OUT1

NEAR

CX,0FFFFH

DELAY2

DEC

BL

JNZ

DELAY1

RET

DELAY

ENDP

CODE

ENDS

END

START 運行結果:

當K0~K6中任意一開關向上撥時步進電機啟動,且K1速度最快,K6速度最慢;當K7向上撥電機正轉,向下撥電機反轉。當鍵盤中有任意鍵輸入的時候則程序終止。小結(收獲與體會):

實驗和理論是相互檢驗,相互補充和相互促進的,在實際動手動腦運用理論知識的時候,能更深入地領會概念,熟練運用,在此基礎上方能進行創新和自由發揮。通過本次實驗,我了解了步進電機控制的基本原理,掌握了控制步進電機轉動的編程方法。更加深入地了解了微機原理這門課程。

第五篇:微機原理實驗三子程序設計實驗

實驗三 子程序設計實驗

一、實驗目的

1.學習子程序的定義和調用方法。2.掌握子程序的程序設計、編制及調用。

二、實驗設備

TDN86/88教學實驗系統一臺

三、實驗內容及步驟

1.求無符號字節序列中的最大值和最小值

設有一字節序列,其存儲首址為3000H,字節數為08H。利用子程序的方法編程求出該序列中的最大值和最小值。實驗程序及流程如下:

主程序STACK1SEGMENT STACK

開始DW 64 DUP(?)STACK1 ENDS CODE SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H CALL branch A1:JMP A1 branch: JCXZ A4 PUSH SI PUSH CX PUSH BX

結束序列的字節個數→CX數據區首址→SI調用求最大最小值子程序 MOV BH,[SI] MOV BL,BH A1: LODSB CMP AL,BH JBE A2 MOV BH,AL JMP A3 A2: CMP AL,BL JAE A3

Y子程序CX=0?NSI、CX、BX入棧[SI]→BHBH→BLSI+1→SI[SI]→ALNAL﹤BHAL→BHMOV BL,AL A3: LOOP A1 MOV AX,BX POP BX POP CX

YAL﹥BLYCX-1→CXNNAL→BLCX=0?POP SI A4: RET CODE ENDS END START

實驗步驟

(1)輸入源程序,進行編譯、鏈接和加載。

YSI、CX、BX出棧RET

(2)在調試區鍵入E0000:3000↙,輸入8個字節的數據:D9、07、8B、C5、EB、04、9D、F9。

(3)運行程序,查看結果,在調試區鍵入R AX↙,顯示結果應為AX=F9 04,AH中為最大值,AL中為最小值。

2.數組求和

設有一字節序列(存儲地址和字節數可自定義),編寫程序,求出該序列的和,求和工作由子程序來實現。

程序:

STACK1 SEGMENT STACK DW 64 DUP(?)STACK1 ENDS CODE

SEGMENT ASSUME CS:CODE START: MOV SI,3000H MOV CX,0008H XOR AX,AX CALL branch A5: JMP A5 branch: JCXZ A4 PUSH SI

PUSH CX A1: ADD AL,[SI] INC SI A3: LOOP A1

POP CX POP SI A4: RET CODE

ENDS END START

8個01,總和為08

下載北京郵電大學 微機原理軟件實驗3word格式文檔
下載北京郵電大學 微機原理軟件實驗3.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    北京理工大學微機原理實驗報告_8259A

    實驗一8259中斷控制器實驗 一、 實驗內容 用單脈沖發生器的輸出脈沖為中斷源,每按一次產生一次中斷申請,點亮或熄滅發光二極管。 二,實驗目的 (1)掌握8259的工作原理。 (2)掌握編寫......

    微機原理實驗總結(共5篇)

    微機原理實驗總結 不知不覺,微機原理與接口技術實驗課程已經結束了。回想起來受益匪淺,主要是加深了對計算機的一些硬件情況和運行原理的理解和匯編語言的編寫匯編語言,對于學......

    北京郵電大學

    北京郵電大學 北京郵電大學 主管部門:教育部 工信部 學校類型:理工類 學校性質:211大學 學校地址:北京市西土城路10號 官方網址:www.tmdps.cn/ 招生簡章:zsb.bupt.edu......

    2012年北京郵電大學軟件工程碩士招生簡章(精)

    北京郵電大學軟件工程碩士招生簡章 【學院簡介】 北京郵電大學軟件學院是經教育部和國家計委聯合批準成立的首批35所國家級示范性軟件學院之一,具有自主招收軟件工程領域軟......

    微機原理與接口技術實驗總結

    微機原理與接口技術實驗總結 11107108徐寒黎 一、 實驗內容以及設計思路 1、①試編寫一程序,比較兩個字符串STRING1、 STRING2 所含字符是否相同,若相同輸出“MATCH”,若不......

    微機原理-心得體會

    南陽師范學院物電學院微機原理課程收獲及心得 初學《微機原理》時,感覺摸不著頭緒。面對著眾多的術語、概念及原理性的問題不知道該如何下手。在了解課程的特點后,我發現,應該......

    微機原理課程設計

    匯編程序設計題 題目一 密碼設置模擬 該程序可以進行密碼的設置(第一次)和修改(已設置密碼)。要求輸入的密碼不顯示。 題目二 計算器 編輯程序可以實現鍵盤輸入數據與運算符......

    微機原理課程設計

    《微機原理》課程設計報告 時間 學 院 專業班級 姓 名 學 號 合 作 者 指導教師 成 績 2013 年 11 月摘要 本文針對可燃氣體檢測模塊MQ—K1,綜合運用《微機原理》所學知識......

主站蜘蛛池模板: 國产一二三内射在线看片| 国产精品美脚玉足脚交| 97人伦影院a级毛片| 久久er99热精品一区二区| 亚洲精品久久久口爆吞精| 中国熟妇浓毛hdsex| 中文字幕aⅴ人妻一区二区| 色妞www精品视频二| 国产美女在线精品免费观看| 精品久久久久久亚洲精品| 99精品免费久久久久久久久日本| 国产精品成人va在线观看| 99精品无人区乱码1区2区3区| 国产午夜福利在线机视频| 麻豆国产人妻欲求不满| 国产精品玖玖玖在线资源| 在线 | 一区二区三区四区| 狠日狠干日日射| 亚洲国产成人最新精品| 一区二区三区午夜无码视频| 国产在线观看免费观看不卡| 97se亚洲国产综合自在线尤物| 日韩精品专区av无码| a级毛片高清免费视频就| 久久这里只精品国产免费10| 免费a级毛片樱桃视频| 无码人妻av一二区二区三区| 精品国产制服丝袜高跟| 亚洲国产精品久久久久网站| 国产成人综合久久精品推最新| av大片在线无码永久免费| 亚洲国产精品ⅴa在线观看| 国产成人久久精品一区二区三区| 国内精品久久久久久中文字幕| 中文字幕日产无码| 亚洲欧洲日产国产av无码| 男人和女人做爽爽免费视频| 中文成人无字幕乱码精品区| 亚洲性夜色噜噜噜在线观看不卡| 3d无码纯肉动漫在线观看| 亚洲午夜精品久久久久久人妖|