微機(jī)原理習(xí)題 1_第1頁
微機(jī)原理習(xí)題 1_第2頁
微機(jī)原理習(xí)題 1_第3頁
微機(jī)原理習(xí)題 1_第4頁
微機(jī)原理習(xí)題 1_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1. 設(shè)8255a 的a 口、b 口、c 口和控制字寄存器的端口地址分別為80h 、82h 、84h 和86h 。要求a 口工作在方式0 輸出,b 口工作在方式0 輸入,c 口高 4 位輸入,低 4 位輸出,試編寫8255a 的初始化程序。mov al ,10001010b ;方式控制字 out 86h ,al 2. 8255a 的a 口、b 口、c 口和控制字寄存器的端口地址分別為80h 、82h 、84h 和86h,要求 pc4 輸出高電平,pc5 輸出低電平,pc6 輸出一個(gè)正脈沖,試寫出完成這些功能的指令序列。mov al ,00001001b ;pc4 輸出高電平 out 86h ,

2、al mov al ,00001010b ;pc5 輸出低電平out 86h ,al mov al ,000001100b ;pc6 先輸出低電平 out 86h ,al mov al ,00001101b ;pc6 再輸出高電平 out 86h ,al mov al ,00001100b ;pc6 再輸出低電平,形成一個(gè)正脈沖 out 86h ,al3. 8255a 的口地址為 80h83h ,8253 的口地址為 84h87h , (1 )若a 口接8 個(gè)開關(guān)k7k0,b 口接8 個(gè)指示燈led 7led0,當(dāng)開關(guān)合上時(shí)相應(yīng)的指示燈亮,斷開時(shí)燈滅,要求每隔0.5s 檢測(cè)一次開關(guān)狀態(tài),并在l

3、ed上顯示出來,試畫出硬件連線圖,編寫實(shí)現(xiàn)這種功能的程序。 (2 )若把接在端口 a 上的開關(guān)去掉,要求接在端口 b 上的指示燈輪流熄滅,每只燈熄滅 1秒鐘,請(qǐng)編程實(shí)現(xiàn)這種功能。 答:(1 )8255a :a 口輸入,b 口輸出 8253:2mhz/2hz1000000 通道0 工作于方式 2 ,取n01000 通道1 工作于方式 0 ,取n1999,即得out1 每0.5秒中斷一次。本題用 8253 定時(shí)中斷,中斷處理時(shí)檢測(cè)開關(guān)狀態(tài),并點(diǎn)亮相應(yīng)的 led 。 假設(shè)8259a 已初始化,主程序如下: mov ax, seg intr ;形成中斷矢量表 mov ds, ax mov dx, of

4、fset intrmov al, n mov ah, 25h int 21h mov al, 10010000b ;8255初始化 out 83h, al mov al, 00110101b ;通道0 方式 2 ,bcd計(jì)數(shù) out 87h, al mov al, 00h ;置初值1000 out 84h, al mov al, 10h out 84h, al mov al, 01110001b ;通道1 方式 0 ,bcd計(jì)數(shù)out 87h, al mov al, 99h ;置初值999 out 85h, al mov al, 09h out 85h, al sti again:hlt jm

5、p again 中斷服務(wù)程序: intr: push ax sti in al, 80h ;檢測(cè)開關(guān),合上為0 not al ;取反 out 81h, al ;點(diǎn)亮相應(yīng)led (合上) mov al, 01110001b ;通道1 方式 0 ,bcd計(jì)數(shù)out 87h, al mov al, 99h ;置初值999 out 85h, al mov al, 09h out 85h, al cli mov al, 20h ;普通eoi 命令 out 20h, al pop ax iret 2 )8255a :b 口輸出 8253:通道 0 工作于方式 2 ,取 n02000 通道1 工作于方式 3

6、 ,取 n11000,即得 out1 頻率為1hz (周期為1 秒)的方波,接到8259a 的iri,邊沿觸發(fā)中斷請(qǐng)求。 主程序如下: mov ax, seg intr ;形成中斷矢量表 mov ds, axmov dx, offset intr mov al, n mov ah, 25h int 21h mov al, 10000000b ;8255初始化 out 83h, al mov al, 00110101b ;通道0 方式 2 ,bcd計(jì)數(shù) out 87h, al mov al, 00h ;置初值2000 out 84h, al mov al, 20h out 84h, al mov

7、 al, 01110111b ;通道1 方式 3 ,bcd計(jì)數(shù) out 87h, al mov al, 00h ;置初值1000 out 85h, al mov al, 10h out 85h, al mov al, 0feh ;熄滅led0 out 81h, al sti goon:hlt jmp 中斷服務(wù)程序如下:intr: push ax sti rol al, 1 ;al左循環(huán)移位1 位 out 81h, al ;點(diǎn)亮下一位led cli mov al, 20h out 20h, al ;普通eoi 結(jié)束命令 pop ax iret 硬件連接圖如下:4. 設(shè)8255a 的口地址為300

