版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、實(shí)驗(yàn)一設(shè)計(jì)數(shù)碼管電子表.實(shí)驗(yàn)要求:使用8253的兩個計(jì)數(shù)器串連,作為微機(jī)系統(tǒng)的外擴(kuò)定時(shí)源,以數(shù)碼管電路 輸出設(shè)備,1.2.3.:實(shí)驗(yàn)電路+5V采用中斷方式編程,實(shí)現(xiàn)數(shù)碼管電子表“具體要求如 六位數(shù)碼管分別顯示時(shí),分,秒。初始時(shí)間由主機(jī)鍵盤輸入。主機(jī)按任意鍵停止計(jì)時(shí)返回DOS。下:作為外擴(kuò)CS 200H (*注意:A1 , A0用來選擇825207內(nèi)部三個計(jì)數(shù)器中的一個, 位相連。RD,WR用來控制8253的讀寫,它們分別與計(jì)算機(jī)的 電路分析:從Q2出來的時(shí)鐘頻率為1MHZ,為實(shí)現(xiàn)一秒鐘調(diào)用一次中斷,必須要每 1000000次時(shí)鐘調(diào) 用一次中 斷。我們同時(shí)將計(jì)數(shù)器 0和計(jì)數(shù)器1的初值都設(shè)為100
2、0,并將計(jì)數(shù)器0的輸出OUT0作為計(jì)數(shù)器1的 時(shí)鐘,并將計(jì)數(shù)器 1的輸出0UT1連到B4端子上,這樣就實(shí)現(xiàn)了每 1000 X 1000 = 1000000次時(shí)鐘 調(diào)用一次中斷。它們分別與計(jì)算機(jī)地址線的低兩I0R,I0W 相連)三.8253控制字格式D7 D6SC1 SC2D5 D4 D3RLOD2 D1 DORL1M2M0CDX_通道選擇:00二計(jì)數(shù)器01=n數(shù)器10=計(jì)數(shù)器11=非法1 r tAcIH *丿八匹1 1: 00=計(jì)數(shù)器鎖存000 =方式001 =讀/寫低字節(jié)001 =方式110=讀/寫高字節(jié)X10 =方式211=讀/寫16位字,X11 = 方式3先低字節(jié),后高字*100=方式4
3、I101=方式5計(jì)數(shù)方式:0二二進(jìn)制計(jì)數(shù)1 = BCD碼計(jì)數(shù)四?程序清單:TITLE DISPTIMEDSEG SEGMENTINPUT_TIM DB 'Please in put the curre nt t ime.',13,10,'$'SHOW_TIM DB 'Time is as thefollow. Press Ctr-C to exit.',13,10,'$'BAD_DATA DB 'Digits mush be betwee n0 and 9',13,10,'$'BAD_HRS DB
4、'Hour must be betwee n 0and 23',13,10,'$'BAD_MINSDB 'Mi n utes mush bebetwee n 0 and 59',13,10,'$'BAD_SECS DB 'Seco nds mush bebetwee n 0 and 59',13,10,'$'CRLF DB 13,10,'$'ASK_HRS DB 'Hour 0-23 :$'ASK_MINS DB 'Mi nu te 0-59 :$'A
5、SK_SECS DB 'Seco nd0-59 :$'USER DB 3,3 DUP ?TIME DB 3 DUP ?COUNT DW 1OLD0A DD ?TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH, 6FH,77H,7CH,39H,5EH,79H,71HDSEG ENDSSSEG SEGMENT STACK 'STACK'DB 256 DUP ?SSEG ENDSCSEG SEGMENTASSUMECS:CSEG,SS:SSEGDS:DSEG,ES:DSEGSTART PROC FARMOV AX,DSEGMOV D
6、S,AXCALL GET_TIMECLICALL I8253初始化 8253 CALL I8259初始化 8259 CALL RD0A讀入原0A中斷向量CALL WR0A 寫入新中斷向量ROTATE: CALL DISPLA Y只要不按鍵,就不斷調(diào)用DISPLAY顯示TIME變量中的 時(shí)間MOV AH,1INT 16HJZ ROTATE按鍵輸入后退出。CALL RESETMOV AH,4CHINT 21HRETSTART ENDP? *5SERVICE為新的中斷程序SERVICE PROC NEARPUSH AXPUSH DSMOV AX,DSEGMOV DS,AXCALL CHANGE_TI
7、ME函數(shù) CHANGE_TIME 用以將時(shí)間增加一秒MOV AL,20HOUT 20H,AL 送應(yīng)答信號POP DSPOP AXIRETSERVICE ENDP*此函數(shù)將保存在 TIME變量中的時(shí)間顯示 在數(shù) 碼管上。DISPLAY PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIMOV SI,OFFSET TIMEMOV BX,OFFSET TABLEMOV CL,4MOV AL,SIMOV AH,ALSAR AL,CLAND AH,00001111B實(shí)驗(yàn)一設(shè)計(jì)數(shù)碼管電子表無82班 王一舟981070XLATXLATMOV DX,201HMOV DX,
8、201HOUT DX,ALOUT DX,ALMOV DX,200HMOV DX,200HMOV AL,01HMOV AL,10HOUT DX,ALOUT DX,ALMOV AL,0MOV AL,0OUT DX,ALOUT DX,ALMOV AL,AHMOV AL,AHXLATXLATMOV DX,201HMOV DX,201HOUT DX,ALOUT DX,ALMOV DX,200HMOV DX,200HMOV AL,02HMOV AL,20HOUT DX,ALOUT DX,ALMOV AL,0MOV AL,0OUT DX,ALOUT DX,ALMOV AL,SI+1POP SIMOV AH,
9、ALPOP DXSAR AL,CLPOP CXAND AH,00001111BPOP BXXLATPOP AXMOV DX,201HRETOUT DX,ALDISPLAY ENDPMOV DX,200H? *MOV AL,04HI8253 PROC NEAROUT DX,ALMOV AL,00110100BMOV AL,0MOV DX,20BHOUT DX,ALOUT DX,ALMOV AL,AH設(shè)定8253的計(jì)算器0,寫入時(shí)先低字節(jié)后XLAT咼字節(jié),方式2, 一進(jìn)制計(jì)數(shù)MOV DX,201HMOV AX,1000OUT DX,ALMOV DX,208HMOV DX,200HOUT DX,AL
10、MOV AL,08HMOV AL,AHOUT DX,ALOUT DX,ALMOV AL,0計(jì)數(shù)器0的初值設(shè)為1000。OUT DX,ALMOV AL,01110100BMOV DX,20BHMOV AL,SI+2OUT DX,ALMOV AH,AL設(shè)定8253的計(jì)算器1,入時(shí)先低字節(jié)后高SAR AL,CL字節(jié),方式2,一進(jìn)制計(jì)數(shù)AND AH,00001111BMOV AX,1000MOV DX,209HOUT DX,ALMOV AL,AHOUT DX,AL計(jì)數(shù)器1初值設(shè)為1000。RET18253 ENDP? *5I8259 PROC NEARIN AL,21HAND AL,11111011B
11、OUT 21H,ALIN AL,0A1HAND AL,11111101BOUT 0A1H,ALRETI8259 ENDP? *5RD0A PROC NEARMOV AX,350AHINT 21HMOV WORD PTR OLD0A,BXMOV WORD PTR OLDOA+2,ESRETRD0A ENDPWR0A PROC NEARPUSH DSMOV AX,CSEGMOV DS,AXMOV DX,OFFSET SERVICEMOV AX,250AHINT 21HPOP DSRETWR0A ENDP*RESET PROC NEARMOV DX,WORD PTR OLD0AMOV DS,WORD
12、 PTR OLD0A+2MOV AX,250AHINT 21H 恢復(fù)原來的中斷向量IN AL,0A1HOUT 0A1H,AL 屏蔽用戶中斷RETRESET ENDP*函數(shù)GET_TIME的作用是接受用戶輸入 的時(shí)間,并把它保存在 6字節(jié)變量TIME中。為 了保證程序的嚴(yán)謹(jǐn),如果輸入的時(shí)間非法,那么顯示出錯信息并要求重輸。GET_TIME PROC NEARLEA DX,INPUT_TIMMOV AH,9INT 21H提示輸入時(shí)間HOUR:LEA DX,ASK_HRSMOV AH,9INT 21H提示輸入小時(shí)CALL INPUT_TIME函數(shù)INPUT_TIME的功能是把用戶輸入的 字符轉(zhuǎn)化為時(shí)
13、間值并存放在BL中如果輸入的不是數(shù)字,那么讓標(biāo)志存放器CF= 1JC HOUR 輸入不是數(shù)字,重輸CMP BL,23HJNA HRS2如果輸入的數(shù)字比24小,那么跳到HRS2去 執(zhí)行下面的內(nèi)容;如果輸入的數(shù)字大于等 于24, 那么要求重輸。對于分,秒的輸入也 按照此法處 理。LEA DX,BAD_HRSMOV AH,9INT 21HJMP HOURHRS2:PUSH BXMIN:LEA DX,ASK_MINSMOV AH,9INT 21HCALL INPUT_TIMEJC MINCMP BL,59HJNA MIN2LEA DX,BAD_MINSMOV AH,9INT 21H一秒JMP MINM
14、IN2:PUSH BXMOV AH,9INT 21HCALL INPUT_TIMEJC SECCMP BL,59HJNA SEC2LEA DX,BAD_SECSMOV AH,9INT 21HJMP SEC以下程序段將輸入的的時(shí)間保存在TIME變量中SEC2:MOV SI,OFFSET TIMEMOV SI+2,BLPOP BXMOV SI+1,BLPOP BXMOV SI,BLRETGET_TIME ENDP? *5函數(shù)INPUT_TIME的功能是把用戶輸入的字 符轉(zhuǎn)化為時(shí)間值并存放在BL中;如果輸入的不是數(shù)字,那么讓標(biāo)志存放器CF =1INPUT_TIME PROC NEARLEA DX,U
15、SERMOV AH,0AHINT 21HLEA DX,CRLFMOV AH,9INT 21HCMP USER+1,1JAE CONVERTMOV BL,0RETCONVERT: MOV CL,4MOV AL,USER+2CALL CHECKJC LEAVEAND AL,0FHMOV BL,ALCMP USER+1,2JB CLR_CFSHL BL,CLMOV AL,USER+3CALL CHECKJC LEAVEAND AL,0FHOR BL,ALCLR_CF: CLCLEAVE:RETINPUT_TIME ENDP? *5CHECK PROC NEARCMP AL,'0'JB
16、 ERRORCMP AL,'9'JA ERRORCLCRETERROR:LEA DX,BAD_DATAMOV AH,9INT 21HSTCRETCHECK ENDP? *5此函數(shù)將保存在TIME變量中的時(shí)間增加CHANGE_TIME PROC NEARPUSH AXPUSH CXPUSH DXPUSH SIMOV SI,OFFSET TIMEMOV AL,SIMOV CH,ALMOV AL,SI+1MOV CL,ALMOV AL,SI+2MOV DH,ALCH : CL : DH =時(shí):分:秒MOV AL,DHADD AL,1DAAH09lHa dl/IO iva aoi/iJ
17、NE EXITCHGJNE EXITCHGMOV DH,0MOV AL,CLADD AL,1DAAMOV CH,0EXITCHG: MOV SI,OFFSET TIMEMOV SI,CHMOV SI+1,CLMOV CL,ALCMP CL,60HJNE EXITCHGMOV SI+2,DHPOP SIPOP DXMOV CL,0MOV AL,CHADD AL,1DAAPOP CXPOP AXRETCHANGE TIME ENDPMOV CH,AL CMPCSEG ENDSCH,24H 五驗(yàn)總結(jié):END START1. 由于與本實(shí)驗(yàn)相關(guān)的程序上學(xué)期編過(在屏幕上顯示時(shí)間),所以這次實(shí)驗(yàn)我的程序中
18、的主要局部是用的以前的,添加了將時(shí)間顯示在數(shù)碼管上的程序。上學(xué)期編的那個程序中,我用三個字節(jié)來存儲時(shí)分秒,這次仍然沿用這個習(xí)慣。但這個習(xí)慣使我在編將時(shí)間顯示在數(shù)碼管上的子程序 ( DISPLAY )的時(shí)候遇到了困難,因?yàn)橐粋€字節(jié)代表的是數(shù)碼管上的兩個位置,所以編查表程序時(shí)必須把那個字節(jié)的信息拆分為兩個字節(jié)再進(jìn)行查表,這使程序繁瑣,可讀性降低。如果用六個字節(jié)分別存儲時(shí)的十位,時(shí)的個位,分的十位,分的個位,秒的十位,秒的個位,那么在編顯示程序時(shí)確實(shí)方便了許多,但是在編改變時(shí)間的程序時(shí)卻會更復(fù)雜一些。因此這兩種方法各有利弊。2. 在程序的結(jié)束RESET函數(shù)中一定要屏蔽用戶中斷,否那么下一次調(diào)用程序時(shí)
19、就不會 響應(yīng)中斷, 這個問題讓我消耗了很多時(shí)間。實(shí)驗(yàn)二:小鍵盤按鍵識別-?實(shí)驗(yàn)要求:本次實(shí)驗(yàn)的要求與前一實(shí)驗(yàn)類似,但僅要求識別小鍵盤 0? 9數(shù)字鍵,將小鍵盤鍵入的任意長的0? 9數(shù)字串,采用左移位動態(tài)顯示的方法顯示在數(shù)碼管電路上 ,當(dāng)小鍵盤按下R時(shí)“列 值三?實(shí)驗(yàn)電路圖:83J5HANDSmtITuiM四.8255萬式選擇控制字1D6D5D4D3D2D1D0五?源程序:式擇制標(biāo) 方選控字士心IO :仁輸入C輸出TITLE LITTLEKE YBOARDSSEG SEGMENT PARA STACK 'STACK'DB 256 DUP 0SSEG ENDSDSEG SEGMEN
20、TA_8255 EQU 210HB_8255 EQU 211HCON_8255 EQU 213HBUFFER DB 6 DUP 0HANG DB ?LIE DB ?NEWHANG DB ?NEWLIE DB ?TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,DSEG ENDSCSEG SEGMENTASSUME CS:CSEG , DS:DSEG,SS:SSEGSTART PROC NEARMOV AX,DSEGMOV DS,AXCALL CLOSEALL關(guān)掉數(shù)碼管,防止因?yàn)樽畛鯏?shù)碼管有顯示而使程序執(zhí)行不正常。CMPAGAIN:CALL DISPL
21、AYDISPLAY函數(shù)用來將BUFFER中的鍵值顯示 在數(shù)碼管上。MOV DX,CON_8255MOV AL,10000010BOUT DX,AL設(shè)定A 口方式0輸出,B 口方式0輸入AGAIN:MOV DX,A_8255MOV AL,0OUT DX,AL 0 >PA7-PA0 MOV DX,B_8255IN AL,DXAND AL,00000111B 取出 PB0 PB2CMP AL,00000111BJE AGAINMOV LIE,AL 將列值保存CALL DELAY1延時(shí) 20msMOV DX,CON_8255MOV AL,10010000BOUT DX,AL預(yù)置A 口方式0輸入,
22、B 口方式0輸入MOV DX,A_8255IN AL,DXMOV HANG ,AL 將行值保存CALL GETINPUTGETINPUT函數(shù)通過行值和列值查出輸 入 的鍵值,并將它保存在 AL中,如果輸入 是R, 那么AL賦值為FFH ;如果輸入非法字符, 那么AL 賦值為0AH。CMP AL,0AHJE CMPAGAIN如果是非法字符那么跳回CMP AL,0FFHJNE CONTINUE如果是R那么退出程序?CALL CLOSEALLMOV AH,4CHINT 21HCONTINUE:JE LIE1CMP LIE,00000011BJE LIE2MOV AL,0AHRETLIE2:CMP H
23、ANG,00010000BJE NEXTMOV AL,0AHRETNEXT:MOV AL,0FFHRETLIE0:CMP HANG,01111111BJE KEY8CMP HANG ,10111111BJE KEY9MOV AL,0AHRETKEY 8:MOV AL,8RETKEY 9:MOV AL,9RETLIE1:CMP HANG,01111111BJE KEY0CMP HANG ,10111111BJE KEY1CMP HANG ,11011111BJE KEY2CMP HANG ,11101111BJE KEY3CMP HANG ,11110111BJE KEY4CMP HANG ,1
24、1111011BJE KEY5CMP HANG ,11111101BJE KEY6CMP HANG ,11111110BJE KEY7MOV AL,0AHRETKEY 0:MOV AL,0RETKEY 1:MOV AL,1RETKEY 2:MOV AL,2RETCHANGE函數(shù)用來改變 BUFFER中保存的鍵 值MOV DX,CON_8255MOV AL,10000010BOUT DX,AL設(shè)定A 口方式0輸出,B 口方式0輸入LLL:CALL DISPLAYMOV DX,B_8255IN AL,DXAND AL,00000111B取出 PB0 PB2CMP AL,00000111BJNE L
25、LLJMP CMPAGAIN不斷掃描,如果不松開按鍵,那么就循環(huán)等 待; 直到按鍵松開就跳回。RETSTART ENDP? *5此函數(shù)用以延時(shí) 20MSDELA Y1 PROC NEARPUSH AXPUSH CXPUSH DXMOV AH,86HMOV CX,0MOV DX,20000INT 15HPOP DXPOP CXPOP AXRETDELA Y1 ENDP? *5GETINPUT函數(shù)通過行值和列值查出輸入的鍵值,并將它保存在 AL中,如果輸入 是R, 那么AL賦值為FFH;如果輸入非法字符,那么AL賦值為0AH。GETINPUT PROC NEARCMP LIE,00000110BJ
26、E LIE0CMP LIE,00000101BKEY 3:M0V AL,3RETKEY 4:M0V AL,4RETKEY 5:M0V AL,5RETKEY6: MOV AL,6RETKEY 7:MOV AL,7RETGETINPUT ENDP? *5CHANGE函數(shù)用來改變 BUFFER中保存的鍵 值,將BUFFER中的鍵值移位,最后一 位參加AL中的新鍵值。CHANGE PROC NEARPUSH AXPUSH SIMOV SI,OFFSET BUFFERMOV AH,SI+1MOV SI,AHMOV AH,SI+2MOV SI+1,AHMOV AH,SI+3MOV SI+2,AHMOV A
27、H,SI+4MOV SI+3,AHMOV AH,SI+5MOV SI+4,AHMOV SI+5,ALPOP SIPOP AXRETCHANGE ENDP? *5DISPLAY函數(shù)用來將BUFFER中的鍵值顯示 在數(shù)碼管上。DISPLAY PROC NEARPUSH AXPUSH BXPUSH CXPUSH DXPUSH SIMOV BX,OFFSET TABLEMOV SI,OFFSET BUFFERMOV CL,1XUNHUAN:MOV AL,SIXLATMOV DX,201HOUT DX,ALMOV DX,200HMOV AL,CLOUT DX,ALMOV DX,200HMOV AL,0O
28、UT DX,ALINC SISHL CL,1CMP CL,40HJNEXUNHUANPOP SIPOP DXPOP CXPOP BXPOP AXRETDISPLAY ENDP? *5此函數(shù)用在退出程序時(shí)將數(shù)碼管關(guān)閉?CLOSEALL PROC NEARPUSH AXPUSH CXPUSH DXMOV CL,1XUNHUAN1:MOV DX,200HMOV AL,CLOUT DX,ALMOV AL,0OUT DX,ALSHL CL,1CMP CL,20HJNEXUNHUAN1POP DXPOP CXCLOSEALL ENDPCSEG ENDSPOP AXRETEND START六.實(shí)驗(yàn)總結(jié):1.
29、 實(shí)驗(yàn)電路板上8255的端口地址位210H 213H,這與書上給的不一樣,開始時(shí)在這方面花費(fèi)了較多時(shí)間。2?通過此次程序設(shè)計(jì),我對計(jì)算機(jī)讀取鍵盤值的過程有了一定的認(rèn)識。最開始編程序時(shí)并沒有想到如果始終按同一個鍵不放,數(shù)碼管上就會一下子出來很多字符。調(diào)試時(shí)發(fā)現(xiàn)了這個問題,想到的解決方法有兩種,一種是每一次按鍵后檢測鍵是否松開,直到松開后再繼續(xù)執(zhí)行下一次判斷;另一種是按鍵后延緩一個固定的時(shí)間大約0.2秒再判斷計(jì)算機(jī)的鍵盤就是采取這樣的方法。本程序采用的是第一種方法。3?編程序要養(yǎng)成好的習(xí)慣,我最初的程序結(jié)束時(shí)并沒有關(guān)掉數(shù)碼管,以致下次用時(shí)數(shù)碼管顯示不正確。好的程序應(yīng)該各方面想得周到一些,例如我后來
30、在開始和結(jié)束時(shí)都加了關(guān)閉數(shù)碼管程序CLOSEALL,這就防止了上述問題。4.我并沒有采用查表得方法來獲得鍵值,我覺得用跳轉(zhuǎn)的方法能使程序的可讀性強(qiáng)一些。當(dāng)然,程序代碼會長許多,但此法由于思路清楚,比擬容易查錯。【實(shí)驗(yàn)三】數(shù)/模、模/數(shù)轉(zhuǎn)換實(shí)驗(yàn)、實(shí)驗(yàn)?zāi)康模毫私鈹?shù)/模、模/數(shù)轉(zhuǎn)換的根本原理,掌握 ADC0809和DAC0832芯片的使用方法。二、實(shí)驗(yàn)任務(wù):在實(shí)驗(yàn)箱上設(shè)計(jì)并連接 ADC0809芯片的接線,按中斷方式 利用EOC發(fā)中斷申請對單 通道模擬量 進(jìn)行A/D轉(zhuǎn)換。A/D轉(zhuǎn)換結(jié)果送入 PC機(jī)后,再由PC機(jī)送至DAC0832進(jìn)行D/A轉(zhuǎn)換,結(jié)果送至雙 蹤示波器,與原信號進(jìn)行比照觀察。模擬信號源:由
31、電位器中心抽頭可以得到一個可調(diào)節(jié)的直流電壓。電位器一端接地,另一端接 +5V。三、實(shí)驗(yàn)電路:nwiEU-Lr-?D/A轉(zhuǎn)備。四:源程序TITLE ADDASSEG SEGMENT STACK 'STACK'DB 256 DUP SSEG ENDSDSEG SEGMENTOLD0A DD ?DSEG ENDSCSEG SEGMENTASSUME CS:CSEG ,DS:DSEG,SS:SSEGSTART PROC NEARMOV AX,DSEMOV DS,AXCLICALL I8259 初始化 8259 CALL RD0A保存原0A中斷向量CALL WR0A寫入新的中斷向量。ST
32、IMOV DX,230HMOV AL,0OUT DX,AL230H為模擬量輸入口,進(jìn)行一次虛擬寫操 作, 啟動A/D轉(zhuǎn)換.WAIT_IN:MOV AH,1INT 16HJZ WAIT_INCALL RESETMOV AH,4CHINT 21HRETSTART ENDP? *5SERVICE PROC NEARPUSH AXPUSH DSMOV AX,DSEGMOV DS,AXCLIIN AL,230H讀入A/D轉(zhuǎn)換后的值到AL中。MOV DX,228HOUT DX,AL 啟動 D/A 轉(zhuǎn)換MOV DX,229HOUT DX,AL 將AL的值寫入換器MOV DX,230HMOV AL,0OUT
33、DX,AL再次啟動A/D轉(zhuǎn)換器,為下一次轉(zhuǎn)換做準(zhǔn)STIPOP DSPOP AXIRETSERVICE ENDP? *5I8259 PROC NEARIN AL,21HAND AL,11111011BOUT 21H,ALIN AL,0A1HAND AL,11111101BOUT 0A1H,ALRETI8259 ENDP? *5RD0A PROC NEARMOV AX,350AHINT 21HMOV WORD PTR OLD0A,BXMOV WORD PTR OLD0A+2,ESRETRD0A ENDP? *5WR0A PROC NEARPUSH AXPUSH DSMOV AX,CSEGMOV D
34、S,AXMOV DX,OFFSET SERVICEMOV AX,250AHINT 21HPOP DSPOP AXIN AL,0A1HOR AL,00000010BOUT 0A1H,ALRETRESET ENDPCSEG ENDSEND STARTRETWROA ENDP? *RESET PROC NEARMOV DX,WORD PTR OLDOAMOV DS,WORD PTR OLDOA+2MOV AX,250AHINT 21H1. 編寫程序時(shí)要注意每次中斷效勞程序執(zhí)行完成后都要給AD端口 230H 執(zhí)行一次虛擬 寫操作,從而啟動 AD轉(zhuǎn)換器進(jìn)行下一個數(shù)據(jù)的轉(zhuǎn)換。我開始時(shí)忽略了這個問題,結(jié)果使
35、DA輸出恒定不遍,無法跟蹤輸入的變化。2. 連線時(shí)一定要搞清原理,本實(shí)驗(yàn)是AD轉(zhuǎn)換完成后用EOC端子傳輸中斷請求的方式編 程,所以要注意I/O 口地址譯碼器的輸出端 228H 22FH接DAC的片選信號,230H - 237H接ADC的片 選信號,EOC接總線的B4段,另外,ADC要接500 KHZ的時(shí)鐘 信號,利用8MHZ的信號源經(jīng)16 分頻從Q3接出。實(shí)驗(yàn)四DMA傳送實(shí)驗(yàn)一. 實(shí)驗(yàn)?zāi)康模赫莆誅MA方式的工作原理和 8237的編程使用方法。二. 實(shí)驗(yàn)要求:1. 按照實(shí)驗(yàn)指導(dǎo)第61頁的實(shí)驗(yàn)接線圖連接硬件線路2. 對照【例】的程序清單鍵入源程序,經(jīng)匯編和連接后運(yùn)行程序三?電路分析1. DMA賣入
36、數(shù)據(jù)按下DMA按鍵,通過端子向 DMAS道1發(fā)硬件DMA青求,系統(tǒng) DMA控制器向CPU發(fā)總 線請求信號,CPU在執(zhí)行完當(dāng)前總線周期后向系統(tǒng)DMA控制器發(fā)總線響應(yīng)信號,隨即把總線控制權(quán)交給 DMA$制器,此時(shí)DACK侑效。然后DMA控制器將通道1的頁面地 址存放器及當(dāng)前地址存放器中的內(nèi)容放到地址總線上去,并發(fā)出存儲器讀命令,讀出內(nèi)存單元中的內(nèi)容送往數(shù)據(jù)總線。由于DACK1有效,通過J4短路線選中6116和雙向總線驅(qū)動器 74LS245 , IOW有效,通過J3短路線,使6116的WE有效, 從而 把數(shù)據(jù)總線上的數(shù)據(jù)通過74LS245寫入到6116的0號單元,完成一次 DMA賣傳送。此時(shí)通道1當(dāng)
37、前地址存放器自動加1,當(dāng)前字節(jié)存放器自動減 1。另外通過U38和JS引線 向分頻器輸入一個進(jìn)位脈沖,使分頻器計(jì)數(shù)一次,Q10- Q0輸出選擇6116的下一個單元。再反復(fù)上述讀過程直到當(dāng)前字節(jié)存放器為FFFFH為止,讀過程結(jié)束。2 將DMA數(shù)據(jù)寫到存儲器上按下DMA按鍵,通過端子向DMA!道1發(fā)硬件DMA青求,系統(tǒng)DM/控制器向CPU發(fā)總線請 求信號,CPU在執(zhí)行完當(dāng)前總線周期后向系統(tǒng)DMA控制器發(fā)總線響應(yīng)信號,隨即把總線控制權(quán)交給 DM/控制器,此時(shí) DACK侑效。然后DMA控制器將通道1的 頁面地 址存放器及當(dāng)前地址存放器中的內(nèi)容放到地址總線上去,并發(fā)出存儲器讀命令,讀出內(nèi)存單元中的內(nèi)容送往
38、數(shù)據(jù)總線。由于DACK1有效,通過J4短路線選中6116和雙向總線驅(qū)動器 74LS245 , IOR有效,通過J2短路線,使6116的RD有效, 從而讀 出6116當(dāng)前單元的內(nèi)容,通過74LS245寫入到系統(tǒng)數(shù)據(jù)總線,完成一次DMA寫傳送。此時(shí)通道1當(dāng)前地址存放器自動加 1,當(dāng)前字節(jié)存放器自動減 1。另外通過 U38和 JS引線向分頻器輸入一個進(jìn)位脈沖,使分頻器計(jì)數(shù)一次,Q10- Q0輸出選擇6116的下一個單元。再反復(fù)上述讀過程直到當(dāng)前字節(jié)存放器為FFFFH為止,寫過程結(jié)束。4. LS393在本實(shí)驗(yàn)中的作用作為一個分頻器,在本實(shí)驗(yàn)中起到了選定存儲器6116地址的作用。這是通過輸入譯碼后的進(jìn)位
39、時(shí)鐘實(shí)現(xiàn)的。四. 實(shí)驗(yàn)程序:DISP MACRO VARMOV AH,09HMOV DX,OFFSET VARINT 21HENDM此宏的功能是將以形參 VA肪地址的一個 字符 串打印在屏幕上SCANKE Y MACROLOCAL LLLLLL: MOV AH,01HINT 16HJZ LLL等待直到有鍵按下MOV AH,0INT 16H將鍵值保存到 AL中ENDMDATA SEGMENTTEXTDB 'THE QUICKBROWNOXJUMP9VERLAZY DOG'DB 0DH,0AHDB 'THE QUICKBROWROXJUMP3DVERLAZY DOG'DB 0DH,0AHDB 'THE QUICKBROWROXJUMP3DVERLAZY DOG'DB 0DH,0AH,'$'COUNT EQU $-TEXTBUF DB COUNT DUP MESG DB 'TO MAKE A DMA REQUEST!'DB'THEN STRIKE ANYKEY !',0DH,0AH,'$'DATA ENDSSTACK SEGMENT STACK 'STACK'計(jì)算輸出TEXT單元的20位物理地址D
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 詠雪課件教學(xué)課件
- 2024年度生物醫(yī)藥研發(fā)與生產(chǎn)合同
- 2024年建筑工程施工進(jìn)度保障協(xié)議
- 學(xué)校元旦課件教學(xué)課件
- 04設(shè)計(jì)定制專屬塔吊設(shè)計(jì)制造合同
- 2024專利申請權(quán)的轉(zhuǎn)讓合同書
- 2024年度技術(shù)開發(fā)與委托生產(chǎn)合同
- 2024工礦產(chǎn)品的加工合同
- 2024年大型超市送貨員崗位職責(zé)合同
- 2024系統(tǒng)集成合同模板
- 英語1分鐘演講小故事(課堂PPT)
- 很好的QC工程圖范本
- 吸收氨過程填料塔的設(shè)計(jì)吸收塔設(shè)計(jì)完整版
- 培智實(shí)用數(shù)學(xué)11冊認(rèn)識鐘表試題整理(共13頁)
- 連續(xù)梁施工作業(yè)要點(diǎn)手冊(支架現(xiàn)澆)
- 三年級習(xí)作:菊花教學(xué)指導(dǎo)(課堂PPT)
- 會議·宴會預(yù)訂單
- 個人醫(yī)德醫(yī)風(fēng)檔案
- 局組會議議題提報(bào)單模板
- 世界氣溫和降水的分布
- 申請一年或多年多次往返申根簽證信
評論
0/150
提交評論