版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、微機原理實驗報告隋偉08212013自動化0801目 錄一、I/O地址譯碼與交通燈控制實驗3二、可編程定時器/計數(shù)器(8253)6三、中斷實驗(純DOS)11四、模/數(shù)轉(zhuǎn)換器18 五、串行通訊 16六、課程綜合實驗(搶答器) 28七、自主設(shè)計實驗LED顯示32 八、參考文獻35一、I/O地址譯碼與交通燈控制實驗一.實驗?zāi)康耐ㄟ^并行接口8255實現(xiàn)十字路口交通燈的模擬控制,進一步掌握對并行口的使用。二.實驗內(nèi)容如圖5-3,L7、L6、L5作為南北路口的交通燈與PC7、PC6、PC5相連,L2、L1、L0作為東西路口的交通燈與PC2、PC1、PC0相連。編程使六個燈按交通燈變化規(guī)律燃滅。十字路口交
2、通燈的變化規(guī)律要求:(1) 南北路口的綠燈、東西路口的紅燈同時亮3秒左右。(2) 南北路口的黃燈閃爍若干次,同時東西路口的紅燈繼續(xù)亮。(3) 南北路口的紅燈、東西路口的綠燈同時亮3秒左右。(4) 南北路口的紅燈繼續(xù)亮、同時東西路口的黃燈亮閃爍若干次。(5) 轉(zhuǎn)(1)重復(fù)。8255動態(tài)分配地址: 控制寄存器: 0C40BHA口地址: 0C408HC口地址: 0C40AH 三程序流程圖和程序清單DATA SEGMENT X DB ?DATA ENDSSTACK1 SEGMENT STACK DW 100H DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,D
3、S:DATA,SS:STACK1START:MOV AX,DATAMOV DS,AX;-INIT-MOV DX,0EC0BH;寫控制字MOV AL,80HOUT DX,AL L3:MOV DX,0EC0AHMOV AL,24H;南北綠燈,東西紅燈亮OUT DX,ALCALL DELAYCALL DELAY;長延時,3s左右 CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY MOV BL,8 MOV AL,04HL0:XOR AL,40H;南北黃燈閃,東西紅燈亮OUT DX,ALCALL DELAY;延時 CALL DELAYDEC B
4、L ;閃爍幾次JNZ L0CALL DELAYMOV AL,81H;南北紅燈亮,東西綠燈亮OUT DX,AL CALL DELAYCALL DELAYCALL DELAY;長延時,3s左右 CALL DELAY CALL DELAY CALL DELAY CALL DELAYMOV BL,9 MOV AL,80HL1:XOR AL,02H;南北紅燈亮,東西黃燈閃OUT DX,ALCALL DELAY;延時 CALL DELAYDEC BLJNZ L1 ;閃爍幾次 CALL DELAYMOV DL,0FFHMOV AH,06HINT 21HJZ L3;六號功能判斷若無字符輸入ZF=1繼續(xù)循環(huán);-
5、MOV AH,4CHINT 21H;-延時函數(shù)- DELAY : PUSH CX PUSH DX MOV CX,1FFFH LOP1: MOV DX,0FFFFH LOP2: DEC DXJNZ LOP2LOOP LOP1POP DXPOP CXRETCODE ENDS END START四實驗遇到的問題和解決方法問題:綠燈滅后黃燈沒有出現(xiàn)閃爍的效果,一直保持常亮解決方法:修改程序,通過利用異或和循環(huán)指令使綠燈滅、紅燈亮后,黃燈口的狀態(tài)從0到1循環(huán)變換,并通過調(diào)用延遲子程序,從而實現(xiàn)人眼可辨的黃燈閃的效果。二、可編程定時時鐘/計數(shù)器(8253)一、實驗?zāi)康恼莆?253的基本工作原理和編程方法。
6、二、實驗內(nèi)容1 按圖5-1虛線連接電路,將計數(shù)器0設(shè)置為方式0,計數(shù)器初值為N(N0FH),用手動逐個輸入單脈沖,編程使計數(shù)值在屏幕上顯示,并同時用邏輯筆觀察OUT0電平變化(當(dāng)輸入N+1個脈沖后OUT0變高電平)。圖 5-1 2 按圖5-2連接電圖,將計數(shù)器0、計數(shù)器1分別設(shè)置為方式3,計數(shù)初值設(shè)為1000,用邏輯筆觀察OUT1輸出電平的變化(頻率1HZ)。 圖5-2 三實驗原理8253具有3個獨立的計數(shù)通道,采用減1計數(shù)方式。在門控信號有效時,每輸入1個計數(shù)脈沖,通道作1次計數(shù)操作。當(dāng)計數(shù)脈沖是已知周期的時鐘信號時,計數(shù)就成為定時。作計數(shù)器時, 要求計數(shù)的次數(shù)可直接作為計數(shù)器的初值預(yù)置到減
7、“1”計數(shù)器中。8253中各通道可有6種可供選擇的工作方式, 以完成定時、計數(shù)或脈沖發(fā)生器等多種功能。本實驗用到的是方式0計數(shù)結(jié)束中斷。在寫入計數(shù)值N之后的第一個CLK的下降沿將N裝入計數(shù)執(zhí)行單元,待下一個CLK的下降沿到來且門控信號GATE為高電平時,通道開始啟動計數(shù)。在計數(shù)過程中,OUT一直保持低電平,直到計數(shù)達“0”時,OUT輸出由低電平變?yōu)楦唠娖?,并且保持高電平?253動態(tài)分配地址: 控制寄存器: 0C403H計數(shù)器0地址: 0C400H計數(shù)器1地址: 0C401H 四程序流程圖和程序清單1)DATA SEGMENT N EQU 0BH;計數(shù)器初值,不大于0FH CHLDB 0AH,
8、0DH,'$'換行DATA ENDSSTACK1 SEGMENT STACK DW 100 DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATA MOV DS,AX;-INIT-MOV DX,0C403H;控制寄存器地址MOV AL,10H;計數(shù)器0,低字節(jié),方式0,二進制計數(shù)OUT DX,AL ;寫入控制字MOV DX,0C400HMOV AL,NOUT DX,AL ;寫入計數(shù)初值MOV CL,NL0: ;MOV AL,0;計數(shù)器0鎖存;MOV DX,IO8253;OUT
9、 DX,ALMOV DX,0C400HIN AL,DX;讀取當(dāng)前數(shù)值CMP AL,CLJNE L0;若AL不等于CL,則繼續(xù)到L0循環(huán)DEC CL;更改CL值MOV DL,ALCMP DL,09H ;是09嗎?JLE ASCI ADD DL,07H ;是AFASCI: ADD DL,30HMOV AH,02H ;單字符輸出計數(shù)器當(dāng)前值INT 21HMOV DX,OFFSET CHL;輸出字符串換行MOV AH,09HINT 21HCMP CL,0 JNL L0;CL不小于0時,繼續(xù)循環(huán);-MOV AH,4CHINT 21HCODE ENDSEND START2)DATA SEGMENT X D
10、B ?DATA ENDSSTACK1 SEGMENT STACK DW 100H DUP(0)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK1 START: MOV AX,DATAMOV DS,AX MOV AL,36H MOV DX,0C403H ;寫計數(shù)器0控制字 OUT DX,AL MOV AX,1000 ;寫計數(shù)器0初值 MOV DX,0C400H OUT DX,AL ;先寫低字節(jié)后寫高字節(jié) MOV AL,AH OUT DX,AL ;- MOV AL,76H MOV DX,0C403H OUT DX,AL ;寫計數(shù)器1控制字
11、 MOV AX,1000 ;寫計數(shù)器0初值 MOV DX,0C401H OUT DX,AL MOV AL,AH ;先寫低字節(jié)后寫高字節(jié) OUT DX,AL CODE ENDSEND START五實驗遇到的問題和解決方案問題:計數(shù)初值沒有顯示出來解決方法:進行TD調(diào)試,發(fā)現(xiàn)邏輯上出現(xiàn)了問題。修改程序,通過利用CMP AL,CL JNZ L0來實現(xiàn)將所有的計數(shù)值都顯示出來。三、中斷實驗(純DOS)一、實驗?zāi)康?、掌握PC機中斷處理系統(tǒng)的基本原理。 、學(xué)會編寫中斷服務(wù)程序。 二、實驗原理與內(nèi)容 1、實驗原理 PC機用戶可使用的硬件中斷只有可屏蔽中斷,由8259中斷控制器管理。中斷控制器用于接收外部的
12、中斷請求信號,經(jīng)過優(yōu)先級判別等處理后向CPU發(fā)出可屏蔽中斷請求。IBMPC、PC/XT機內(nèi)有一片8259中斷控制器對外可以提供8個中斷源: 中斷源 中斷類型號 中斷功能 IRQ0 08H 時鐘 IRQ1 09H 鍵盤 IRQ2 0AH 保留 IRQ3 OBH 串行口2 IRQ4 0CH 串行口1 IRQ5 0DH 硬盤 IRQ6 0EH 軟盤 IRQ7 0FH 并行打印機 8個中斷源的中斷請求信號線IRQ0IRQ7在主機的62線ISA總線插座中可以引出,系統(tǒng)已設(shè)定中斷請求信號為“邊沿觸發(fā)”,普通結(jié)束方式。對于PC/AT及286以上微機內(nèi)又擴展了一片8259中斷控制,IRQ2用于兩片8259之間
13、級連,對外可以提供16個中斷源: 中斷源 中斷類型號 中斷功能 52 IRQ8 070H 實時時鐘 IRQ9 071H 用戶中斷 IRQ10 072H 保留 IRQ11 O73H 保留 IRQ12 074H 保留 IRQ13 075H 協(xié)處理器 IRQ14 076H 硬盤 IRQ15 077H 保留 PCI總線中的中斷線只有四根,INTA#、INTB#、INTC#、INTD#,它們需要通過P&P的設(shè)置來和某一根中斷相連接才能進行中斷申請。2、實驗內(nèi)容 實驗電路如圖31,直接用手動產(chǎn)單脈沖作為中斷請求信號(只需連接一根導(dǎo)線)。要求每按一次開關(guān)產(chǎn)生一次中斷,在屏幕上顯示一次“TPC pci
14、 card Interrupt”,中斷10次后程序退出。 三、編程提示 1. 由于9054的驅(qū)動程序影響直寫9054芯片的控制寄存器,中斷實驗需要在純DOS的環(huán)境中才能正常運行。這里指的純DOS環(huán)境是指微機啟動時按F8鍵進入的DOS環(huán)境。WINDOWS重啟進入MSDOS方式由于系統(tǒng)資源被重新規(guī)劃過,所以也不能正常實驗。 2. 由于TPC卡使用PCI總線,所以分配的中斷號每臺微機可能都不同,編程時需要了解當(dāng)前的微機使用那個中斷號并進行設(shè)置,獲取方法請參看匯編程序使用方法的介紹。(也可使用自動獲取資源分配的程序取得中斷號) 3. 在純DOS環(huán)境下,有些微機的BIOS設(shè)置中有將資源保留給ISA總線使
15、用的選項,致使在純DOS環(huán)境(WINDOWS環(huán)境下不會出現(xiàn)此問題)下PCI總線無法獲得系統(tǒng)資源,也就 53 無法做實驗,這時需要將此選項修改為使用即插即用。 4. 在純DOS環(huán)境下,有些微機的BIOS設(shè)置中有使用即插即用操作系統(tǒng)的選項,如果在使用即插即用操作系統(tǒng)狀態(tài)下,BIOS將不會給TPC卡分配系統(tǒng)資源,致使在純DOS環(huán)境(WINDOWS環(huán)境下不會出現(xiàn)此問題)下PCI總線無法獲得系統(tǒng)資源,也就無法做實驗,這時需要將此選項修改為不使用即插即用操作系統(tǒng)。 5. 由于TPC卡使用9054芯片連接微機,所以在編程使用微機中斷前需要使能9054的中斷功能,代碼如下: mov dx,ioport_cen
16、t+68h ;設(shè)置 tpc 卡中9054芯片io口,使能中斷 in ax,dx or ax,0900h out dx,ax 其中IOPORT_CENT是9054芯片寄存器組的I/O起始地址,每臺微機可能都不同,編程時需要了解當(dāng)前的微機使用哪段并進行設(shè)置,獲取方法請參看本書結(jié)尾部分的介紹。(也可使用自動獲取資源分配的程序取得),+68H的偏移是關(guān)于中斷使能的寄存器地址,設(shè)置含義如下: 程序退出前還要關(guān)閉9054的中斷,代碼如下: mov dx,ioport_cent+68h ;設(shè)置 tpc 卡中9054芯片io口,關(guān)閉中斷 in ax,dx and ax,0f7ffh out dx,ax 6.
17、PC機中斷控制器8259 的地址為20H、21H,編程時要根據(jù)中斷類型號設(shè)置中斷矢量,8259中斷屏蔽寄存器IMR對應(yīng)位要清零(允許中斷),中斷服務(wù)結(jié)束返回前要使用中斷結(jié)束命令: MOV AL,20H OUT 20H,AL 中斷結(jié)束返回DOS時應(yīng)將IMR對應(yīng)位置1,以關(guān)閉中斷 。 四、參考流程圖 五、參考程序 程序名:INT.ASM;386以上微機適用 ;純dos下才能使用 ;tasm4.1或以上編譯 data segment int_vect EQU 071H ;中斷0-7的向量為:08h-0fh,中斷8-15的向量為:70h-77h 55 irq_mask_2_7 equ 01111101
18、1b ;中斷掩碼,中斷0-7時從低至高相應(yīng)位為零,中斷8-15時第2位為零 irq_mask_9_15 equ 011111101b ;中斷0-7時全一,中斷8-15時從低至高相應(yīng)位為零 ioport_cent equ 0d800h ;tpc 卡中9054芯片的io地址 csreg dw ? ipreg dw ? ;舊中斷向量保存空間 irq_times dw 00h ;中斷計數(shù) msg1 db 0dh,0ah,'TPC pci card Interrupt',0dh,0ah,'$' msg2 db 0dh,0ah,'Press any key to e
19、xit!',0dh,0ah,'$' msg3 db 0dh,0ah,'Press DMC to interrupt 10 times and exit!',0dh,0ah,'$' data ends stacks segment db 100 dup (?) stacks ends code segment assume cs:code,ds:data,ss:stacks,es:data start: ;Enable Local Interrupt Input .386 cli mov ax,data mov ds,ax mov es,a
20、x mov ax,stacks mov ss,ax mov dx,ioport_cent+68h ;設(shè)置 tpc 卡中9054芯片io口,使能中斷 in ax,dx or ax,0900h out dx,ax mov al,int_vect ;保存原中斷向量 mov ah,35h int 21h mov ax,es mov csreg,ax mov ipreg,bx mov ax,cs ;設(shè)置新中斷向量 56 mov ds,ax mov dx,offset int_proc mov al,int_vect mov ah,25h int 21h in al, 21h ;設(shè)置中斷掩碼 and al
21、, irq_mask_2_7 out 21h, al in al, 0a1h and al, irq_mask_9_15 out 0a1h, al mov ax,data mov ds,ax mov dx,offset msg2 mov ah,09h int 21h mov dx,offset msg3 mov ah,09h int 21h mov irq_times,0ah sti loop1: cmp irq_times,0 ;等待中斷并判斷中斷10次后退出 jz exit mov ah,1 int 16h jnz exit ;按任意鍵退出 jmp loop1 exit: cli mov
22、bl, irq_mask_2_7 ;恢復(fù)中斷掩碼 not bl in al, 21h or al, bl out 21h, al mov bl, irq_mask_9_15 not bl in al, 0a1h 57 or al, bl out 0a1h, al mov dx,ipreg ;恢復(fù)原中斷向量 mov ax,csreg mov ds,ax mov ah,25h mov al,int_vect int 21h mov dx,ioport_cent+68h ;設(shè)置 tpc 卡中9054芯片io口,關(guān)閉中斷 in ax,dx and ax,0f7ffh out dx,ax mov ax,
23、4c00h int 21h int_proc proc far ;中斷處理程序 cli push ax push dx push ds dec irq_times mov ax,data ;Interrupt to do mov ds,ax mov dx,offset msg1 mov ah,09h int 21h mov al,20h ;Send EOI out 0a0h,al out 20h,al pop ds pop dx pop ax sti iret int_proc endp code ends四、模/數(shù)轉(zhuǎn)換器一、實驗?zāi)康?了解模/數(shù)轉(zhuǎn)換的基本原理,掌握ADC0809的使用方法。
24、二、實驗內(nèi)容 、實驗電路原理圖如圖38。通過實驗臺左下角電位器RW1輸出05直流電壓送入ADC0809通道0(IN0),利用debug的輸出命令啟動/轉(zhuǎn)換器,輸入命令讀取轉(zhuǎn)換結(jié)果,驗證輸入電壓與轉(zhuǎn)換后數(shù)字的關(guān)系。 啟動IN0開始轉(zhuǎn)換: Out 0298 0 讀取轉(zhuǎn)換結(jié)果: In 0298 、編程采集IN0輸入的電壓,在屏幕上顯示出轉(zhuǎn)換后的數(shù)據(jù)(用16進制數(shù))。 、將JP3的1、2短接,使IN2處于雙極性工作方式,并給IN1輸入一個低頻交流信號(幅度為±),編程采集這個信號數(shù)據(jù)并在屏幕上顯示波形。 三、實驗提示 、ADC0809的IN0口地址為298H,IN1口地址為299H。 、IN
25、0單極性輸入電壓與轉(zhuǎn)換后數(shù)字的關(guān)系為: 其中Ui為輸入電壓,UREF為參考電壓,這里的參考電壓為機的電源。 、一次A/D轉(zhuǎn)換的程序可以為 MOV DX,口地址 OUT DX,AL ;啟動轉(zhuǎn)換 ;延時 IN AL,DX ;讀取轉(zhuǎn)換結(jié)果放在AL中四、參考流程圖五、參考程序:AD_1.ASM ioport equ 0d400h-0280h io0809a equ ioport+298h code segment assume cs:code start:mov dx,io0809a ;啟動A/D轉(zhuǎn)換器 out dx,al mov cx,0ffh ;延時 delay:loop delay in al,
26、dx ;從A/D轉(zhuǎn)換器輸入數(shù)據(jù) mov bl,al ;將AL保存到BL mov cl,4 shr al,cl ;將AL右移四位 call disp ;調(diào)顯示子程序顯示其高四位 mov al,bl and al,0fh call disp ;調(diào)顯示子程序顯示其低四位 mov ah,02 mov dl,20h ;加回車符 int 21h mov dl,20h int 21h push dx mov ah,06h ;判斷是否有鍵按下 mov dl,0ffh int 21h pop dx je start ;若沒有轉(zhuǎn)START mov ah,4ch ;退出 int 21h disp proc near
27、 ;顯示子程序 mov dl,al cmp dl,9 ;比較DL是否>9 jle ddd ;若不大于則為'0'-'9',加30h為其ASCII碼 add dl,7 ;否則為'A'-'F',再加7 ddd: add dl,30h ;顯示 mov ah,02 int 21h ret disp endp code ends end start五、串行通訊一、實驗?zāi)康?、 進一步了解串行通信的基本原理。2、 掌握串行接口芯片8250的工作原理和編程方法。3、 熟悉PC機串行口的基本連接方法二、實驗內(nèi)容1、PC機RS-232串口自發(fā)自
28、收。按照PC機串口自發(fā)自收的連接方法連線。編寫PC機自發(fā)自收串行通信程序,要求:從鍵盤輸入一個字符,將字符通過串口發(fā)送出去,再由此串口將字符接收回來并在屏幕上顯示,實現(xiàn)自發(fā)自收。2、 兩臺PC機間RS-232串口通信。按照PC機RS-232串口直接互連的方法連接兩臺PC機。 編寫PC機直接互連串行通信程序;要求:由甲機鍵盤鍵入字符經(jīng)串口發(fā)送給乙機,再由乙機通過串口接收字符并顯示在屏幕上。當(dāng)鍵入感嘆號“!”,結(jié)束收發(fā)過程。三實驗原理1)本實驗為異步通信:以字符為單位進行傳送,每傳送一個字符,以起始位作為開始標(biāo)志,以停止位作為結(jié)束標(biāo)志。異步串行通信的工作過程是:傳送開始后,接收設(shè)備不斷地檢測傳輸線
29、是否有起始位到來,當(dāng)接收到一系列的“1”(空閑或停止位)之后,檢測到第一個“0”,說明起始位出現(xiàn),就開始接收所規(guī)定的數(shù)據(jù)位、奇偶校驗位及停止位。經(jīng)過接收器處理,將停止位去掉,把數(shù)據(jù)位拼裝成一字節(jié)數(shù)據(jù),并且經(jīng)奇偶校驗無錯誤,才算是正確地接收到了一個字符。當(dāng)一個字符接收完畢,接收設(shè)備又繼續(xù)測試傳輸線,監(jiān)視“0”電平的到來(下一個字符的開始),直到全部數(shù)據(jù)接收完畢。2)8250各部分功能說明8250片內(nèi)有10個寄存器,其中有幾個是共用地址的,其識別由線路控制寄存器(LCR)的最高位DLAB來決定。各寄存器的地址和格式如下所示:. 3)數(shù)據(jù)發(fā)送和接收:四程序清單1自發(fā)自收DATA SEGMENT CH
30、LDB 0AH,0DH,'$'換行字符串DATA ENDSSTACK1 SEGMENT STACK DW 100 DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START:MOV AX,DATA MOV DS,AX;-INIT-MOV DX,3FBH;MOV AL,80H;DLAB=1 OUT DX,AL MOV AX,0CH;N=12 BAUD=9600bpsMOV DX,3F8H;低位 OUT DX,ALMOV AL,AHINC DX OUT DX,ALMOV AL,03H;八位數(shù)據(jù),1停止,無校
31、驗MOV DX,3FBH;線路控制REG OUT DX,ALMOV AL,0;屏蔽全部中斷MOV DX,3F9H OUT DX,ALWAIT1: MOV DX,3FDH;讀線路狀態(tài)寄存器IN AL,DXTEST AL,1EH;判斷是否有錯JNZ ERRORTEST AL,01H;判斷是否收到JNZ RECEIVETEST AL,20H;判斷發(fā)送端是否空JZ WAIT1MOV DL,0FFH;六號功能調(diào)用讀入待發(fā)送數(shù)據(jù)MOV AH,06HINT 21HJZ WAIT1MOV DX,3F8H;寫發(fā)送REGOUT DX,ALJMP WAIT1;返回 WAIT1CHAR: PUSH AXMOV DL,
32、AL;顯示接收MOV AH,02HINT 21HMOV DX,OFFSET CHL;輸出字符串換行MOV AH,09HINT 21HPOP AXJMP WAIT1ERROR:MOV DX,3FDHIN AL,DXMOV DL,'?'對于錯誤顯示'?"MOV AH,02HINT 21HJMP WAIT1RECEIVE:MOV DX,3F8HIN AL,DX;讀數(shù)據(jù)接收寄存器 CMP AL,'!'判斷是否結(jié)束JNE CHAR;- MOV AH,4CH INT 21HCODE ENDS END START2.雙機通信(1)發(fā)送端: CODE SEGM
33、ENT ASSUME CS:CODESTART: MOV AL,80H ;8250初始化,設(shè)DLAB=1 MOV DX,3FBH OUT DX,AL MOV AX,30H MOV DX,3F8H OUT DX,AL ;寫入除數(shù)低字節(jié) MOV AL,AH INC DX OUT DX,AL ;寫入除數(shù)高字節(jié) MOV AL,0AH ;7位數(shù)據(jù),1位停止,奇校驗 MOV DX,3FBH OUT DX,AL ;寫入線路控制寄存器 MOV AL,03H MOV DX,3FCH OUT DX,AL ;寫入Modem控制寄存器 MOV AL,0 MOV DX,3F9H OUT DX,AL ;寫中斷允許寄存器,
34、屏蔽所有中斷 WAIT1: MOV DX,3FDH ;讀線路狀態(tài)寄存器 IN AL,DX TEST AL,1EH ;出錯否 JNZ ERROR ;TEST AL,01H ;接收數(shù)據(jù)就緒否 ;JNZ SEND ;發(fā)送 TEST AL,20H ;發(fā)送寄存器空否,不空,返回等待 JZ WAIT1 SEND: MOV AH,1 INT 21H ;讀鍵盤 CMP AL,21H ;是'!'? JZ EXIT ;是,返回操作系統(tǒng) MOV DX,3F8H ;不是,則發(fā)送 OUT DX,AL JMP WAIT1 ;返回等待 ERROR: MOV DX,3FDH ;出錯則清除線路狀態(tài)寄存器 IN
35、AL,DX MOV DL,'?' ;顯示'?' MOV AH,02H INT 21H JMP WAIT1 EXIT: MOV AH,4CH INT 21H CODE ENDS END START(2)接收端: CODE SEGMENT ASSUME CS:CODE START: MOV AL,80H ;8250初始化 MOV DX,3FBH OUT DX,AL MOV AX,30H ;寫除數(shù) MOV DX,3F8H OUT DX,AL ;寫入除數(shù)低字節(jié) MOV AL,AH INC DX MOV DX,3F9H OUT DX,AL ;寫入除數(shù)高字節(jié) MOV AL,
36、0AH MOV DX,3FBH OUT DX,AL ;寫入線路控制寄存器 MOV AL,03H MOV DX,3FCH OUT DX,AL ;寫入Modem控制寄存器 MOV AL,0 MOV DX,3F9H OUT DX,AL ;寫中斷允許寄存器,屏蔽所有中斷 WAIT1: MOV DX,3FDH ;讀線路狀態(tài)寄存器 IN AL,DX TEST AL,1EH ;出錯否 JNZ ERROR TEST AL,01H ;接收數(shù)據(jù)就緒否 JNZ RECEIVE ;轉(zhuǎn)接收 ;TEST AL,20H ;發(fā)送寄存器空否,不空,返回等待 ;JZ WAIT1 JMP WAIT1 ;均返回等待 RECEIVE:
37、 MOV DX,3F8H ;讀接收數(shù)據(jù) IN AL,DX AND AL,01111111B ;保留位數(shù)據(jù) CMP AL,21H ;是'!'? JNZ CHAR MOV AH,4CH ;返回操作系統(tǒng) INT 21H CHAR: PUSH AX MOV DL,AL MOV AH,2 ;顯示接受字符 INT 21H POP AX JMP WAIT1 ;返回等待 ERROR: MOV DX,3FDH ;出錯則清除線路狀態(tài)寄存器 IN AL,DX MOV DL,'?' ;顯示'?' MOV AH,02H INT 21H JMP WAIT1CODE ENDS
38、 END START五實驗遇到的問題和解決方法問題:當(dāng)按下一個字符時,屏幕上會顯示兩個字符。其中一個不正確。解決方法:顯示字符時,用6號功能代替2號功能。這樣問題就得到了解決。六、課程綜合實驗(搶答器)一、實驗?zāi)康?、了解微機化競賽搶答器的基本原理。2、進一步學(xué)習(xí)使用并行接口。二、實驗內(nèi)容圖5-4為競賽搶答器(模擬)的原理圖,邏輯開關(guān)K0K7代表競賽搶答按鈕07號,當(dāng)某個邏輯電平開關(guān)置“”時,相當(dāng)某組搶答按鈕按下。在七段數(shù)碼管上將其組號(07)顯示出來,并使喇叭響一下。從鍵盤上按空格鍵開始下一輪搶答,按其它鍵程序退出。圖 5-4 8255動態(tài)分配地址: 控制寄存器: 0C40BHA口地址: 0
39、C408HC口地址: 0C40AH 三程序流程圖和程序清單DATA SEGMENT LIST DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDATA ENDSSTACK1 SEGMENT STACK DW 100H DUP(0)STACK1 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK1START: MOV AX,DATA MOV DS,AX;- MOV DX,0C40BH MOV AL,89H OUT DX,AL ;對8255進行初始化L0: MOV DX,0C40AH IN AL,DX ;讀C口狀態(tài) CMP AL,0 ;如果為0則循環(huán) JZ L0 MOV BL,0L1: INC BL SHR AL,1 ;將AL邏輯右移 JNC L1 DEC BL MOV AL,BL ;求出組號 MOV BX,OFFSET LIST ; 七段顯示代碼表的首址送BX AND AX,00FFH ; 屏蔽AX高字節(jié),組號 ADD BX,AX ; 形成顯示字符
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家政服務(wù)店租賃合同模板
- 2024標(biāo)準工程居間合同范本
- 二零二五年度股權(quán)轉(zhuǎn)讓三方合作中的員工安置與權(quán)益保障協(xié)議3篇
- 二零二五年度百貨零售商與供應(yīng)商聯(lián)合促銷合同3篇
- 2024石粉環(huán)保型產(chǎn)品研發(fā)與應(yīng)用采購合同3篇
- 2024簡化版委托代理協(xié)議樣本版B版
- 2024年簡化版純凈水源購銷合同版B版
- 2024美容美發(fā)行業(yè)定制化服務(wù)與技術(shù)設(shè)備購銷合同3篇
- 2024版技術(shù)服務(wù)競標(biāo)協(xié)議模板指南一
- 二零二五年度知識產(chǎn)權(quán)產(chǎn)業(yè)聯(lián)盟合作協(xié)議2篇
- FZ/T 81024-2022機織披風(fēng)
- GB/T 24123-2009電容器用金屬化薄膜
- 艾滋病梅毒乙肝實驗室檢測
- 國鐵橋梁人行道支架制作及安裝施工要點課件
- 領(lǐng)導(dǎo)科學(xué)全套精講課件
- 粵教版地理七年級下冊全冊課件
- 小學(xué)科學(xué)蘇教版六年級上冊全冊精華知識點(2022新版)
- 萎縮性胃炎共識解讀
- 《中外資產(chǎn)評估準則》課件第8章 澳大利亞與新西蘭資產(chǎn)評估準則
- 2022版義務(wù)教育語文課程標(biāo)準(2022版含新增和修訂部分)
- 精品金屬線管布線施工工程施工方法
評論
0/150
提交評論