8、h303h,a 口接4 個(gè)開關(guān)k3k0,b 口接一個(gè)七段led 顯示器,用來顯示4 個(gè)開關(guān)所撥通的 16 進(jìn)制數(shù)字0f,開關(guān)都合上時(shí),顯示0 ,都斷開時(shí)顯示f,每隔2 秒鐘檢測(cè)一次,試畫出硬件連線圖,并編寫實(shí)現(xiàn)這種功能的程序。 與上題思路相同 8255a :a 口方式 0 輸入,b 口方式0 輸出,端口地址 300h303h 8253:用于 2 秒定時(shí),端口地址為 304h307h 2mhz/0.5hz4000000 通道0 工作于方式 2 ,取n04000 通道1 工作于方式 0 ,取n1999,即得out1 每2 秒中斷一次。 本題用 8253 定時(shí)中斷,中斷處理時(shí)檢測(cè)開關(guān)狀態(tài),并點(diǎn)亮相應(yīng)

9、的 led 。假設(shè)8259a 已初始化,主程序如下: table db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h ; 七段碼表格 db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h mov ax, seg intr ;形成中斷矢量表 mov ds, ax mov dx, offset intr mov al, n mov ah, 25h int 21h mov al, 10010000b ;8255初始化 mov dx,303hout dx, al mov al, 00110101b ;8253初始化,通道 0 方式2 ,bc

10、d計(jì)數(shù) mov dx ,307h out dx,al mov al, 00h ;置初值4000h mov dx ,304h out dx, al mov al, 40h out dx, al mov al, 01110001b ;通道1 方式 0 ,bcd計(jì)數(shù) mov dx ,307h out dx, al mov al, 99h ;置初值999 mov dx ,305hout dx, al mov al, 09h out dx, al sti again:hlt jmp again 中斷服務(wù)程序: intr: push ax sti mov dx ,300h in al, dx ;檢測(cè)開關(guān),

11、合上為0 and al,0fh ;只保留低4 位pa 3 pa 0 mov bx ,offset table xlat table mov dx ,301h out dx,al ;點(diǎn)亮led ,顯示數(shù)字 mov al, 01110001b ;通道1 方式 0 ,bcd計(jì)數(shù) mov dx ,307h out dx,al mov al, 99h ;置初值999 mov dx ,305h out dx,al mov al, 09h out dx ,al cli mov al, 20h ;普通eoi 命令 out 20h, al pop ax iret 5. 利用8255a 和adc0809等芯片設(shè)計(jì)

12、 pc機(jī)上的a/d 轉(zhuǎn)換卡,設(shè)8255a 的口地址為 3c0 h3c3h,要求對(duì) 8 個(gè)通道各采集1 個(gè)數(shù)據(jù),存放到數(shù)據(jù)段中以d_buf為始址的緩沖器中,試完成以下工作: (1 )畫出硬件連接圖。 (2 )編寫完成上述功能的程序。(2 )ad_sub proc near mov cx,8 ;cx作數(shù)據(jù)計(jì)數(shù)器 mov bl,00h ;模擬通道號(hào)存在 bl中 lea di,d_buf ;緩沖區(qū) next_in : mov dx,3c2h ;8255a 端口c 地址 mov al,bl out dx ,al ;輸出通道號(hào) mov dx,3c3h ;指向控制口 mov al,00000111b ;pc

13、3 置1 out dx ,al ;送出開始啟動(dòng)信號(hào) nop ;延時(shí) nop nop mov al,00000110b ;pc3 復(fù)位 out dx ,al ;送出結(jié)束啟動(dòng)信號(hào) mov dx,3c2h ;c 口 no_conv: in al ,dx ;讀入c 口內(nèi)容 test al,80h ;pc7 ,eoc 信號(hào)jnz no_conv ;pc7=1 ,未開始轉(zhuǎn)換,等待 no_eoc: in al,dx ;pc7=0 ,已啟動(dòng)轉(zhuǎn)換 test al,80h ;再查pc7 jz no_eoc ;pc7=0 ,轉(zhuǎn)換未結(jié)束,等待 mov dx ,3c0h ;pc7=1 ,轉(zhuǎn)換結(jié)束,dx指向a 口 in

14、al,dx ;讀入數(shù)據(jù) mov di,al ;存入緩沖區(qū) inc di inc bl ;指向下個(gè)通道 loop next_inret ad_sub endp 6. 試?yán)?adc0809,8253 和8259a 等芯片設(shè)計(jì)8 通道a/d 轉(zhuǎn)換電路。系統(tǒng)中用 8253 作定時(shí)器,采用中斷方式控制采樣率,采樣率為500hz 。設(shè) 8253 的通道 0 輸入時(shí)鐘脈沖為 2mhz ,輸出端out0 接8259a 的ir2 ,8253 的口地址為 300h303h,8259a 的口地址為304h和305h,adc0809的8 個(gè)輸入通道的口地址為 308h30fh,查詢 eoc 信號(hào)和狀態(tài)口地址為306

