




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、指導(dǎo)教師 郝立新 接口技術(shù)是把由處理器、存儲(chǔ)器等組成的基本系統(tǒng)與外部設(shè)備連接起來(lái),從而實(shí)現(xiàn)cpu與外部設(shè)備通信的一門(mén)技術(shù)。 微機(jī)的應(yīng)用是隨著外部設(shè)備的不斷更新和接口技術(shù)的不斷發(fā)展而深入到各行各業(yè),任何微機(jī)應(yīng)用開(kāi)發(fā)工作都離不開(kāi)接口的設(shè)計(jì)、選用及連接。 微機(jī)應(yīng)用系統(tǒng)需要設(shè)計(jì)的硬件是一些接口電路,所要編寫(xiě)的軟件是控制這些接口電路按要求工作的驅(qū)動(dòng)程序。 實(shí)驗(yàn)一 字符串排序 實(shí)驗(yàn)二 基本輸入輸出接口 實(shí)驗(yàn)三 8259中斷控制器 實(shí)驗(yàn)四 8254定時(shí)/計(jì)數(shù)器 實(shí)驗(yàn)五 8255并行接口控制器 實(shí)驗(yàn)六 adc0809模/數(shù)轉(zhuǎn)換器 實(shí)驗(yàn)七 dac0832 數(shù)/模轉(zhuǎn)換器* 實(shí)驗(yàn)八 8251串行接口控制器 *實(shí)驗(yàn)?zāi)?/p>
2、的實(shí)驗(yàn)?zāi)康?1.熟悉匯編語(yǔ)言程序的框架結(jié)構(gòu), 掌握匯編語(yǔ)言上機(jī)操作過(guò)程。 2.學(xué)會(huì)int 21h功能調(diào)用, 掌握人機(jī)對(duì)話(huà)的設(shè)計(jì)方法。 3.進(jìn)一步掌握主、子程序的設(shè)計(jì)方法。 4.學(xué)會(huì)tddebug調(diào)試環(huán)境和turbo debug的使用。設(shè)計(jì)一字符串排序程序:(1)當(dāng)屏幕上顯示“ plesae entry string ” 提示信息,從鍵盤(pán)輸入一字符串;(2) 對(duì)該字符串以ascii碼從小到大進(jìn)行排序;(3)在屏幕上顯示排好序的字符串。(1)用int 21h的09號(hào)顯示字符串功能調(diào)用顯示提示信息(2)用int 21h的0a號(hào)輸入字符串功能調(diào)用輸入字符串至輸入緩沖區(qū)(3)對(duì)輸入緩沖區(qū)的字符串以asc
3、ii碼 從小到大進(jìn)行排序(4)用int 21h的09號(hào)顯示字符串功能調(diào)用顯示排好序的字符串(1)將第一個(gè)數(shù)取出作為當(dāng)前最小值,與其余n-1個(gè)數(shù)比較;若其余數(shù)比當(dāng)前最小值小則兩者交換,否則不交換 ;全部比較完,則得到n個(gè)數(shù)中的最小值,寫(xiě)到串前列。(2)對(duì)剩下的n1 個(gè)數(shù)重復(fù)(1)這一步,找到n1 個(gè)數(shù)中的最小值。 (3)再重復(fù)(2),直到n 個(gè)數(shù)全部排列好為止。 ;title bubblf sortstack1 segment stack db 64 dup(0)stack1 endsdata segmentprompt db 0dh,0ah,please entry string,0dh,0a
4、h,$crlf db 0dh,0ah,$char label bytecharh db 60 charn db ? charf db 60 dup(?)data endscode segment assume cs:code,ds:data,ss:stack1begin proc far push ds mov ax, 0 push ax mov ax, data mov ds, axagain: lea dx, prompt mov ah, 9 int 21h lea dx, char mov ah, 0ah int 21h mov cl, charn or cl, cl jz done c
5、all sort jmp againdone: retbegin endpsort proc xor ch, ch mov bx, cx mov si, offset charf mov byte ptr si+bx, $ cldbigloop: mov al, si dec cx jcxz disp push cx inc si push sismalloop: cmp al, si jbe next xchg al, sinext: inc si loop smalloop pop si mov si-1, al call disp pop cx jmp bigloop disp: mov
6、 dx, offset crlf mov ah, 9 int 21h mov dx, offset charf mov ah, 9 int 21h retsort endpcode ends end begin(1)輸入源程序 .asm文件(2) 編譯程序.obj文件(3) 連接程序.exe文件(4)調(diào)試運(yùn)行程序 運(yùn)行當(dāng)前可執(zhí)行程序 調(diào)試程序1: 實(shí)模式調(diào)試窗口進(jìn)行調(diào)試 調(diào)試程序2: dos環(huán)境進(jìn)行調(diào)試 主菜單條代碼顯示區(qū)數(shù)據(jù)顯示區(qū)寄存器顯示區(qū)提示區(qū)標(biāo)志寄存器顯示區(qū)堆棧顯示區(qū)(1) viewcpu (2)代碼顯示區(qū)單擊右鍵點(diǎn)擊為mixed both,為mixed no,(3) 在寄存器顯示區(qū)點(diǎn)
7、擊 ctrl+r 切換16位/32位通用寄存器顯示(4) 執(zhí)行完 mov ds, ax,點(diǎn)擊viewcpu,使屏幕下方的數(shù)據(jù)顯示區(qū)為ds的內(nèi)容 (5) f7 單步執(zhí)行 f4 執(zhí)行到光標(biāo)處 f9 運(yùn)行程序 ctrl+break 終止程序執(zhí)行 alt+x 退出td輸入命令: debug 文件名.exe a.反匯編命令反匯編命令u 格式格式:u地址地址 或或 u地址范圍地址范圍 b. 檢查和修改寄存器內(nèi)容命令檢查和修改寄存器內(nèi)容命令r 格式格式: r 或或 r寄存器名寄存器名 c. 顯示內(nèi)存命令顯示內(nèi)存命令d 格式格式: d 地址地址 或或 d地址范圍地址范圍 d. 修改存儲(chǔ)單元內(nèi)容命令修改存儲(chǔ)單元
8、內(nèi)容命令e 格式格式: e 地址地址 內(nèi)容表內(nèi)容表 或或 e 地址地址 e. 跟蹤與顯示命令跟蹤與顯示命令t 格式格式:t =地址地址 條數(shù)條數(shù) f. 運(yùn)行命令運(yùn)行命令g 格式格式: g =地址地址 地址地址1地址地址2 h.結(jié)束結(jié)束debug返回到返回到dos命令命令 qdos狀態(tài)再返回到windows狀態(tài),輸入exit命令 1. 了解微機(jī)pci系統(tǒng)總線(xiàn)的結(jié)構(gòu)。 2. 掌握地址譯碼電路的一般設(shè)計(jì)方法。 3. 掌握基本i/o接口電路的設(shè)計(jì)方法, 熟練匯編語(yǔ)言i/o端口操作指令的使用。 1. 利用三態(tài)緩沖器74ls245、鎖存器74ls574設(shè)計(jì)微機(jī)總線(xiàn)和外部設(shè)備的數(shù)據(jù)通道,實(shí)現(xiàn)微機(jī)對(duì)外部輸入數(shù)
9、據(jù)的讀取和對(duì)輸出數(shù)據(jù)的輸出。用開(kāi)關(guān)及l(fā)ed顯示單元和數(shù)據(jù)燈作為輸入和輸出顯示設(shè)備,將讀到開(kāi)關(guān)的數(shù)據(jù)顯示在數(shù)據(jù)燈上。 2. 在完成實(shí)驗(yàn)內(nèi)容1的基礎(chǔ)上, 自行編制程序完成: 根據(jù)輸入開(kāi)關(guān)的某一位的開(kāi)關(guān)狀態(tài),決定led顯示單元數(shù)據(jù)燈的不同顯示方式。pci 總線(xiàn)擴(kuò)展卡和td-pit+實(shí)驗(yàn)平臺(tái) usb總線(xiàn)pci總線(xiàn)內(nèi)存總線(xiàn)agp總線(xiàn)c p u北橋芯片顯卡顯示器內(nèi)存pci槽pci槽南橋芯片ied接口硬盤(pán)鍵盤(pán)鼠標(biāo)flash biosusb設(shè)備pci卡微機(jī)實(shí)驗(yàn)箱系統(tǒng)總線(xiàn)單元擴(kuò)展單元flashrom單元8254單元直流電機(jī)單元8255單元d/a轉(zhuǎn)換單元鍵盤(pán)及數(shù)碼管顯示單元a/d轉(zhuǎn)換單元點(diǎn)陣led單元單次脈沖單元
10、16550單元32位i/o接口單元32位存儲(chǔ)器單元電源開(kāi)關(guān)溫控單元面 包 板電子發(fā)聲單元8259單元8237單元地址譯碼單元開(kāi)關(guān)及l(fā)ed顯示單元時(shí)鐘源pwm轉(zhuǎn)換電路串行接口電位器步進(jìn)電機(jī)單元系統(tǒng)總線(xiàn)單元電路和實(shí)驗(yàn)單元電路 信號(hào)名稱(chēng)含義xd31:032位數(shù)據(jù)總線(xiàn)xa31:232位地址總線(xiàn)xmer、xmew、xior、xiow存儲(chǔ)器讀寫(xiě)信號(hào)、i/o讀寫(xiě)信號(hào)ioy0、ioy1、ioy2、ioy3i/o空間片選信號(hào)myo、my1、my2、my3存儲(chǔ)器空間片選信號(hào) be0、be1、be2、be332位數(shù)據(jù)字節(jié)使能信號(hào)hold、hlda總線(xiàn)保持請(qǐng)求和總線(xiàn)保持響應(yīng)信號(hào)intr中斷請(qǐng)求信號(hào)(上升沿有效)clk
11、系統(tǒng)時(shí)鐘信號(hào) clk=1.041667mhzi/o片選信號(hào) 偏移地址范圍實(shí)際地址范圍mem片選信號(hào)實(shí)際地址范圍ioy000-3fh3000-303fhmy0d80000-d8ffffioy140-7fh3040-307fhmy1ioy280-bfh3080-30bfhmy2ioy3c0-ffh30c0-30ffhmy3實(shí)驗(yàn)系統(tǒng)向pc 機(jī)申請(qǐng)了接口實(shí)驗(yàn)所需的配置資源。其中包括:256字節(jié)的i/o 地址空間16mb 的存儲(chǔ)地址空間一個(gè)中斷請(qǐng)求線(xiàn) l32位系統(tǒng)總線(xiàn)iom/信號(hào),該信號(hào)為低電平時(shí)指示當(dāng)前操作為i/o操作,為高電平指示當(dāng)前操作為存儲(chǔ)器操作,它和譯碼器不同的連接可以用來(lái)區(qū)分是i/o端口譯碼
12、還是存儲(chǔ)器端口譯碼 l32位總線(xiàn)地址是由a2開(kāi)始,所以地址是以4字節(jié)邊界對(duì)齊的。 l現(xiàn)在本機(jī)分配的i/o端口起始地址為3000h ,設(shè)計(jì)地址譯碼電路,主要是針對(duì)低8位地址線(xiàn)譯碼,得到偏移在00hffh之間的端口 l微機(jī)接口電路中,常采用74ls138譯碼器來(lái)實(shí)現(xiàn)i/o端口或存儲(chǔ)器的地址譯碼。 y0y1y2y3y4y5y6y7123456abcg2ag2bg11514131211109774ls138abcgy0y1y2y3y4y5y6y7gnd+5vl輸入接口一般用三態(tài)緩沖器實(shí)現(xiàn),外部設(shè)備輸入數(shù)據(jù)通過(guò)三態(tài)緩沖器,通過(guò)數(shù)據(jù)總線(xiàn)傳送給微機(jī)系統(tǒng)。l輸出接口一般用鎖存器實(shí)現(xiàn) l 12345678910
13、dira0a1a2a2a4a5a6a7gnd20191817161514131211vccgb0b1b2b3b4b5b6b774ls24512345678910oed0d1d2d3d4d5d6d7gnd20191817161514131211vccq0q1q2q3q4q5q6q7clk74ls574d7d0a7:0b7:0i7:074ls245gdir 0 d7d0d7:0q7:0o7:074ls574clkoe 0 ioriowcs輸入輸出23456789111d0d1d2d3d4d5d6d7oeclkq0q1q2q3q4q5q6q71918171615141312o0o1o2o3o4o5o
14、6o774ls57423456789191a0a1a2a3a4a5a6a7gdirb0b1b2b3b4b5b6b71817161514131211i0i1i2i3i4i5i6i774ls245ioriowxd0xd1xd2xd3xd4xd5xd6xd7xd0xd1xd2xd3xd4xd5xd6xd7vcc23456789111d0d1d2d3d4d5d6d7oeclkq0q1q2q3q4q5q6q71918171615141312o8o9o10o11o12o13o14o1574ls57423456789191a0a1a2a3a4a5a6a7gdirb0b1b2b3b4b5b6b71817161
15、514131211i8i9i10i11i12i13i14i1574ls245xd8xd9xd10xd11xd12xd13xd14xd15xd8xd9xd10xd11xd12xd13xd14xd1523456789111d0d1d2d3d4d5d6d7oeclkq0q1q2q3q4q5q6q71918171615141312o16o17o18o19o20o21o22o2374ls57423456789191a0a1a2a3a4a5a6a7gdirb0b1b2b3b4b5b6b71817161514131211i16i17i18i19i20i21i22i2374ls245xd16xd17xd18x
16、d19xd20xd21xd22xd23xd16xd17xd18xd19xd20xd21xd22xd2323456789111d0d1d2d3d4d5d6d7oeclkq0q1q2q3q4q5q6q71918171615141312o24o25o26o27o28o29o30o3174ls57423456789191a0a1a2a3a4a5a6a7gdirb0b1b2b3b4b5b6b71817161514131211i24i25i26i27i28i29i30i3174ls245xd24xd25xd26xd27xd28xd29xd30xd31xd24xd25xd26xd27xd28xd29xd30
17、xd31cscs系統(tǒng)總線(xiàn) xd0xd31be0be1be2be3be0vccvccvccbe1be2be3 將開(kāi)關(guān)k7:0的數(shù)據(jù)通過(guò)輸入數(shù)據(jù)通道讀入cpu的寄存器,然后再通過(guò)輸出數(shù)據(jù)通道將該數(shù)據(jù)輸出到數(shù)據(jù)燈顯示,該程序循環(huán)運(yùn)行,直到按動(dòng)鍵盤(pán)上任意按鍵再退出程序。(1) 確認(rèn)從pc機(jī)引出的兩根扁平電纜已經(jīng)連接在實(shí)驗(yàn)平臺(tái)上。 (2) 自行設(shè)計(jì)并連接實(shí)驗(yàn)線(xiàn)路。 a. 32 位i/o 接口單元與系統(tǒng)總線(xiàn)單元的連接 1csioy0,be3-be0be3-be0 2iorxior,iowxiow (數(shù)據(jù)線(xiàn)已內(nèi)部連接) b. 32 位i/o 接口單元與開(kāi)關(guān)及l(fā)ed顯示單元的連接 1. i7-i0k7-k0
18、2. o7-o0d7-d0(3) 編輯asm程序,注意使用正確的端口地址,然后編譯鏈接。 (4) 運(yùn)行程序,撥動(dòng)開(kāi)關(guān),觀(guān)看數(shù)據(jù)燈顯示是否正確。 ioy0 equ 3000h stack1 segment stack dw 256 dup(?)stack1 endscode segment assume cs:codestart: mov dx, ioy0 in al, dx out dx, al mov ah, 1 int 16h jz startquit: mov ax, 4c00h int 21hcode ends end startdebug常用命令常用命令輸出命令輸出命令o 格式: o
19、 端口地址 字節(jié)值 向指定端口地址輸出一個(gè)字節(jié)。輸入命令輸入命令i 格式: i 端口地址 從指定端口地址輸入一個(gè)字節(jié)。 自行編制程序完成: 根據(jù)輸入開(kāi)關(guān)的某一位的開(kāi)關(guān)狀態(tài),決定led顯示單元數(shù)據(jù)燈的不同顯示方式。 ioy0 equ 3000h stack1 segment stack dw 256 dup(?)stack1 endscode segment assume cs:codestart: mov dx, ioy0 in al, dx test al,10000000b jnz aa test ad,01000000b jnz bbcc: mov ah, 1 int 16h jz st
20、artquit: mov ax, 4c00h int 21haa: mov cx,8 mov dx, ioy0mov al,10000000baa1:out dx,al call delay ror al,1 loop aa1 jmp ccbb: mov cx,8 mov dx, ioy0mov al,00000001bbb1:out dx,al call delay rol al,1 loop bb1 jmp ccdelay: push cx mov cx,07ffhdd1: push cx mov cx,0fffffh loop $ pop cx loop dd1 pop cx retco
21、de ends end start 91481217251334106111516r0r0r15 r15 為行控制,為行控制,l0l0l15 l15 為列控制,為列控制,給行送一個(gè)給行送一個(gè)“1”1”,給列送一個(gè),給列送一個(gè)“0”0”,則相應(yīng)的,則相應(yīng)的led led 點(diǎn)亮。點(diǎn)亮。r09r114r28r312r41r57r62r75l716l615l511l46l310l24l13l013udz3r09r114r28r312r41r57r62r75l716l615l511l46l310l24l13l013udz4r0r1r2r3r4r5r6r7r8r9r10r11r12r13r14r15vcc
22、r09r114r28r312r41r57r62r75l716l615l511l46l310l24l13l013udz2r09r114r28r312r41r57r62r75l716l615l511l46l310l24l13l013udz11b12b23b34b45b56b67b78b8gnd9com108c117c126c135c144c153c162c171c18u2803_r11b12b23b34b45b56b67b78b8gnd9com108c117c126c135c144c153c162c171c18u2803_r21b12b23b34b45b56b67b78b8g n d9co m10
23、8c117c126c135c144c153c162c171c18u 2803_c11b12b23b34b45b56b67b78b8g n d9co m108c117c126c135c144c153c162c171c18u 2803_c2l0l1l2l3l4l5l6l7l8l9l10l11l12l13l14l15vcc23456789111d0d1d2d3d4d5d6d7oeclkq0q1q2q3q4q5q6q71918171615141312o0o1o2o3o4o5o6o774ls57423456789191a0a1a2a3a4a5a6a7gdirb0b1b2b3b4b5b6b71817161
24、514131211i0i1i2i3i4i5i6i774ls245ioriowxd0xd1xd2xd3xd4xd5xd6xd7xd0xd1xd2xd3xd4xd5xd6xd7vcc23456789111d0d1d2d3d4d5d6d7oeclkq0q1q2q3q4q5q6q71918171615141312o8o9o10o11o12o13o14o1574ls57423456789191a0a1a2a3a4a5a6a7gdirb0b1b2b3b4b5b6b71817161514131211i8i9i10i11i12i13i14i1574ls245xd8xd9xd10xd11xd12xd13xd14
25、xd15xd8xd9xd10xd11xd12xd13xd14xd1523456789111d0d1d2d3d4d5d6d7oeclkq0q1q2q3q4q5q6q71918171615141312o16o17o18o19o20o21o22o2374ls57423456789191a0a1a2a3a4a5a6a7gdirb0b1b2b3b4b5b6b71817161514131211i16i17i18i19i20i21i22i2374ls245xd16xd17xd18xd19xd20xd21xd22xd23xd16xd17xd18xd19xd20xd21xd22xd2323456789111d0
26、d1d2d3d4d5d6d7oeclkq0q1q2q3q4q5q6q71918171615141312o24o25o26o27o28o29o30o3174ls57423456789191a0a1a2a3a4a5a6a7gdirb0b1b2b3b4b5b6b71817161514131211i24i25i26i27i28i29i30i3174ls245xd24xd25xd26xd27xd28xd29xd30xd31xd24xd25xd26xd27xd28xd29xd30xd31cscs系統(tǒng)總線(xiàn) xd0xd31be0be1be2be3be0vccvccvccbe1be2be3l0l1l2l3l4l
27、5l6l7l8l9101112131415r0r1r2r3r4r5r6r7r8r9101112131415nuaa dw 0000h,0000h,7c7fh,1206h,110ch,1218h,7c7fh,0000h nuaa dw 0000h,0000h,7c7fh,1206h,110ch,1218h,7c7fh,0000h dw 0000h,7c3fh,1240h,1140h,1240h,7c3fh,0000h,0000h dw 0000h,7c3fh,1240h,1140h,1240h,7c3fh,0000h,0000h;hlxled.asm;hlxled.asmioy0 equ 300
28、0h ;ioy0 equ 3000h ;片選片選ioy0ioy0對(duì)應(yīng)的端口始地址對(duì)應(yīng)的端口始地址i032_1 equ 3000hi032_1 equ 3000hi032_2 equ 3001hi032_2 equ 3001hi032_3 equ 3002hi032_3 equ 3002hi032_4 equ 3003hi032_4 equ 3003h stack1 segment stackstack1 segment stack dw 256 dup(?) dw 256 dup(?)stack1 endsstack1 endsdata segmentdata segmentnuaa dw 0
29、000h,0000h,7c7fh,1206h,110ch,1218h,7c7fh,0000hnuaa dw 0000h,0000h,7c7fh,1206h,110ch,1218h,7c7fh,0000h dw 0000h,7c3fh,1240h,1140h,1240h,7c3fh,0000h,0000h dw 0000h,7c3fh,1240h,1140h,1240h,7c3fh,0000h,0000h data endsdata endscode segmentcode segment assume cs:code,ds:data assume cs:code,ds:datastart: m
30、ov ax,datastart: mov ax,data mov ds,ax mov ds,axmain: mov cx, 500main: mov cx, 500disp:disp:push cx push cx mov si,offset nuaa mov si,offset nuaa mov bx,1111111111111110b mov bx,1111111111111110b mov cx,16 mov cx,16 disp1: mov ax,si disp1: mov ax,si mov dx,i032_1 mov dx,i032_1 out dx,al out dx,al mo
31、v dx,i032_2 mov dx,i032_2 mov al,ah mov al,ah out dx,al out dx,al mov ax,bx mov ax,bx mov dx,i032_3 mov dx,i032_3 out dx,al out dx,al mov dx,i032_4 mov dx,i032_4 mov al,ah mov al,ah out dx,al out dx,al call dallycall dally rol bx,1 rol bx,1 inc si inc si inc si inc si loop disp1 loop disp1 pop cx po
32、p cx loop disp loop disp mov ah,1 ; mov ah,1 ;判斷是否有按鍵按下判斷是否有按鍵按下 int 16hint 16h jz main ; jz main ;無(wú)按鍵則跳回繼續(xù)循環(huán),有則退出無(wú)按鍵則跳回繼續(xù)循環(huán),有則退出quit: mov ax,4c00h ;quit: mov ax,4c00h ;結(jié)束程序退出結(jié)束程序退出 int 21hint 21hdally proc near ;dally proc near ;軟件延時(shí)子程序軟件延時(shí)子程序 push cx push cx mov cx,50 mov cx,50d1 : mov ax,0ffffhd1
33、 : mov ax,0ffffhd2: dec axd2: dec ax jnz d2 jnz d2 loop d1 loop d1 pop cx pop cx ret retdally endpdally endpcode endscode ends end start end start 實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)?zāi)康?(1) 學(xué)習(xí)中斷控制器8259的工作原理。 (2) 掌握可編程控制器8259的應(yīng)用編程方法。實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容 利用pc機(jī)給實(shí)驗(yàn)系統(tǒng)分配的中斷線(xiàn),設(shè)計(jì)一個(gè)單中斷應(yīng)用。使用單次脈沖模擬中斷產(chǎn)生。編寫(xiě)中斷處理程序,在顯示器屏幕上顯示一個(gè)字符。數(shù)據(jù)總線(xiàn)緩沖器d7-d0rdwra0cscas0ca
34、s1cas2sp/enicw1icw2icw3icw4初始化命令寄存器組內(nèi)部總線(xiàn)控 制 邏 輯中斷服務(wù)寄存器(isr)優(yōu)先級(jí)分析器中斷請(qǐng)求寄存器(irr)ir0ir1ir2ir3ir4ir5ir6ir7中斷屏蔽寄存器(imr)ocw1ocw2ocw3操作命令寄存器組讀/寫(xiě)電路級(jí)聯(lián)緩沖器/比較器12345678910111213142827262524232221201918171615vcca0intair7ir6ir5ir4ir3ir2ir1ir0intsp/encas2cswrrdd7d6d5d4d3d2d1d0cas0cas1gndintaint8259 管理8級(jí)中斷,通過(guò)級(jí)連,能構(gòu)成多
35、達(dá)64級(jí)的矢量中斷系統(tǒng)。 選擇中斷請(qǐng)求方式和中斷優(yōu)先模式。 管理功能包括:1)記錄各級(jí)中斷源請(qǐng)求,2)判別優(yōu)先級(jí),確定是否響應(yīng)及響應(yīng)哪一級(jí)中斷,3)響應(yīng)中斷時(shí),向cpu傳送中斷類(lèi)型號(hào)。 初始化命令字icw1-icw4 操作命令字ocw1- ocw3 icw1 決定中斷請(qǐng)求信號(hào)為電平觸發(fā)還是邊沿觸發(fā)。 icw2 8259的基址中斷向量號(hào) 00001ltimadisnglic4d7d6d5d4d3d2d1d0d0=0:不需要 icw4d0=1:需要icw4d1=0:多片級(jí)聯(lián)d1=1:?jiǎn)纹褂胐3=0:邊沿觸發(fā)d3=1:電平觸發(fā)8086/8088不使用特征位a0無(wú)效1t7t6t5t4t3000d7d
36、6d5d4d3d2d1d0a08086/8088 不使用中斷類(lèi)型號(hào)的高 5位icw3 識(shí)別主8259設(shè)備連接到從8259的級(jí)聯(lián)信號(hào) icw4 選擇特殊全嵌套或全嵌套模式,使能中斷自動(dòng)結(jié)束方式。 1s7s6s5s4s3s2s1s0d7d6d5d4d3d2d1d0a01id2id1id0d7d6d5d4d3d2d1d0a0不可用主片從片1000sfnmbufm/saeoiupmd7d6d5d4d3d2d1d0a0ocw1 中斷屏蔽操作寄存器,可屏蔽相應(yīng)的中斷信號(hào)。ocw2 改變中斷優(yōu)先級(jí)和發(fā)送中斷結(jié)束命令。 ocw3 使能特殊屏蔽方式,設(shè)置中斷查詢(xún)方式,允許讀出中斷請(qǐng)求寄存器和當(dāng)前中斷服務(wù)寄存器。
37、 1m7m6m5m4m3m2m1m0d7d6d5d4d3d2d1d0a00rsleoi00l2l1l0d7d6d5d4d3d2d1d0a0編碼對(duì)應(yīng)ir的最低優(yōu)先權(quán)ocw2ocw10:不查詢(xún)1:允許查詢(xún)0esmmsmm01prrris0x :無(wú)效10 :可讀irr11 :可讀isr0x :無(wú)效10 :復(fù)位特殊屏蔽11 :設(shè)置特殊屏蔽001011101100000111110010一般 eoi特殊 eoi循環(huán)優(yōu)先權(quán)的一般eoi在自動(dòng)eoi 下置循環(huán)優(yōu)先權(quán)循環(huán)優(yōu)先權(quán)的特殊eoi 命令設(shè)置優(yōu)先權(quán)無(wú)效在自動(dòng)eoi 下復(fù)位循環(huán)優(yōu)先權(quán)中斷結(jié)束命令自動(dòng)循環(huán)特殊循環(huán)0a0d7d6d5d4d3d2d1d0ocw3
38、 80 x86系列pc微機(jī)系統(tǒng)中兩片8259a中斷控制器,經(jīng)級(jí)連可以管理15級(jí)硬件中斷。 主片8259端口地址使用020h和021h; 從片8259端口地址使用0a0h和0a1h。 中斷號(hào)中斷號(hào)功能功能中斷向量號(hào)中斷向量號(hào)中斷向量地址中斷向量地址主8259 irq0日時(shí)鐘/計(jì)數(shù)器008h0020h0023h主8259 irq1鍵盤(pán)09h0024h0027h主8259 irq2接從片82590ah0028h002bh主8259 irq3串行口20bh002ch002fh主8259 irq4串行口10ch0030h0033h主8259 irq5并行口20dh0034h0037h主8259 irq6
39、軟盤(pán)0eh0038h003bh主8259 irq7并行口10fh003ch003fh從8259 irq8實(shí)時(shí)鐘70h01c0h01c3h從8259 irq9保留71h01c4h01c7h從8259 irq10保留72h01c8h01cbh從8259 irq11保留73h01cch01cfh從8259 irq12保留74h01d0h01d3h從8259 irq13協(xié)處理器中斷75h01d4h01d7h從8259 irq14硬盤(pán)控制器76h01d8h01dbh從8259 irq15保留77h01dch01dfh關(guān)中斷開(kāi)始替換intr中斷矢量打開(kāi)intr中斷屏蔽位開(kāi)中斷否是關(guān)中斷恢復(fù)intr中斷矢量
40、開(kāi)中斷返回到dos結(jié)束是否有按鍵按下?入口向pc內(nèi)8259發(fā)中斷結(jié)束命令中斷處理(顯示字符)中斷返回恢復(fù)intr中斷屏蔽字單次脈沖單元系統(tǒng)總線(xiàn)k k 1 +in t r intr_ivadd equ 01c8h ;intr對(duì)應(yīng)的中斷矢量地址 intr_ocw1 equ 0a1h ;intr對(duì)應(yīng)的ocw1地址 intr_ocw2 equ 0a0h ;intr對(duì)應(yīng)的ocw2地址 intr_im equ 0fbh ; 中斷屏蔽字11111011bstack1 segment stack dw 256 dup(?)stack1 endsdata segment mes db press any key
41、 to exit!,0ah,0dh,0ah,0dh,$cs_bak dw ? ;保存intr原中斷處理程序入口段地址的變量ip_bak dw ? ;保存intr原中斷處理程序入口偏移地址的變量im_bak db ? ;保存intr原中斷屏蔽字的變量data endscode segment assume cs:code,ds:datastart: mov ax, data mov ds, ax mov dx, offset mes ;顯示退出提示 mov ah, 09h int 21h cli ;關(guān)中斷 mov ax, 0000h ;替換intr的中斷矢量 mov es, ax mov di,
42、 intr_ivadd ;intr對(duì)應(yīng)的中斷矢量地址01c8h mov ax, es:di mov ip_bak, ax ;保存intr原中斷處理程序入口偏移地址 mov ax, offset myisr mov es:di, ax ;設(shè)置當(dāng)前中斷處理程序入口偏移地址 add di, 2 mov ax, es:di mov cs_bak, ax ;保存intr原中斷處理程序入口段地址 mov ax, seg myisr mov es:di, ax ;設(shè)置當(dāng)前中斷處理程序入口段地址 mov dx, intr_ocw1 ;設(shè)置中斷屏蔽寄存器,打開(kāi)intr的屏蔽位 in al, dx mov im_
43、bak, al ;保存intr原中斷屏蔽字 and al, intr_im out dx, al sti ;開(kāi)中斷wait1: mov ah, 1 ;判斷是否有按鍵按下 int 16h jz wait1 ;無(wú)按鍵則跳回繼續(xù)等待,有則退出quit: cli ;關(guān)中斷 mov ax, 0000h ;恢復(fù)intr原中斷矢量 mov es, ax mov di, intr_ivadd ;intr對(duì)應(yīng)的中斷矢量地址 mov ax, ip_bak ;恢復(fù)intr原中斷處理程序入口偏移地址 mov es:di, ax add di, 2 mov ax, cs_bak ;恢復(fù)intr原中斷處理程序入口段地址
44、mov es:di, ax mov dx, intr_ocw1 ;恢復(fù)intr原中斷屏蔽寄存器的屏蔽字 mov al, im_bak out dx, al sti ;開(kāi)中斷 mov ax, 4c00h ;返回到dos int 21hmyisr proc near ;中斷處理程序myisr push ax mov al, 39h mov ah, 0eh int 10h mov al, 20h int 10hover: mov dx, intr_ocw2 ;向pc機(jī)內(nèi)部8259發(fā)送中斷結(jié)束命令 mov al, 20h out dx, al mov al, 20h out 20h, al pop a
45、x iret myisr endpcode ends end start實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容 (1) 定時(shí)應(yīng)用實(shí)驗(yàn)。編寫(xiě)程序,應(yīng)用8254的定時(shí)功能,實(shí)現(xiàn)一個(gè)1hz的輸出。 (2) 計(jì)數(shù)應(yīng)用實(shí)驗(yàn)*。編寫(xiě)程序,應(yīng)用8254的計(jì)數(shù)功能,用開(kāi)關(guān)模擬計(jì)數(shù),使每當(dāng)按動(dòng)kk1-5次后,產(chǎn)生一次計(jì)數(shù)中斷,并在屏幕上顯示一個(gè)字符5。 8254的工作方式(1) 方式0:計(jì)數(shù)到0結(jié)束,輸出正躍變信號(hào)方式。 (2) 方式1:硬件可重觸發(fā)單穩(wěn)方式。 (3) 方式2:頻率發(fā)生器方式。 (4) 方式3:方波發(fā)生器方式。 (5) 方式4:軟件觸發(fā)選通方式。 (6) 方式5:硬件觸發(fā)選通方式。 計(jì)數(shù)器0計(jì)數(shù)器1計(jì)數(shù)器2數(shù)據(jù)總線(xiàn)緩
46、沖器r/w邏輯電路控制寄存器d7:0內(nèi)部總線(xiàn)rdwra0a1csclk0gate0out0clk1gate1out1clk2gate2out2123456789101112d7d6d5d4d3d2d1d0clk0out0gate0gnd242322212019181716151413vccwrrdcsa1a0clk2out2gate2clk1gate1out18254d7d6d5d4d3d2d1d0計(jì)數(shù)器選擇讀/寫(xiě)格式選擇工作方式選擇計(jì)數(shù)碼制選擇00計(jì)數(shù)器001計(jì)數(shù)器110計(jì)數(shù)器2 11讀出控制 字標(biāo)志00鎖存計(jì)數(shù)值01讀/寫(xiě)低8位10讀/寫(xiě)高8位11先讀/寫(xiě)低8位 再讀/寫(xiě)高8位000方式0
47、001方式1010方式2011方式3100方式4101方式50二進(jìn)制數(shù)1十進(jìn)制數(shù) 編寫(xiě)程序,將8254的計(jì)數(shù)器2設(shè)置為方式3,用1.8432mhz作為clk2時(shí)鐘。計(jì)數(shù)初值為18432,相當(dāng)對(duì)clk2進(jìn)行18432分頻,在out2輸出頻率為100hz的時(shí)鐘。再將out2連接到計(jì)數(shù)器0的clk0,設(shè)置計(jì)數(shù)器0也工作在方式3,計(jì)數(shù)初值為100,相當(dāng)是進(jìn)行100分頻。則在out0得到1hz的輸出。 計(jì)數(shù)初值公式為n=fclkifoutifclki是輸入時(shí)鐘脈沖的頻率,fouti是輸出波形的頻率。 d7d6d5d4d3d2d1d0系 統(tǒng) 總 線(xiàn)xd7xd6xd5xd4xd3xd2xd1xd0xa3xa
48、2xiowxiorioy0a1a0wrrdcs8254單元clk2out2clk0out0gate2+5v1.8432mhz時(shí)鐘源波形輸出示波器測(cè)量 ioy0 equ 3000h ;片選ioy0對(duì)應(yīng)的端口始地址my8254_count0 equ ioy0+00h*4 ;8254計(jì)數(shù)器0端口地址my8254_count1 equ ioy0+01h*4 ;8254計(jì)數(shù)器1端口地址my8254_count2 equ ioy0+02h*4 ;8254計(jì)數(shù)器2端口地址my8254_mode equ ioy0+03h*4 ;8254控制寄存器端口地址stack1 segment stack dw 256
49、dup(?)stack1 endscode segment assume cs:codestart: mov dx, my8254_mode ;初始化8254工作方式 mov al, 0b6h ;10110110 計(jì)數(shù)器2,方式3 out dx,al mov dx, my8254_count2 ;裝入計(jì)數(shù)初值 mov al, 00h ;18432分頻 out dx, al mov al, 48h out dx, al mov dx, my8254_mode ;初始化8254工作方式 mov al, 36h ;00110110 計(jì)數(shù)器0,方式3 out dx, al mov dx, my8254
50、_count0 ;裝入計(jì)數(shù)初值 mov al, 64h ;100分頻 out dx, al mov al, 00h out dx, alquit: mov ax, 4c00h ;結(jié)束程序退出 int 21h code ends end start 編寫(xiě)程序,將8254的計(jì)數(shù)器0設(shè)置為方式0,計(jì)數(shù)值為十進(jìn)制5,用微動(dòng)開(kāi)關(guān)kk1+作為clk0時(shí)鐘,out0連接intr,每當(dāng)kk1-按動(dòng)5次后產(chǎn)生中斷請(qǐng)求,在屏幕上顯示字符“5”。 intr_ivadd equ 01c8h ;intr對(duì)應(yīng)的中斷矢量地址intr_ocw1 equ 0a1h ;intr對(duì)應(yīng)pc機(jī)內(nèi)部8259的ocw1地址intr_ocw
51、2 equ 0a0h ;intr對(duì)應(yīng)pc機(jī)內(nèi)部8259的ocw2地址intr_im equ 0fbh ;intr對(duì)應(yīng)的中斷屏蔽字ioy0 equ 3000h ;片選ioy0對(duì)應(yīng)的端口始地址my8254_ count0 equ ioy0+00h*4 ;8254計(jì)數(shù)器0端口地址my8254_count1 equ ioy0+01h*4 ;8254計(jì)數(shù)器1端口地址my8254_count2 equ ioy0+02h*4 ;8254計(jì)數(shù)器2端口地址my8254_mode equ ioy0+03h*4 ;8254控制寄存器端口地址 stack1 segment stack dw 256 dup(?)sta
52、ck1 endsdata segment cs_bak dw ? ;保存intr原中斷處理程序入口段地址的變量ip_bak dw ? ;保存intr原中斷處理程序入口偏移地址的變量im_bak db ? ;保存intr原中斷屏蔽字的變量str1 db count: $ ;顯示的字符串data endscode segment assume cs:code,ds:datastart: mov ax, data mov ds, ax cli mov ax, 0000h ;替換intr的中斷矢量 mov es,ax mov di, intr_ivadd mov ax, es:di mov ip_ba
53、k, ax ;保存intr原中斷處理程序入口偏移地址 mov ax, offset myisr mov es:di, ax ;設(shè)置當(dāng)前中斷處理程序入口偏移地址 add di, 2 mov ax, es:di mov cs_bak, ax ;保存intr原中斷處理程序入口段地址 mov ax, seg myisr mov es:di, ax ;設(shè)置當(dāng)前中斷處理程序入口段地址 mov dx, intr_ocw1 ;設(shè)置中斷屏蔽寄存器,打開(kāi)intr的屏蔽位 in al, dx mov im_bak, al ;保存intr原中斷屏蔽字 and al, intr_im out dx, all sti m
54、ov dx, offset str1 ;顯示字符串 mov ah, 9 int 21h mov dx, my8254_mode ;初始化8254工作方式 mov al, 10h ;00010000 計(jì)數(shù)器0,方式0 out dx, al mov dx, my8254_count0 ;裝入計(jì)數(shù)初值 mov al, 4 out dx, alwait1: mov ah, 1 ;判斷是否有按鍵按下 int 16h jz wait1 ;無(wú)按鍵則跳回繼續(xù)等待,有則退出quit: cli mov ax, 0000h ;恢復(fù)intr原中斷矢量 mov es, ax mov di, intr_ivadd mov
55、 ax, ip_bak ;恢復(fù)intr原中斷處理程序入口偏移地址 mov es:di, ax add di, 2 mov ax, cs_bak ;恢復(fù)intr原中斷處理程序入口段地址 mov es:di, ax mov dx, intr_ocw1 ;恢復(fù)intr原中斷屏蔽寄存器的屏蔽字 mov al, im_bak out dx, al sti mov ax, 4c00h ;返回到dos int 21hmyisr proc near ;中斷處理程序myisr push ax mov al, 35h mov ah, 0eh int 10h mov al, 20h int 10h mov dx,
56、my8254_count0 ;重裝計(jì)數(shù)初值 mov al, 4 out dx, alover: mov dx, intr_ocw2 ;向pc機(jī)內(nèi)部8259發(fā)送中斷結(jié)束命令 mov al, 20h out dx, al mov al, 20h out 20h, al pop ax iret myisr endp code ends end start(1) 掌握8255的工作方式及應(yīng)用編程。(2) 學(xué)習(xí)按鍵掃描的原理及電路接法。 (3) 掌握利用8255完成按鍵掃描及顯示。實(shí)驗(yàn)內(nèi)容實(shí)驗(yàn)內(nèi)容 連接8255與鍵盤(pán)掃描單元,編寫(xiě)程序完成按鍵掃描功能,并將讀到的按鍵值依次顯示在數(shù)碼管上。 方式0-基本輸
57、入/出方式方式1-選通輸入/出方式方式2-雙向選通工作方式 雙向數(shù)據(jù)總線(xiàn) 數(shù)據(jù)總線(xiàn)緩沖器d0-d7rdwra1a0resetcs讀/寫(xiě)控制邏輯a組控制部件8位內(nèi)總線(xiàn)b組控制部件a口(8位)c口(高4位)c口(低4位)b口(8位)i/oi/oi/oi/opa7-pa0pc7-pc4pc3-pc0pb7-pb0pa3pa2pa1pa0rdcsgnda1a0pc7pc6pc5pc4pc0pc1pc2pc3pb0pb1pb2pa4pa5pa6pa7wrresetd0d1d2d3d4d5d6d7vccpb7pb6pb5pb4pb31234567891011121314151617181920403938
58、37363534333231302928272625242322218255d7d6d5d4d3d2d1d01a組方式選擇00 方式001 方式110 方式2a口0 輸出1 輸入c口高4位0 輸出1 輸入b組方式選擇0 方式01 方式1b口0 輸出1 輸入c口低4位0 輸出1 輸入8255工作方式控制字格式工作方式控制字格式d7d6d5d4d3d2d1d00不 用c口的位選擇位0 000 位1 001位2 010 位3 011位4 100 位5 101位6 110 位7 111置位/復(fù)位0 復(fù)位1 置位8255c口按位置口按位置/復(fù)位控制字格式復(fù)位控制字格式 字符01234567段碼3fh06
59、h5bh4fh66h6dh7dh07h字符89abcdef段碼7fh6fh77h7ch39h5eh79h71hledled共陰極數(shù)碼管段碼表共陰極數(shù)碼管段碼表 ledled數(shù)碼管有共陰極與共陽(yáng)極兩種。數(shù)碼管有共陰極與共陽(yáng)極兩種。 共陰極數(shù)碼管共陰極數(shù)碼管的的8 8個(gè)發(fā)光二極管陰極接在個(gè)發(fā)光二極管陰極接在一起一起。其共陰極端接地平,其余八個(gè)引腳加高其共陰極端接地平,其余八個(gè)引腳加高電平才能點(diǎn)亮發(fā)光二極管;電平才能點(diǎn)亮發(fā)光二極管; 共陽(yáng)極數(shù)碼管共陽(yáng)極數(shù)碼管的的8 8個(gè)發(fā)光二極管陽(yáng)極接在個(gè)發(fā)光二極管陽(yáng)極接在一起。其共陽(yáng)極端接高電平,其余八個(gè)引腳加一起。其共陽(yáng)極端接高電平,其余八個(gè)引腳加低電平才能點(diǎn)亮
60、發(fā)光二極管。低電平才能點(diǎn)亮發(fā)光二極管。led數(shù)碼管靜態(tài)顯示和動(dòng)態(tài)顯示方式 靜態(tài)顯示方式靜態(tài)顯示方式: 共陰極或共陽(yáng)極點(diǎn)連接在起接地(低電平)或共陰極或共陽(yáng)極點(diǎn)連接在起接地(低電平)或+5v(高(高電平)電平); 每位的段碼線(xiàn)每位的段碼線(xiàn)(a-dp) 與一外與一外8位的并行口相連。位的并行口相連。 每一位可獨(dú)立顯示每一位可獨(dú)立顯示,只要在該位的段碼線(xiàn)上保持段碼電,只要在該位的段碼線(xiàn)上保持段碼電平,該位就能保持相應(yīng)的顯示字符。平,該位就能保持相應(yīng)的顯示字符。 動(dòng)態(tài)顯示方式動(dòng)態(tài)顯示方式 將所有位的段碼線(xiàn)并聯(lián)在一起,由一個(gè)將所有位的段碼線(xiàn)并聯(lián)在一起,由一個(gè)8位并行口控制顯位并行口控制顯示字符;各位共陰
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 滬科版 信息技術(shù) 必修 4.3.1數(shù)據(jù)庫(kù)的組成教學(xué)設(shè)計(jì)
- 第二單元第四節(jié)4.《用“圖片”文件制作插圖》教學(xué)設(shè)計(jì) 2023-2024學(xué)年粵教版(2007)初中信息技術(shù)七年級(jí)上冊(cè)
- 2025至2030年中國(guó)椎體調(diào)節(jié)腳數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 山東省濱州市2023-2024學(xué)年高三上學(xué)期1月期末考試地理試題(解析版)
- 2024營(yíng)業(yè)員年度個(gè)人工作總結(jié)范文(35篇)
- 2025年貴州城市職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)1套
- 5-6第九套廣播體操 教學(xué)設(shè)計(jì) -九年級(jí)體育與健康
- Starter Unit 3 Section B project design your own farm 教學(xué)設(shè)計(jì)- 2024-2025學(xué)年人教版七年級(jí)英語(yǔ)上冊(cè)
- 太陽(yáng)能熱電聯(lián)產(chǎn)社會(huì)效益分析
- 第三單元微項(xiàng)目三《計(jì)算生成新的數(shù)據(jù)》教學(xué)設(shè)計(jì)-2024-2025學(xué)年泰山版(2019)初中信息技術(shù)第3冊(cè)冊(cè)
- 腦卒中患者護(hù)理查房
- 智能機(jī)器人與傳感器PPT完整全套教學(xué)課件
- 高效空調(diào)制冷機(jī)房智能控制系統(tǒng)技術(shù)規(guī)程
- 《動(dòng)物王國(guó)開(kāi)大會(huì)》說(shuō)課PPT
- GB/T 42595-2023承壓設(shè)備修理基本要求
- 春玉米套種秋黃瓜技術(shù)
- 四年級(jí)下冊(cè)勞動(dòng)技術(shù)教案
- 城市軌道交通服務(wù)禮儀和意識(shí)基本知識(shí)
- 科幻小說(shuō)賞讀智慧樹(shù)知到答案章節(jié)測(cè)試2023年杭州師范大學(xué)
- 公司設(shè)備日點(diǎn)檢表模板
- (新版)金屬冶煉(鉛、鋅冶煉)主要負(fù)責(zé)人考試題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論