微型計(jì)算機(jī)原理與接口技術(shù)第9章8255_第1頁
微型計(jì)算機(jī)原理與接口技術(shù)第9章8255_第2頁
微型計(jì)算機(jī)原理與接口技術(shù)第9章8255_第3頁
微型計(jì)算機(jī)原理與接口技術(shù)第9章8255_第4頁
微型計(jì)算機(jī)原理與接口技術(shù)第9章8255_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第九章可編程并行接口8255A8255A的簡介8255A的外部引腳8255A的內(nèi)部邏輯結(jié)構(gòu)8255A的工作設(shè)定8255A的應(yīng)用18255A的簡介8255A是一種通用的可編程并行I/O接口芯片(PPI),通過對它進(jìn)行編程,可以有不同的工作方式。通常不需要附加外部邏輯電路就可以直接為CPU與外設(shè)之間提供數(shù)據(jù)通道。28255A的外部引腳引腳名稱信號名稱D7~D0雙向數(shù)據(jù)總線PA7~PA0PB7~PB0PC7~PC0A口雙向數(shù)據(jù)線B口雙向數(shù)據(jù)線C口雙向數(shù)據(jù)線RESET復(fù)位信號,使所有內(nèi)部寄存器清零CSA1A0片選信號,A1

和A0不同組合,可選不同端口RDWR讀、寫信號線38255A內(nèi)部邏輯結(jié)構(gòu)3個(gè)I/O端口A,B,C:每個(gè)都是8位并行端口,都可由程序選擇作為輸入或輸出。A組和B組控制電路:A組包括A口和C口的上半部(PC7~PC4);B組包括B口和C口的下半部(PC3~PC0)。數(shù)據(jù)總線緩沖器:雙向三態(tài)8位緩沖器,能直接與CPU數(shù)據(jù)總線對接。讀/寫控制電路:與地址總線中的A1,A0以及有關(guān)的控制信號RD,WR,RESET相連,用來管理內(nèi)部和外部數(shù)據(jù),狀態(tài)或控制字的傳送。48255A的端口尋址引腳尋址的端口CSA1A0000010011×0101×端口A端口B端口C控制字寄存器本芯片沒有被選中58255A工作設(shè)計(jì)8255A的控制字方式控制字對C口按位置位/復(fù)位控制字8255A的方式選擇6方式控制字D7D6D5D4D3D2D1D0方式標(biāo)志位D7=100A口方式001A口方式11×A口方式20A口輸出1A口輸入0C口高四位輸出1C口高四位輸入0B口方式01B口方式10B口輸出1B口輸入0C口低四位輸出1C口低四位輸入7舉例設(shè)8255A的控制字寄存器的端口地址為63H,若A口工作于方式1,B口工作于方式0,A口、B口和C口的高四位作輸入,C口的低四位作輸出,寫出方式控制字,并寫入8255A的控制字寄存器中。8對C口按位置位/復(fù)位控制字D7D6D5D4D3D2D1D0該類型控制字標(biāo)志位D7=0任意值000選中PC0001選中PC1010選中PC2011選中PC3100選中PC4101選中PC5110選中PC6111選中PC70復(fù)位1置位9舉例設(shè)8255A的口地址為60H~63H,PC5平時(shí)為低電平,要求從PC5引腳輸出一個(gè)正脈沖。試編寫程序段。108255A的方式選擇方式0——基本輸入/輸出方式方式1——選通輸入/輸出方式,A口和B口作為數(shù)據(jù)的輸入/輸出端口,C口的高5位作為A口的聯(lián)絡(luò)信號,C口低3位作為B口聯(lián)絡(luò)信號。方式2——雙向選通傳送方式,只有通道A工作在這種方式,C口的高5位作為A口的聯(lián)絡(luò)信號。118255A方式08255A的每個(gè)口都作為基本的輸入和輸出口A口、B口、C口的高4位、C口的低4位都可獨(dú)立設(shè)定為輸入口和輸出口;這樣8255A在方式0時(shí),各個(gè)端口的輸入、輸出可以有16種不同的組合128255A方式1通道A:包括一個(gè)8位數(shù)據(jù)端口(端口A),和一個(gè)5位的控制端口(端口C的高5位PC7~PC3)通道B:包括一個(gè)8位數(shù)據(jù)端口(端口B),和一個(gè)3位的控制端口(端口C的低3位PC2~PC0)138255A方式1輸入C口各引腳定義通道C口各引腳定義APC7,6用作輸入/輸出信號,由方式控制字D3位設(shè)定PC5=IBF,端口A的輸入緩沖器滿信號PC4=STB,端口A的選通輸入控制信號PC3=INTR,通道A發(fā)出的中斷請求信號BPC2=STB,端口B的選通輸入控制信號PC1=IBF,端口B的輸入緩沖器滿信號PC0=INTR,通道B發(fā)出的中斷請求信號148255A方式1輸入中斷的允許與禁止通道號允許中斷禁止中斷APC4=1PC4=0BPC2=1PC2=0158255A方式1輸出C口各引腳定義通道C口各引腳定義APC7=OBF,端口A輸出緩沖器滿信號PC6=ACK,端口A的響應(yīng)輸入信號PC5,4用作輸入/輸出信號,由方式控制字D3位設(shè)定PC3=INTR,通道A發(fā)出的中斷請求信號BPC2=ACK,端口B的響應(yīng)輸入信號PC1=OBF,端口B輸出緩沖器滿信號PC0=INTR,通道B發(fā)出的中斷請求信號168255A方式1輸出中斷的允許和禁止通道號允許中斷禁止中斷APC6=1PC6=0BPC2=1PC2=0178255A方式2該方式只能用于端口A,A口既能發(fā)送數(shù)據(jù),又能接收數(shù)據(jù)C口的高5位PC7~PC3,用作A口的控制信息和狀態(tài)信息端口B可以工作在方式0或方式1,既可以作為輸入,也可以作為輸出188255A方式2C口各引腳的定義PC7=OBF,輸出,輸出緩沖器滿信號PC6=ACK,輸入,由外設(shè)發(fā)來的對OBF的響應(yīng)信號PC5=IBF,輸出,輸入緩沖器滿信號PC4=STB,外設(shè)發(fā)來的選通信號PC3=INTR,輸出,雙向工作時(shí),向CPU發(fā)出中斷請求信號PC2~PC0:若B口工作在方式0,可作為基本輸入/輸出口;若B口工作在方式1,可作為控制信號和狀態(tài)信號198255A方式2中斷的允許和禁止通道號輸入/輸出允許中斷禁止中斷A輸入輸出PC4=1PC6=1PC4=0PC6=0208255A的應(yīng)用用LED顯示開關(guān)狀態(tài)鍵盤接口8255A在PC/XT機(jī)中的應(yīng)用PC/XT機(jī)中的揚(yáng)聲器發(fā)聲程序設(shè)計(jì)接口七段數(shù)碼管數(shù)字顯示211、用LED顯示開關(guān)狀態(tài)邏輯電路圖8255A端口地址的確定8255A工作方式設(shè)定程序代碼22邏輯電路圖寫出8255A各端口的地址?238255A工作方式設(shè)定端口端口地址工作方式輸入/輸出A0F0H0輸入B0F2H0輸出24程序代碼