15、h,adc0809的輸入時(shí)鐘頻率為 640khz,a/d 轉(zhuǎn)換的結(jié)果依次存入數(shù)據(jù)段中以buffer為始址的內(nèi)存中,從通道0 開始先存入各通道的第一個(gè)數(shù)據(jù),再存放第二個(gè)數(shù)據(jù),采集10秒鐘后停止工作。要求: (1 )畫出硬件連線圖,可以不畫具體的譯碼電路。(2 )編寫8253,8259a (只需寫入中斷屏蔽字)的初始化程序及采集 8 路模擬信號(hào)的中斷服務(wù)程序。 答:(1 )(2 )因?yàn)?253的時(shí)鐘輸入頻率為 2mhz ,而要求的采樣頻率f=500hz ,即用 8253定時(shí),每隔2ms 中斷一次,因此8253 的分頻次數(shù)(時(shí)間常數(shù))n=2mhz/500hz=4000。采集10 秒鐘,共采集 10s

16、/2ms=5000 次,即 8253 中斷次數(shù)為 5000 次。 data segment buffer db 8*5000 dup(?) data ends ;數(shù)據(jù)采集子程序 8253初始化編程,通道 0,方式2 ,先寫低字節(jié),后高字節(jié),bcd計(jì)數(shù),時(shí)間常數(shù)4000 mov dx ,303h mov al ,00110101b out dx,al mov dx ,300h ;通道 0 mov ax ,4000h ;時(shí)間常數(shù) out dx,al mov al ,ah out dx,al ;8259a 設(shè)置屏蔽字,僅允許 8259a 的ir2 和鍵盤中斷,其余禁止 mov al ,1111100

17、1b ;屏蔽字 mov dx ,305h out dx,al ;向屏蔽寄存器輸出屏蔽字 ;設(shè)置數(shù)據(jù)緩沖區(qū)始址到 si 中,計(jì)數(shù)初值到 bx中,等待中斷,每通道采完 5000 次后結(jié)束中斷 mov si,offset buffer ;si 指向數(shù)據(jù)緩沖區(qū) mov bx ,5000 sti ;開中斷 again:cmp bx,0 jnz again mov al ,11111101b ;采集完,禁止 ir2 中斷 mov dx ,305h out dx,al mov ah ,4ch ;退出中斷 int 21h ;中斷服務(wù)程序,對(duì)每個(gè)通道均采集一個(gè)數(shù)據(jù),存入bufferadint proc near

18、 mov cx ,0008h ;設(shè)置通道計(jì)數(shù)器初值 mov dx ,308h ;dx指向adc通道0 next:out dx,al ;啟動(dòng)一次轉(zhuǎn)換 push dx ;保存通道號(hào) mov dx ,306h ;dx指向狀態(tài)口 poll:in al ,dx ;讀入eoc 狀態(tài) test al ,80h ;eoc (d7)=0?即開始轉(zhuǎn)換了 jnz poll ;非0 ,循環(huán)等待 no_end:in al ,dx ;eoc=0,開始轉(zhuǎn)換 test al ,80h ;再查eoc 是否為1 jz no_end ;eoc=0,等待轉(zhuǎn)換結(jié)束 pop dx ;eoc=1,恢復(fù)通道地址 in al ,dx ;讀取結(jié)

19、果 mov si,al ;存儲(chǔ)到緩沖區(qū) inc dx ;dx指向下一個(gè)通道 inc si ;地址指針指向下一個(gè)緩沖單元 loop next ;通道計(jì)數(shù)器減1 ,結(jié)果非 0 則循環(huán) dec bx ;為0 ,緩沖數(shù)據(jù)計(jì)數(shù)器減 1 mov al,20h mov dx,304h out dx ,al sti ;開中斷 iret adint endp7. 利用8255a 和ad574a 設(shè)計(jì)數(shù)據(jù)采集系統(tǒng),輸入模擬電壓為0 +10v,若每秒采集100個(gè)數(shù)據(jù),轉(zhuǎn)換后的數(shù)據(jù)字存放在 w_buf開始的緩沖器中,低字節(jié)在前,高字節(jié)在后,采滿16k 字節(jié)的數(shù)據(jù)后停止工作,要求: (1 )畫出硬件連線圖。 (2 )編寫啟動(dòng) ad574a 工作和讀取轉(zhuǎn)換結(jié)果的子程序。(2 )16k 字節(jié)的數(shù)據(jù)共需要8k=8192 次采集 ;8255a 的端口地址 port_a equ 0f0h ;a 口地址 port_b equ 0f1h ;b 口地址 port_c equ 0f2h ;c 口地址 port_ctl equ 0f3h ;控制口地址 ;8255a 控制字:a 口和b 口工作于方式 0 ,a 口、b 口和c 口的上半部分為輸入,c口的下半部分為輸出

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論