MOVDX,0F6H MOVAL,10010000B OUTDX,ALNEXT: MOVDX,0F0H INAL,DX ;從A口讀入開關(guān)狀態(tài)

MOVDX,0F2H OUTDX,AL ;B口LED顯示開關(guān)狀態(tài)

JMPNEXT252、鍵盤接口按鍵開關(guān)的比較鍵盤接口電路8255A工作方式設(shè)定鍵盤掃描原理程序代碼26按鍵開關(guān)的比較開關(guān)種類價(jià)格性能應(yīng)用場合機(jī)械式便宜易產(chǎn)生抖動(dòng),手感好計(jì)算機(jī)鍵盤薄膜式便宜密封性好家電、醫(yī)療儀器電容式較貴無抖動(dòng),需要附加電路測電容的變化車間電器中霍爾效應(yīng)式貴密封性好,壽命長,響應(yīng)快精密儀器27鍵盤接口電路4×4鍵盤矩陣通過A口向某一行輸出0,再通過B口低4位讀取列值,如果有0值,則該行有鍵按下288255A工作方式設(shè)定端口端口地址工作方式輸入/輸出A0FF9H0輸出B0FFBH0輸入29鍵盤掃描原理所有鍵都釋放了?有鍵按下?獲取鍵盤掃描碼否是是消除抖動(dòng)初始化否有鍵按下?是否結(jié)束30獲取鍵盤掃描碼過程該行有鍵按下?是否掃描第0行該行有鍵按下?是否掃描第1行該行有鍵按下?是否掃描第2行該行有鍵按下?是否掃描第3行出錯(cuò)處理獲取鍵盤掃描碼31鍵盤掃描碼的設(shè)置PB7PB6PB5PB4PB3PB2PB1PB0指示按鍵所在行有且僅有一位為0,哪一位為0表示哪一行有鍵按下指示按鍵所在列有且僅有一位為0,哪一位為0表示哪一列有鍵按下第0行第3行第0列第3列……如果按鍵位于第1行第2列,寫出該鍵的掃描碼。32鍵掃描碼和鍵值的對應(yīng)掃描碼77H7BH7DH7EH0B7H0BBH0BDH0BEH鍵值01234567掃描碼0D7H0DBH0DDH0DEH0E7H0EBH0EDH0EEH鍵值89ABCDEF某鍵的鍵值一般人為設(shè)定,本例中鍵掃描碼和鍵值的對應(yīng)關(guān)系如下表所示:33程序代碼在數(shù)據(jù)段中設(shè)置鍵盤掃描碼表8255初始化檢查按鍵獲取鍵盤掃描碼34在數(shù)據(jù)段中設(shè)置鍵盤掃描碼表DATASEGMENTTABLEDB77H,7BH,7DH,7EHDB0B7H,0BBH,0BDH,0BEHDB0D7H,0DBH,0DDH,0DEHDB0E7H,0EBH,0EDH,0EEHDATAENDS每個(gè)掃描碼所在單元的偏移量即為該掃描碼對應(yīng)的鍵值。358255初始化代碼MOVDX,0FFFHMOVAL,10000010BOUTDX,AL36檢查按鍵的工作過程首先檢查所有鍵是否都處于松開狀態(tài):通過A口向所有行送0,然后讀取列值,即讀取B口的低四位,如果全部為1,說明所有的鍵都松開了;如果至少有一位為0的話,說明至少有一個(gè)鍵仍然處于按下的狀態(tài),則等待。37檢查按鍵的代碼 MOVDX,0FF9H MOVAL,0 OUTDX,AL MOVDX,0FFBHWAIT1: INAL,DX ANDAL,0FH CMPAL,0FH JNEWAIT1WAIT2: INAL,DX ANDAL,0FH CMPAL,0FH JEWAIT2通過A口向所有行輸出0從B口讀取列值檢查所有按鍵是否都松開了,如沒有,則等待如果都松開了則等待按鍵38延時(shí)去抖動(dòng)由于機(jī)械開關(guān)的按鈕從開始到按下接觸穩(wěn)定,需要經(jīng)過一段時(shí)間的抖動(dòng)過程,這個(gè)過程一般持續(xù)20ms。用軟件的方法解決抖動(dòng)問題:在程序安排一定的延時(shí)MOVCX,COUNTLOOP$其中的COUNT的值與具體的CPU和主頻有關(guān)39COUNT值的計(jì)算需要延時(shí)的時(shí)間(秒)CPU的時(shí)鐘頻率(Hz)LOOP指令執(zhí)行時(shí)所需的時(shí)鐘周期數(shù)8086CPU的時(shí)鐘頻率為5MHz,LOOP指令執(zhí)行需要17個(gè)時(shí)鐘周期數(shù),如果要延時(shí)20毫秒,則COUNT值為5866,即16EAH40鍵盤掃描碼的獲取如果按鍵有效的話,這時(shí)可以讀取鍵盤的掃描碼。實(shí)質(zhì)就是判斷被按下的鍵的行號和列號采用逐行掃描的辦法:先掃描第0行,即通過A口輸出一個(gè)第0位為0其余位為1的數(shù),在從B口讀取列值,即B口的低四位,如果這四位均為1的話,說明第0行沒有鍵按下,繼續(xù)掃描第1行;如果這四位有且僅有一位為0的話,說明被按下的鍵就在第0行,然后從B口讀取被按下的鍵的掃描碼。41鍵盤掃描碼的獲取程序 MOVAL,0FEHNR: PUSHAX MOVDX,0FF9H OUTDX,AL MOVDX,0FFBH INAL,DX ANDAL,0FH CMPAL,0FH JNEENCODE POPAX ROLAL,1 JMPNRENCODE:MOVBX,000FH INAL,DXNEXT: CMPAL,TABLE[BX] JEDONE DECBX JNSNEXT MOVAH,1 JMPEXITDONE: MOVAL,BL MOVAH,0EXIT: HLT 掃描第0行檢查是否有鍵按下如果有獲取鍵值如沒掃描下一行有效鍵值送AL423、8255A在PC/XT機(jī)中的應(yīng)用硬件連接8255A的工作方式軟件編程(大家自學(xué))43硬件連接448255A各端口的工作方式端口號端口地址工作方式輸入/輸出功能A60H0輸入1、機(jī)器剛上電自檢,輸出,輸出當(dāng)前檢測部件的標(biāo)志,以便查錯(cuò)2、進(jìn)入正常工作狀態(tài),輸入,讀取鍵盤的8為掃描碼B61H0輸出用來輸出若干控制信號C62H0輸入用來讀取系統(tǒng)內(nèi)部的狀態(tài)454、PC/XT機(jī)揚(yáng)聲器發(fā)聲程序設(shè)計(jì)PC/XT機(jī)中的揚(yáng)聲器接口電路揚(yáng)聲器發(fā)聲原理音樂簡譜音調(diào)和時(shí)長音樂程序設(shè)計(jì)46PC/XT機(jī)中的揚(yáng)聲器接口電路47揚(yáng)聲器發(fā)聲原理揚(yáng)聲器發(fā)聲主要決定于上圖中A和B的波形,由此有兩種方式:B點(diǎn)固定為高電平,A點(diǎn)為方波(見教材第271頁

例7-9)A點(diǎn)固定為高電平,B點(diǎn)為方波(如果B點(diǎn)的方波的頻率固定,則為純音;如果B點(diǎn)方波的頻率不斷變化,則能夠演奏美妙的音樂)本例采用第二種方法。48一首樂曲組成樂曲的每個(gè)音符的頻率值和持續(xù)時(shí)間(節(jié)拍)是樂曲程序發(fā)聲所需要的兩個(gè)數(shù)據(jù)。4950音符--頻率對照表音符12345671頻率131147165175196220246262音符234567i頻率294330349392440494523.......51音符節(jié)拍--持續(xù)時(shí)間的對應(yīng)在2/4中,四分音符為一節(jié),每一小節(jié)二拍,全音符持續(xù)2拍,二分音符持續(xù)1拍,四分音符持續(xù)半拍,八分音符持續(xù)四分之一拍。如果給全音符分配1s(100×10ms)的時(shí)間,則二分音符的持續(xù)時(shí)間為0.5s(50×10ms),四分音符持續(xù)時(shí)間0.25s(25×10ms),八分音符持續(xù)時(shí)間0.125s(12.5×10ms)。52樂曲轉(zhuǎn)化為頻率表和持續(xù)時(shí)間表Freqdw262,294,330,294,330,392,330,294,262,294,440

dw262,294,330,294,330,392,330,294,262,294 Durationdw10dup(50),100

dw8dup(50),2dup(100)注:Duration表中的數(shù)值為10ms的倍數(shù)。53頻率表中各種頻率方波的產(chǎn)生通過8253通道2產(chǎn)生:工作方式設(shè)為3;計(jì)數(shù)初值N=fclk/f

(f即為頻率表中某個(gè)頻率值,fclk即為CLK2端時(shí)鐘頻率1.19318MHz)8253初始化代碼548253初始化代碼MOVAL,10110110BOUT43H,ALMOVDX,0012HMOVAX,34DCHDIVDI;DI為頻率表中某頻率值OUT42H,ALMOVAL,AHOUT42H,ALDX:AX為8086CPU的主頻AX為通道2的計(jì)數(shù)初值55持續(xù)時(shí)間表中的10ms延時(shí)的產(chǎn)生通過硬件產(chǎn)生固定時(shí)間的延時(shí),與具體的CPU和主頻無關(guān)。硬件定時(shí)的方法:通過監(jiān)控8255B口(61H)的PB4,使PB4每15.08us觸發(fā)一次,以產(chǎn)生一個(gè)固定不變的時(shí)間基準(zhǔn)。5610ms延時(shí)代碼waitfprocnear pushaxwaitf1: inal,61h andal,10h ;PB4

cmpal,ah jewaitf1

movah,al loopwaitf1 popax retwaitf

endpMOVCX,633CALLWAITFWAITF子程序產(chǎn)生15.08us的延時(shí)633×15.08=10ms57完整代碼在數(shù)據(jù)段建立樂曲的頻率和持續(xù)時(shí)間表8253通道2工作方式初始化在頻率表取出某頻率值,轉(zhuǎn)換為8253初始化時(shí)寫入的計(jì)數(shù)初值產(chǎn)生某一頻率的聲音并持續(xù)相應(yīng)的時(shí)間,即演奏當(dāng)前的音符演奏下一個(gè)音符,直到樂曲演奏完畢585、七段數(shù)碼管數(shù)字顯示設(shè)8255A的口地址為200H~203H,A口接4個(gè)開關(guān)K3~K0,B口接一個(gè)七段數(shù)碼管,用來顯示4個(gè)開關(guān)所撥通的16

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論