第8章微機(jī)原理與接口技術(shù)ppt課件_第1頁
第8章微機(jī)原理與接口技術(shù)ppt課件_第2頁
第8章微機(jī)原理與接口技術(shù)ppt課件_第3頁
第8章微機(jī)原理與接口技術(shù)ppt課件_第4頁
第8章微機(jī)原理與接口技術(shù)ppt課件_第5頁
已閱讀5頁,還剩118頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1微機(jī)原理、匯編與接口技術(shù)28.28.28.38.3可編程并行接口可編程并行接口82558255可編程計(jì)數(shù)器可編程計(jì)數(shù)器/ /定時(shí)器定時(shí)器82538253串行通信與異步通信控制器串行通信與異步通信控制器82508250的應(yīng)用的應(yīng)用8.18.13并行通信是以多根數(shù)據(jù)線在CPU與外設(shè)之間傳輸數(shù)據(jù),傳輸速度快,計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù)總線就是采用的并行方式。適合于短距離數(shù)據(jù)傳輸幾m或幾十m和傳輸速度要求高的場合 8.1 8.1 可編程并行接口可編程并行接口8255A8255A48.1 8.1 可編程并行接口可編程并行接口82558255 8255 8255是為是為80808080,80858085和和80

2、888088微型機(jī)系微型機(jī)系統(tǒng)設(shè)計(jì)的并行統(tǒng)設(shè)計(jì)的并行I/OI/O接口芯片。接口芯片。582558255的內(nèi)部組成如下圖所示的內(nèi)部組成如下圖所示8.1.1 82558.1.1 8255的組成與接口信號的組成與接口信號6 端口A(Port A)、端口B(Port B)和端口C(Port C)都是8位的端口,都可以選擇作為輸入或輸出??梢詫⒍丝贑的高4位和低4位分開使用,分別作為輸入和輸出。端口A和端口B作為選通輸入或輸出的數(shù)據(jù)端口時(shí),端口C的指定位與端口A和端口B配合使用,用作控制信號或狀態(tài)信號。1. 1. 端口端口A A、端口、端口B B和端口和端口C C8.1.1 82558.1.1 8255

3、的組成與接口信號的組成與接口信號7l根據(jù)根據(jù)CPUCPU的方式命令字控制的方式命令字控制82558255的工作方式。的工作方式。l根據(jù)根據(jù)CPUCPU的命令對端口的命令對端口C C的每一位實(shí)現(xiàn)按位復(fù)位或置的每一位實(shí)現(xiàn)按位復(fù)位或置位。位。 lA A組控制電路控制端口組控制電路控制端口A A和端口和端口C C的上半部的上半部(PC7(PC7PC4)PC4)。lB B組控制電路控制端口組控制電路控制端口B B和端口和端口C C的下半部的下半部(PC3(PC3PC0)PC0)。2.A2.A組和組和B B組控制電路組控制電路8.1.1 82558.1.1 8255的組成與接口信號的組成與接口信號8l控制

4、把控制把CPUCPU的控制命令或輸出數(shù)據(jù)送至相應(yīng)的端口的控制命令或輸出數(shù)據(jù)送至相應(yīng)的端口, , l控制把外設(shè)的狀態(tài)信息或輸入數(shù)據(jù)通過相應(yīng)的端口控制把外設(shè)的狀態(tài)信息或輸入數(shù)據(jù)通過相應(yīng)的端口送至送至CPUCPU。4.4.讀讀/ /寫控制邏輯寫控制邏輯8.1.1 82558.1.1 8255的組成與接口信號的組成與接口信號9 (1)A1 (1)A1、A0 A0 端口選擇:用來選擇端口選擇:用來選擇A A、B B、C 3C 3個(gè)端個(gè)端口和控制字寄存器。通常,它們與口和控制字寄存器。通常,它們與PCPC微機(jī)的地址線微機(jī)的地址線A1A1和和A0A0相連。相連。 (2)CS (2)CS選片信號:低電平有效,

5、由它啟動(dòng)選片信號:低電平有效,由它啟動(dòng)CPUCPU與與82558255之間的通信。通常,它與之間的通信。通常,它與PCPC微機(jī)地址線的譯碼微機(jī)地址線的譯碼電路的輸出線相連,并由該譯碼電路的輸出線來確電路的輸出線相連,并由該譯碼電路的輸出線來確定定82558255的端口地址。的端口地址。4.4.讀讀/ /寫控制邏輯寫控制邏輯8.1.1 82558.1.1 8255的組成與接口信號的組成與接口信號10 A1,A0和CS,RD,WR及組合所實(shí)現(xiàn)的各種功能如下:8.1.1 82558.1.1 8255的組成與接口信號的組成與接口信號A1 A1 A0 A0 操操 作作 0 01 10 00 00 0寫端

6、口寫端口 0 01 10 00 01 1寫端口寫端口 0 01 10 01 10 0寫端口寫端口 0 01 10 01 11 1寫控制字寄存器寫控制字寄存器 0 00 01 10 00 0讀端口讀端口 0 00 01 10 01 1讀端口讀端口 0 00 01 11 10 0讀端口讀端口 0 00 01 11 11 1無操作無操作 11 8255有3種工作方式,由方式選擇控制字來選用: (1)方式0 (Mode 0)-基本輸入輸出。 (2)方式1 (Mode 1)-選通輸入輸出。 (3)方式2 (Mode 2)-雙向傳送。8.1.2 82558.1.2 8255的工作方式與控制字的工作方式與控

7、制字121.1.方式選擇控制字方式選擇控制字8.1.2 82558.1.2 8255的工作方式與控制字的工作方式與控制字132.2.按位置位按位置位/ /復(fù)位控制字復(fù)位控制字 8.1.2 82558.1.2 8255的工作方式與控制字的工作方式與控制字14 如:端口C的bit3PC3的置位控制字為00000111B(07H),復(fù)位控制字為00000110B(06H)。 注意: C端口的按位置位/復(fù)位控制字須跟在方式選擇控制字之后寫入控制字寄存器。即使僅使用該功能,也應(yīng)先選送一方式控制字。8.1.2 82558.1.2 8255的工作方式與控制字的工作方式與控制字15 例8.1 將8255 C端

8、口的8根I/O線接8只發(fā)光二極管的正極(八個(gè)負(fù)極均接地),用按位置位/復(fù)位控制字編寫使這8只發(fā)光二極管依次亮、滅的程序。設(shè)8255的端口地址為380H383H。 本程序要使用8255的2個(gè)控制字-方式選擇字和按位置位/復(fù)位字。這2個(gè)控制字都寫入8255的控制字寄存器,由它們的D7位為1或0來區(qū)別寫入的字是方式選擇字還是置位/復(fù)位字。8255的控制字寄存器的端口地址為383H。方式選擇字只寫入一次,其后寫入的都是置位/復(fù)位字。8.1.2 82558.1.2 8255的工作方式與控制字的工作方式與控制字1682558255與與PCPC微機(jī)的連接及微機(jī)的連接及8255 C8255 C端口與端口與8

9、8只發(fā)光二極管只發(fā)光二極管的連接如圖。的連接如圖。17程序框圖程序框圖18 MOV DX,383H ;383H為控制字寄存器的端口地址 MOV AL,80H ;方式選擇字 OUT DX,AL MOV AL,1 ;PC0的置位控制字AGAIN: OUT DX,AL ;點(diǎn)亮一只發(fā)光二極管 LOOP $ ;延時(shí) LOOP $ AND AL,0FEH ;置位字改為復(fù)位字 OUT DX,AL ;熄滅點(diǎn)亮的發(fā)光二極管 ADD AL,3 ;PCiPCi+1,復(fù)位字改為下一位的置位字 AND AL,0FH ;保持D7為0 19 PUSH AX MOV AH,11 ;檢查鍵盤有無輸入 INT 21H ;無0送A

10、L,有-1送AL INC AL POP AX JNZ AGAIN20 這是一種基本的這是一種基本的I/OI/O方式。在這種工作方式下,方式。在這種工作方式下,3 3個(gè)端口都可由程序選定作輸入或輸出。它們的輸出個(gè)端口都可由程序選定作輸入或輸出。它們的輸出是鎖存的,輸入是不鎖存的。是鎖存的,輸入是不鎖存的。 在這種工作方式下,可以由在這種工作方式下,可以由CPUCPU用簡單的輸入或用簡單的輸入或輸出指令來進(jìn)行讀或?qū)憽R蚨?dāng)方式輸出指令來進(jìn)行讀或?qū)?。因而?dāng)方式0 0用于無條件傳用于無條件傳送方式的接口電路時(shí)是十分簡單的,這時(shí)不需要狀送方式的接口電路時(shí)是十分簡單的,這時(shí)不需要狀態(tài)端口,態(tài)端口,3 3個(gè)

11、端口都可作為數(shù)據(jù)端口。個(gè)端口都可作為數(shù)據(jù)端口。8.1.3 38.1.3 3種工作方式的功能種工作方式的功能1. 1. 方式方式0 021若將例若將例8.18.1改為改為C C端口方式端口方式0 0輸出,則控制程序?yàn)椋狠敵觯瑒t控制程序?yàn)椋?MOV DX,383H MOV DX,383H MOV AL,80H ;10000000 MOV AL,80H ;10000000 OUT DX,AL OUT DX,AL MOV DX,382H MOV DX,382H ;C C端口的端口地址送端口的端口地址送DXDX MOV AL,1 MOV AL,1 ;C C端口的輸出值端口的輸出值22AGAIN: OUT

12、 DX,ALAGAIN: OUT DX,AL LOOP $ LOOP $ ;延時(shí);延時(shí) LOOP $ LOOP $ PUSH AX PUSH AX MOV AH,11 MOV AH,11 ;1111號功能調(diào)用:檢查鍵盤有無輸入號功能調(diào)用:檢查鍵盤有無輸入 INT 21H INT 21H ;無;無0 0送送ALAL,有,有-1-1送送ALAL INC AL INC AL ;有鍵入,;有鍵入,AL=-1AL=-1,ALAL增增1 1,AL=0AL=0 POP AX POP AX JZ BACK JZ BACK ROL AL,1 ROL AL,1 ;改變;改變C C端口的輸出值端口的輸出值 JMP

13、AGAIN JMP AGAINBACK: retBACK: ret232.方式1 選通輸入輸出方式 方式1是一種選通輸入輸出方式也稱為應(yīng)答方式或異步方式)。A口和B口都可以工作在這種方式。在這種方式下,A口和B口作為兩個(gè)獨(dú)立的8位IO數(shù)據(jù)通道(可連接外設(shè))。C口要有6位(分成兩個(gè)3位)分別作為A口和B口的應(yīng)答聯(lián)絡(luò)線,其余2位仍可作為方式0的輸入輸出。方式1也是單向傳送。24l 方式方式1 1輸入的狀態(tài)控制信號及其時(shí)序關(guān)系如圖。輸入的狀態(tài)控制信號及其時(shí)序關(guān)系如圖。25 (1) STB(strobe) 選通信號,低電平有效。由外選通信號,低電平有效。由外設(shè)發(fā)出的輸入信號,把輸入裝置送來的數(shù)據(jù)設(shè)發(fā)出

14、的輸入信號,把輸入裝置送來的數(shù)據(jù)送入輸入緩沖器;送入輸入緩沖器; (2)IBF(input buffer full) 輸入緩沖器滿信號,輸入緩沖器滿信號,高電平有效。這是高電平有效。這是8255輸出給外設(shè)的聯(lián)絡(luò)信輸出給外設(shè)的聯(lián)絡(luò)信號。外設(shè)將數(shù)據(jù)送至輸入緩沖器后,該信號號。外設(shè)將數(shù)據(jù)送至輸入緩沖器后,該信號有效;有效;26 (3)INTR(interrupt request) 中斷請求信號,高電平有效。這是8255的一個(gè)輸出信號,可用作向CPU申請中斷的請求信號,以要求CPU服務(wù)。當(dāng)IBF為高和INTE(中斷允許)為高時(shí),由STB的上升沿(后沿)使其置為高電平。由RD信號的下降沿(CPU讀取數(shù)據(jù)

15、前)清除為低電平。 (4)INTE(interrupt enable) 中斷允許信號,端口A中斷允許INTEA可由用戶通過對PC4的按位置位/復(fù)位來控制。而INTEB 由PC2 的置位/復(fù)位控制。INTE置位允許中斷。INTE復(fù)位禁止中斷。27方式1輸入:A端口數(shù)據(jù)選通信號表示外設(shè)已經(jīng)準(zhǔn)備好數(shù)據(jù)輸入緩沖器滿信號表示A口已經(jīng)接收數(shù)據(jù)中斷請求信號請求CPU接收數(shù)據(jù)PC4PC5PC3PA7PA0INTEAIBFAINTRASTBA中斷允許觸發(fā)器RD 28l 方式方式1 1輸出的狀態(tài)控制信號及其時(shí)序關(guān)系如圖。輸出的狀態(tài)控制信號及其時(shí)序關(guān)系如圖。29 (1) OBF輸出緩沖器滿信號,低電平有效。這是82

16、55輸出給外設(shè)的一個(gè)聯(lián)絡(luò)信號。CPU把數(shù)據(jù)寫入指定端口的輸出鎖存器后,該信號有效,表示外設(shè)可以把數(shù)據(jù)取走。它由ACK的前沿(下降沿)即外設(shè)取走數(shù)據(jù)后,使其恢復(fù)為高。 (2)ACK(acknowledge) 低電平有效。這是外設(shè)發(fā)出的響應(yīng)信號,該信號的前沿取走數(shù)據(jù)并使OBF無效后沿使INTR有效。30(3)INTR (3)INTR 中斷請求信號,高電平有效。當(dāng)輸出裝置已中斷請求信號,高電平有效。當(dāng)輸出裝置已經(jīng)接受了經(jīng)接受了CPUCPU輸出的數(shù)據(jù)后,它用來向輸出的數(shù)據(jù)后,它用來向CPUCPU提出中斷提出中斷請求,要求請求,要求CPUCPU繼續(xù)輸出數(shù)據(jù)。繼續(xù)輸出數(shù)據(jù)。OBFOBF為為“1”(“1”(

17、高電平高電平) )和和INTEINTE為為“1”(“1”(高電平高電平) )時(shí),由時(shí),由ACKACK的后沿的后沿( (上升沿上升沿) ),使其置位,使其置位( (高電平高電平) ),WRWR信號的前沿信號的前沿( (下降沿下降沿) )使使其復(fù)位其復(fù)位( (低電平低電平) )。(4)INTEA(4)INTEA由由PC6PC6的置位的置位/ /復(fù)位控制。而復(fù)位控制。而INTEBINTEB由由PC2PC2置位置位/ /復(fù)位控制。復(fù)位控制。INTEINTE置位允許中斷。置位允許中斷。31方式1輸出:A端口外設(shè)響應(yīng)信號表示外設(shè)已經(jīng)接收到數(shù)據(jù)輸出緩沖器滿信號表示CPU已經(jīng)輸出了數(shù)據(jù)中斷請求信號請求CPU再

18、次輸出數(shù)據(jù)PC6PC7PC3PA7PA0INTEAOBFAINTRAACKA中斷允許觸發(fā)器WR 32 只限于A組使用 外設(shè)通過PA7-PA0,既能發(fā)送,又能接收數(shù)據(jù)(雙向總線I/O)。 它用雙向總線端口A和控制端口C中的5位進(jìn)行操作,此時(shí),端口B可用于方式0或方式1。端口C的其他3位作I/O用或作端口B控制狀態(tài)信號線用。. . 方式方式33方式方式2 2狀態(tài)控制信號:狀態(tài)控制信號:34INTE1INTE1是輸出的中斷允許信號,由是輸出的中斷允許信號,由PC6PC6的置位的置位/ /復(fù)位控復(fù)位控制制INTE2INTE2是輸入的中斷允許信號,由是輸入的中斷允許信號,由PC4PC4的置位的置位/ /

19、復(fù)位控復(fù)位控制制其他信號的作用及意義與方式其他信號的作用及意義與方式1 1相同。相同。358.28.28.38.3可編程并行接口可編程并行接口8255A8255A可編程計(jì)數(shù)器可編程計(jì)數(shù)器/ /定時(shí)器定時(shí)器82538253串行通信與異步通信控制器串行通信與異步通信控制器82508250的應(yīng)用的應(yīng)用8.18.1368.2可編程計(jì)數(shù)器可編程計(jì)數(shù)器/定時(shí)器定時(shí)器8253 8253是Intel公司為它的微處理器設(shè)計(jì)的一個(gè)外圍電路,它可以通過軟件方式設(shè)定不同的工作方式,產(chǎn)生各種形式的時(shí)間延遲信號,以滿足各類系統(tǒng)提出的不同時(shí)間要求。 8253具有3個(gè)獨(dú)立的、功能完全相同的16位計(jì)數(shù)器,每個(gè)計(jì)數(shù)器可以單獨(dú)作為

20、計(jì)數(shù)或定時(shí)使用,都可以按照二進(jìn)制1到65536)或BCD碼(1到10000)計(jì)數(shù)(減1計(jì)數(shù))。每一個(gè)計(jì)數(shù)器都有6種工作方式,這6種工作方式都可以由其控制字設(shè)定。 采取減1計(jì)數(shù):先賦初值,接收到一個(gè)脈沖,計(jì)數(shù)值減1。3782538253的內(nèi)部結(jié)構(gòu):的內(nèi)部結(jié)構(gòu):8. 8.1 .1 8253 8253的組成與接口信號的組成與接口信號CLKCLK時(shí)鐘輸入信號時(shí)鐘輸入信號在計(jì)數(shù)過程中,此引腳上每輸在計(jì)數(shù)過程中,此引腳上每輸入一個(gè)時(shí)鐘信號下降沿),入一個(gè)時(shí)鐘信號下降沿),計(jì)數(shù)執(zhí)行單元的計(jì)數(shù)值減計(jì)數(shù)執(zhí)行單元的計(jì)數(shù)值減1 1。GATEGATE門控輸入信號門控輸入信號控制計(jì)數(shù)器工作允許控制計(jì)數(shù)器工作允許/ /禁

21、止計(jì)數(shù),禁止計(jì)數(shù),啟動(dòng)啟動(dòng)/ /停止計(jì)數(shù)),可分成電平控停止計(jì)數(shù)),可分成電平控制和上升沿控制兩種類型。制和上升沿控制兩種類型。OUTOUT計(jì)數(shù)器輸出信號計(jì)數(shù)器輸出信號當(dāng)一次計(jì)數(shù)過程結(jié)束計(jì)數(shù)值減為當(dāng)一次計(jì)數(shù)過程結(jié)束計(jì)數(shù)值減為0 0),),OUTOUT引腳上將產(chǎn)生一個(gè)輸出信引腳上將產(chǎn)生一個(gè)輸出信號。號。用作系統(tǒng)總線和用作系統(tǒng)總線和82538253的接口,根據(jù)的接口,根據(jù)CPUCPU的輸入或輸出指令實(shí)現(xiàn)數(shù)據(jù)傳送。的輸入或輸出指令實(shí)現(xiàn)數(shù)據(jù)傳送。 (1) CPU (1) CPU向向82538253所寫的控制字所寫的控制字 (2) CPU (2) CPU向某計(jì)數(shù)器所寫的計(jì)數(shù)初值向某計(jì)數(shù)器所寫的計(jì)數(shù)初值

22、(3) CPU (3) CPU讀取某個(gè)計(jì)數(shù)器的現(xiàn)行值時(shí)讀取某個(gè)計(jì)數(shù)器的現(xiàn)行值時(shí)控制字寄存器寄存數(shù)據(jù)緩沖器傳送來的控制字寄存器寄存數(shù)據(jù)緩沖器傳送來的控制字。控制字。控制字寄存器有控制字寄存器有3 3個(gè),都是個(gè),都是8 8位的寄存器,位的寄存器,分別對應(yīng)于分別對應(yīng)于3 3個(gè)計(jì)數(shù)器。個(gè)計(jì)數(shù)器。最高最高2 2位確定送入哪個(gè)計(jì)數(shù)器的控制字位確定送入哪個(gè)計(jì)數(shù)器的控制字寄存器寄存。寄存器寄存。38計(jì)數(shù)器計(jì)數(shù)器0 0、計(jì)數(shù)器、計(jì)數(shù)器1 1和計(jì)數(shù)器和計(jì)數(shù)器2 2是是3 3個(gè)獨(dú)立的計(jì)數(shù)器,它個(gè)獨(dú)立的計(jì)數(shù)器,它們的內(nèi)部結(jié)構(gòu)相同。們的內(nèi)部結(jié)構(gòu)相同。4.4.計(jì)數(shù)器計(jì)數(shù)器0 0、計(jì)數(shù)器、計(jì)數(shù)器1 1和計(jì)數(shù)器和計(jì)數(shù)器2 2

23、8. 8.1 .1 8253 8253的組成與接口信號的組成與接口信號 計(jì)數(shù)初值存于計(jì)數(shù)初值寄存器。計(jì)數(shù)初值存于計(jì)數(shù)初值寄存器。 減減1計(jì)數(shù)器在計(jì)數(shù)器在CLK脈沖脈沖(GATE允許允許)作用下進(jìn)行遞減計(jì)數(shù),直作用下進(jìn)行遞減計(jì)數(shù),直至計(jì)數(shù)值為至計(jì)數(shù)值為0,輸出,輸出OUT信號信號 輸出鎖存器通常跟隨計(jì)數(shù)執(zhí)行單元變化,但當(dāng)寫入鎖存命令輸出鎖存器通常跟隨計(jì)數(shù)執(zhí)行單元變化,但當(dāng)寫入鎖存命令時(shí),計(jì)數(shù)輸出鎖存器鎖定當(dāng)前的計(jì)數(shù)值。時(shí),計(jì)數(shù)輸出鎖存器鎖定當(dāng)前的計(jì)數(shù)值。3982538253的計(jì)數(shù)器有的計(jì)數(shù)器有6 6種工作方式:種工作方式: (1) (1)方式方式0-0-計(jì)數(shù)結(jié)束中斷計(jì)數(shù)結(jié)束中斷 (2) (2)方

24、式方式1-1-硬件觸發(fā)單拍脈沖硬件觸發(fā)單拍脈沖 (3) (3)方式方式2-2-頻率發(fā)生器頻率發(fā)生器 (4) (4)方式方式3-3-方波發(fā)生器方波發(fā)生器 (5) (5)方式方式4-4-軟件觸發(fā)選通軟件觸發(fā)選通 (6) (6)方式方式5-5-硬件觸發(fā)選通硬件觸發(fā)選通8. 8.2 .2計(jì)數(shù)器的工作方式及其與輸入輸出的關(guān)系計(jì)數(shù)器的工作方式及其與輸入輸出的關(guān)系401.1.計(jì)數(shù)器的輸出計(jì)數(shù)器的輸出 OUTOUT6 6種工作方式的輸出信號如下圖所示。種工作方式的輸出信號如下圖所示。8. 8.2 .2計(jì)數(shù)器的工作方式及其與輸入輸出的關(guān)系計(jì)數(shù)器的工作方式及其與輸入輸出的關(guān)系只有方式只有方式0 0在寫入在寫入控制

25、字后輸出為低,控制字后輸出為低,其他其他5 5種方式,都種方式,都是在寫入控制字后是在寫入控制字后輸出為高。輸出為高。方式方式2 2、4 4、5 5的輸出波的輸出波形是相同的,都是寬形是相同的,都是寬度為一個(gè)度為一個(gè)CLKCLK周期的負(fù)周期的負(fù)脈沖。但方式脈沖。但方式2 2是連續(xù)是連續(xù)工作,方式工作,方式4 4由軟件由軟件( (設(shè)置計(jì)數(shù)值設(shè)置計(jì)數(shù)值) )觸發(fā)啟觸發(fā)啟動(dòng),而方式動(dòng),而方式5 5由門控脈由門控脈沖觸發(fā)啟動(dòng)。沖觸發(fā)啟動(dòng)。方式方式5 5與方式與方式1 1的工作方的工作方式基本相同,但輸出波式基本相同,但輸出波形不同,方式形不同,方式1 1的輸出的輸出為寬度是為寬度是N N個(gè)個(gè)CLKCL

26、K脈沖的脈沖的低電平脈沖低電平脈沖( (計(jì)數(shù)過程計(jì)數(shù)過程中輸出為低中輸出為低) ),而方式,而方式5 5的輸出為寬度是的輸出為寬度是1 1個(gè)個(gè)CLKCLK脈沖的負(fù)脈沖脈沖的負(fù)脈沖( (計(jì)數(shù)過計(jì)數(shù)過程中輸出為高程中輸出為高) )。方式方式3 3和方式和方式2 2的輸出都的輸出都是周期性的是周期性的, ,它們的主它們的主要區(qū)別是要區(qū)別是, ,方式方式2 2在計(jì)數(shù)在計(jì)數(shù)過程中輸出始終為高過程中輸出始終為高, ,直至計(jì)數(shù)器減到直至計(jì)數(shù)器減到1 1時(shí)時(shí), ,輸輸出一個(gè)出一個(gè)CLKCLK負(fù)脈沖后又負(fù)脈沖后又恢復(fù)為高恢復(fù)為高; ;方式方式3 3在計(jì)數(shù)在計(jì)數(shù)過程中輸出有一半時(shí)間過程中輸出有一半時(shí)間為高為高,

27、,另一半時(shí)間為低另一半時(shí)間為低41方式0. 計(jì)數(shù)結(jié)束中斷方式GATEOUTCLK 031244方式方式0WR設(shè)設(shè)定定工工作作方方式式設(shè)設(shè)定定計(jì)計(jì)數(shù)數(shù)初初值值計(jì)計(jì)數(shù)數(shù)值值送送入入計(jì)計(jì)數(shù)數(shù)器器計(jì)計(jì)數(shù)數(shù)過過程程計(jì)計(jì)數(shù)數(shù)結(jié)結(jié)束束( (高電平)高電平)42方式1. 硬件觸發(fā)單拍脈沖設(shè)設(shè)定定工工作作方方式式設(shè)設(shè)定定計(jì)計(jì)數(shù)數(shù)初初值值硬硬件件啟啟動(dòng)動(dòng)計(jì)計(jì)數(shù)數(shù)值值送送入入計(jì)計(jì)數(shù)數(shù)器器計(jì)計(jì)數(shù)數(shù)過過程程計(jì)計(jì)數(shù)數(shù)結(jié)結(jié)束束GATEOUTCLK 031244方式方式1WR硬件觸發(fā)計(jì)數(shù)上升沿)硬件觸發(fā)計(jì)數(shù)上升沿)43方式2. 頻率發(fā)生器03124GATEOUTCLK 4方式方式2031240312403124WR 軟件啟動(dòng)

28、:軟件觸發(fā)計(jì)數(shù) 硬件啟動(dòng):GATE信號上升沿44方式3. 方波發(fā)生器03124GATEOUTCLK 4方式方式3031240312403124WR 軟件啟動(dòng):軟件觸發(fā)計(jì)數(shù) 硬件啟動(dòng):GATE信號上升沿45方式4. 軟件觸發(fā)選通GATEOUTCLK031244方式方式4223331 0WR選通脈沖 軟件觸發(fā)計(jì)數(shù)軟件觸發(fā)計(jì)數(shù) GATE信號為低電平時(shí)停止計(jì)數(shù);信號為低電平時(shí)停止計(jì)數(shù);GATE信號由低電平變信號由低電平變?yōu)楦唠娖綍r(shí),重新裝入計(jì)數(shù)初值,從初值開始計(jì)數(shù)為高電平時(shí),重新裝入計(jì)數(shù)初值,從初值開始計(jì)數(shù)!46方式5. 硬件觸發(fā)選通GATEOUTCLK031244方式方式52233311 0WR硬件

29、觸發(fā)計(jì)數(shù)上升沿)硬件觸發(fā)計(jì)數(shù)上升沿)47 任一種方式,只有寫入計(jì)數(shù)值后才能開始計(jì)數(shù),任一種方式,只有寫入計(jì)數(shù)值后才能開始計(jì)數(shù),方式方式0 0、2 2、3 3和和4 4都是在寫入計(jì)數(shù)值后,計(jì)數(shù)過程就開都是在寫入計(jì)數(shù)值后,計(jì)數(shù)過程就開始了,而方式始了,而方式1 1和和5 5需要外部觸發(fā)啟動(dòng),才開始計(jì)數(shù)。需要外部觸發(fā)啟動(dòng),才開始計(jì)數(shù)。 6 6種方式中,只有方式種方式中,只有方式2 2和和3 3是連續(xù)計(jì)數(shù),其他是連續(xù)計(jì)數(shù),其他4 4種種方式都是一次計(jì)數(shù),要繼續(xù)工作需要重新啟動(dòng),方式方式都是一次計(jì)數(shù),要繼續(xù)工作需要重新啟動(dòng),方式0 0、4 4由寫入計(jì)數(shù)值由寫入計(jì)數(shù)值( (軟件軟件) )啟動(dòng),方式啟動(dòng),方

30、式1 1、5 5要由外部信要由外部信號號( (硬件硬件) )啟動(dòng)。啟動(dòng)。2.2.計(jì)數(shù)器的工作與啟動(dòng)計(jì)數(shù)器的工作與啟動(dòng)8. 8.2 .2計(jì)數(shù)器的工作方式及其與輸入輸出的關(guān)系計(jì)數(shù)器的工作方式及其與輸入輸出的關(guān)系48 在方式0和方式4中,GATE是電平起作用。計(jì)數(shù)過程受GATE信號的控制,GATE為高電平計(jì)數(shù),低電平停止計(jì)數(shù)。 在方式1和方式5中,GATE是上升沿起作用。在計(jì)數(shù)過程中,只要GATE出現(xiàn)由低到高的跳變,計(jì)數(shù)的初值就被裝入減1 計(jì)數(shù)器,并從初值起繼續(xù)計(jì)數(shù)。 在方式2和方式3中,GATE信號的上升沿和電平均起作用。高電平計(jì)數(shù),低電平停止計(jì)數(shù)。上升沿則重新裝入計(jì)數(shù)初值,繼續(xù)計(jì)數(shù)。3.3.門控

31、信號門控信號GATEGATE的作用的作用8. 8.2 .2計(jì)數(shù)器的工作方式及其與輸入輸出的關(guān)系計(jì)數(shù)器的工作方式及其與輸入輸出的關(guān)系49 8253 8253可以在計(jì)數(shù)過程中寫入計(jì)數(shù)值,但它的作可以在計(jì)數(shù)過程中寫入計(jì)數(shù)值,但它的作用在不同方式時(shí)有所不同。方式用在不同方式時(shí)有所不同。方式0 0和方式和方式4 4是立即有是立即有效效( (即新的計(jì)數(shù)值寫入減即新的計(jì)數(shù)值寫入減1 1計(jì)數(shù)器計(jì)數(shù)器) ),方式,方式1 1和方式和方式5 5是外部觸發(fā)后有效,方式是外部觸發(fā)后有效,方式2 2和方式和方式3 3是本次計(jì)數(shù)結(jié)束是本次計(jì)數(shù)結(jié)束后有效。后有效。4.4.在計(jì)數(shù)過程中改變計(jì)數(shù)值在計(jì)數(shù)過程中改變計(jì)數(shù)值8. 8

32、.2 .2計(jì)數(shù)器的工作方式及其與輸入輸出的關(guān)系計(jì)數(shù)器的工作方式及其與輸入輸出的關(guān)系50方式控制字計(jì)數(shù)器選擇讀/寫操作工作方式計(jì)數(shù)方式D7D6D5D4D3D2D1D000 計(jì)數(shù)器計(jì)數(shù)器001 計(jì)數(shù)器計(jì)數(shù)器110 計(jì)數(shù)器計(jì)數(shù)器211 非法非法00 計(jì)數(shù)器鎖存命計(jì)數(shù)器鎖存命令令 01 只讀寫低字節(jié)只讀寫低字節(jié)10 只讀寫高字節(jié)只讀寫高字節(jié)11 先讀寫低字節(jié)先讀寫低字節(jié) 后讀寫高字節(jié)后讀寫高字節(jié)000 方式方式0001 方式方式1x10 方式方式2x11 方式方式3100 方式方式4101 方式方式50 二進(jìn)制二進(jìn)制1 十進(jìn)制十進(jìn)制(BCD碼)碼)8. 8.3 .382538253的控制字和初始化編程

33、的控制字和初始化編程51 (1)計(jì)數(shù)器選擇(D7、D6)。由于三個(gè)計(jì)數(shù)器的工作是完全獨(dú)立的,所以每個(gè)計(jì)數(shù)器都有一個(gè)控制字。而三個(gè)控制字都由同一地址(控制字寄存器地址)寫入,因而由控制字的D7、D6兩位來指定該控制字是哪個(gè)計(jì)數(shù)器的控制字。在控制字中的計(jì)數(shù)器選擇與計(jì)數(shù)器的地址是兩回事,不能混淆。8. 8.3 .382538253的控制字和初始化編程的控制字和初始化編程52 (2)數(shù)據(jù)讀/寫格式(D5、D4)。讀/寫數(shù)據(jù)時(shí),是讀/寫8位數(shù)據(jù)還是16位數(shù)據(jù);若是8位數(shù)據(jù),可以令D5D4=01,只讀/寫低8位,則高8位自動(dòng)置0;若是16位數(shù)據(jù),而低8位為0,則可令D5D4=10,只讀/寫高8位,低8位就

34、自動(dòng)為0;若令D5D4=11時(shí),就先讀/寫低8位,后讀/寫高8位。在讀取16位計(jì)數(shù)值時(shí),可令D5D4=00,則把寫控制字時(shí)的計(jì)數(shù)值鎖存,以后再讀取。 8. 8.3 .382538253的控制字和初始化編程的控制字和初始化編程53 (3)工作方式(D3、D2、D1)。 8253的每個(gè)計(jì)數(shù)器的6種不同的工作方式,由這3位決定。 (4)數(shù)制選擇(D0)。 8253的每個(gè)計(jì)數(shù)器有兩種計(jì)數(shù)制:二進(jìn)制和十進(jìn)制,由這位決定。在二進(jìn)制計(jì)數(shù)時(shí),寫入的初值的范圍為0000HFFFFH,其中0000H是最大值,代表65536。在十進(jìn)制計(jì)數(shù)時(shí),寫入的初值的范圍為0000H9999H,其中0000H是最大值,代表100

35、00。BCD位=1,N=1200H;BCD位=0,N=1200H;寫1200H,分兩次寫,先寫低字節(jié)00H),再寫高字節(jié)12H)8. 8.3 .382538253的控制字和初始化編程的控制字和初始化編程54MOV DX,303HMOV AL,00010100B ; 通道通道0讀寫低讀寫低8位、方式位、方式2,二進(jìn)制計(jì)數(shù),二進(jìn)制計(jì)數(shù)OUT AL,DXMOV DX,300HMOV AL,100 ;通道通道0的計(jì)數(shù)初值的計(jì)數(shù)初值100OUT DX,ALMOV DX,303HMOV AL,01100111B ;通道通道1讀寫高讀寫高8位,方式位,方式3,BCD計(jì)數(shù)計(jì)數(shù)MOV DX,301HMOV AL

36、,10HOUT DX,AL 端口地址300H303H。計(jì)數(shù)器0采用二進(jìn)制計(jì)數(shù),初值為100,工作方式2;計(jì)數(shù)器1采用BCD計(jì)數(shù),初值為1000,工作方式355 寫入初始值寫入初始值MOV AX,1000OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,Base+3MOV AL,01010100BOUT DX,AL如通道1,方式2,二進(jìn)制計(jì)數(shù),計(jì)數(shù)初值255,先寫低字節(jié)再寫高字節(jié)初值為0,即為計(jì)數(shù)65536次寫兩次0)初值1000BCD計(jì)數(shù)初值23H,表示計(jì)數(shù)23次56 例如:用計(jì)數(shù)器0,工作在方式1,按十進(jìn)制計(jì)數(shù),計(jì)數(shù)值為5080。若該片8253的端口地址為388H38BH,

37、則初始化程序段為: MOV DX,38BH ;MOV DX,38BH ;控制字寄存器口地址控制字寄存器口地址MOV AL,00110011B ;MOV AL,00110011B ;計(jì)數(shù)器計(jì)數(shù)器0 0先讀寫低先讀寫低8 8位再高位再高8 8位位方式方式1BCD1BCD數(shù)數(shù)OUT DX,ALOUT DX,ALMOV DX,388H ;MOV DX,388H ;計(jì)數(shù)器計(jì)數(shù)器0 0口地址口地址MOV AL,80HMOV AL,80HOUT DX,AL ;OUT DX,AL ;寫低寫低8 8位位MOV AL,50HMOV AL,50HOUT DX,AL ;OUT DX,AL ;寫高寫高8 8位位8. 8

38、.3 .382538253的控制字和初始化編程的控制字和初始化編程57 8253任一計(jì)數(shù)器的計(jì)數(shù)值,CPU可用指令讀取。CPU讀到的是執(zhí)行讀取指令瞬間計(jì)數(shù)器的現(xiàn)行值。但8253的計(jì)數(shù)器是16位的,所以要分兩次讀至CPU,因而,若不設(shè)法鎖存的話,則在讀數(shù)過程中,計(jì)數(shù)值可能已變化了。要鎖存有兩種辦法: (1)利用GATE信號使計(jì)數(shù)過程暫停。 (2)向8253輸送一個(gè)控制字,令8253的計(jì)數(shù)值在出寄存器鎖存。8. 8.3 .382538253的控制字和初始化編程的控制字和初始化編程58例如:讀取計(jì)數(shù)器例如:讀取計(jì)數(shù)器1 1的的1616位計(jì)數(shù)值,存入位計(jì)數(shù)值,存入CXCX中,其中,其程序段為程序段為:

39、 : MOV DX,38BH MOV AL,01000000B ;計(jì)數(shù)器1的鎖存命令 OUT DX,AL MOV DX,389H IN AL,DX ;先讀低8位 MOV CL,AL IN AL,DX ;再讀高8位 MOV CH,AL 8. 8.3 .382538253的控制字和初始化編程的控制字和初始化編程59 如CLK為0.5MHZ的方波,需要輸出1KHZ的方波,計(jì)數(shù)初值N=(0.5*106)/(1*103)=500 由于8253是16位計(jì)數(shù)器,其計(jì)數(shù)初值最大為0計(jì)數(shù)65536個(gè)脈沖),如輸入脈沖頻率與輸出脈沖頻率之比超過65536,則必須利用8253的多個(gè)通道實(shí)現(xiàn)。 輸入時(shí)鐘CLK的頻率為

40、2MHz,希望產(chǎn)生2Hz的方波,2MHz與2Hz的比值為1000000,超過了一個(gè)計(jì)數(shù)器的計(jì)數(shù)能力,可以利用8253的兩個(gè)通道實(shí)現(xiàn):輸入的2MHz脈沖接入CLK0,OUT0再連接到CLK1,作為通道1的輸入,計(jì)數(shù)器0和計(jì)數(shù)器1的初值都是1000,則OUT1輸出的就是2Hz的方波。輸出脈沖頻率輸入脈沖頻率輸入脈沖周期所需要的定時(shí)間隔計(jì)數(shù)初值601. 8253的控制字格式的控制字格式 (1) 計(jì)數(shù)器選擇計(jì)數(shù)器選擇 (2) 讀讀/寫指示寫指示 (3)工作方式選擇工作方式選擇 (4)計(jì)數(shù)初值計(jì)數(shù)初值2. 8253的編程命令的編程命令(1)寫入命令控制字、計(jì)數(shù)初值)寫入命令控制字、計(jì)數(shù)初值)(2) 讀出

41、命令讀出命令 1) 讀之前先停止計(jì)數(shù)讀之前先停止計(jì)數(shù) 2) 讀之前先送計(jì)數(shù)鎖存命令讀之前先送計(jì)數(shù)鎖存命令82538253的控制字和初始化編程的控制字和初始化編程61 例假定8253端口地址為40H43H,計(jì)數(shù)器2工作在方式0,按二進(jìn)制計(jì)數(shù),計(jì)數(shù)初值為4。 例 假設(shè)8253端口地址為40H43H,計(jì)數(shù)器2工作在方式2,按BCD碼計(jì)數(shù),計(jì)數(shù)初值為2000。82538253的初始化編程的初始化編程62例如:讀取計(jì)數(shù)器例如:讀取計(jì)數(shù)器1 1的的1616位計(jì)數(shù)值,存入位計(jì)數(shù)值,存入CXCX中,其中,其程序段為程序段為: : MOV DX,38BH MOV AL,01000000B ;計(jì)數(shù)器1的鎖存命令

42、OUT DX,AL MOV DX,389H IN AL,DX ;先讀低8位 MOV CL,AL IN AL,DX ;再讀高8位 MOV CH,AL 63例 IBM/PC微機(jī)的某擴(kuò)展板上使用一片8253,其端口地址為400H403H,要求從計(jì)數(shù)器0的輸出端OUT0得到250HZ的方波信號,從計(jì)數(shù)器1的輸出端OUT1得到10HZ的連續(xù)單拍負(fù)脈沖信號。已知系統(tǒng)提供的計(jì)數(shù)脈沖頻率為125KHZ,試編寫程序。8. 8.4 .482538253的應(yīng)用的應(yīng)用64 例 某IBM PC/XT應(yīng)用系統(tǒng)中,當(dāng)某一外部事件發(fā)生時(shí),1S后向主機(jī)申請中斷,若用8253A實(shí)現(xiàn)延遲,試設(shè)計(jì)硬件連接圖并對8253A進(jìn)行初始化編

43、程。設(shè)8253A的端口地址為400H403H。65 例8.4 8253在IBM PC XT中的應(yīng)用。8. 8.4 .482538253的應(yīng)用的應(yīng)用IBM PC XTIBM PC XT微型計(jì)算機(jī)中微型計(jì)算機(jī)中82538253的部分線的部分線路路 66 由譯碼電路可知計(jì)數(shù)器和控制字寄存器的端口地址由譯碼電路可知計(jì)數(shù)器和控制字寄存器的端口地址為為40H40H5FH5FH,BIOSBIOS取為計(jì)數(shù)器取為計(jì)數(shù)器040H040H,計(jì)數(shù)器,計(jì)數(shù)器141H141H,計(jì)數(shù)器計(jì)數(shù)器242H242H,控制字寄存器,控制字寄存器43H43H。 3 3個(gè)計(jì)數(shù)器的輸入時(shí)鐘頻率均為個(gè)計(jì)數(shù)器的輸入時(shí)鐘頻率均為1.19MHz1

44、.19MHz。 計(jì)數(shù)器計(jì)數(shù)器0 0,工作于方式,工作于方式3 3 n0=0, n0=0,即即6553665536,輸出頻率為,輸出頻率為1.19318MHz1.19318MHz655366553618.206Hz18.206Hz的方波。用來作為中斷控制器的方波。用來作為中斷控制器82598259的第的第0 0號中號中斷信號線斷信號線(IRQ0)(IRQ0)的輸入。的輸入。 其控制字為其控制字為36H(00110110B)36H(00110110B)。8. 8.4 .482538253的應(yīng)用的應(yīng)用67對計(jì)數(shù)器對計(jì)數(shù)器0 0初始化的程序段如下:初始化的程序段如下:mov al, 36h;計(jì)數(shù)器計(jì)數(shù)

45、器0為方式為方式3,采用二進(jìn)制計(jì)數(shù),采用二進(jìn)制計(jì)數(shù),;先低后高寫入計(jì)數(shù)值先低后高寫入計(jì)數(shù)值out 43h, al;寫入方式控制字寫入方式控制字mov al, 0;計(jì)數(shù)值為全計(jì)數(shù)值為全0out 40h, al;寫入低字節(jié)計(jì)數(shù)值寫入低字節(jié)計(jì)數(shù)值out 40h, al;寫入高字節(jié)計(jì)數(shù)值寫入高字節(jié)計(jì)數(shù)值68 計(jì)數(shù)器輸出間隔為15S的負(fù)脈沖。該脈沖的上升沿觸發(fā)D觸發(fā)器。使它對DMA控制器 8237的第0號DMA請求信號線DRQ0發(fā)出DMA請求信號,8237則依據(jù)這個(gè)請求信號對動(dòng)態(tài)RAM進(jìn)行刷新。計(jì)數(shù)器1的計(jì)數(shù)值為: 1.19106/(1/15)10-6=18 69計(jì)數(shù)器1:定時(shí)刷新 需要重復(fù)不斷周期性提

46、出DRAM刷新請求 門控總為高,選擇方式2mov al, 54h ;計(jì)數(shù)器計(jì)數(shù)器1為方式為方式2,采用,采用二進(jìn)制計(jì)數(shù),只寫低二進(jìn)制計(jì)數(shù),只寫低8位計(jì)數(shù)值位計(jì)數(shù)值out 43h, al;寫入方式控制字寫入方式控制字mov al, 18;計(jì)數(shù)初值為計(jì)數(shù)初值為18out 41h, al;寫入計(jì)數(shù)值寫入計(jì)數(shù)值70 計(jì)數(shù)器2輸出不同頻率的方波,經(jīng)電流驅(qū)動(dòng)器75477放大,推動(dòng)揚(yáng)聲器發(fā)出不同頻率的聲響。計(jì)數(shù)器2的計(jì)數(shù)值為可變值。隨蜂鳴器聲響頻率的高低而變,程序設(shè)計(jì)中讓它的取值范圍由1到65535,即16位二進(jìn)制數(shù),故其控制字為B6H(10110110B)。 71計(jì)數(shù)器2:揚(yáng)聲器控制計(jì)數(shù)器2的輸出控制揚(yáng)聲

47、器的發(fā)聲音調(diào)。計(jì)數(shù)器2只能工作在方式3,才能輸出一定頻率的方波;經(jīng)濾波后得到近似的正弦波,進(jìn)而推動(dòng)揚(yáng)聲器發(fā)聲。計(jì)數(shù)值確定發(fā)生頻率。揚(yáng)聲器還受控于并行接口8255芯片)。必須使PB0和PB1同時(shí)為高電平,揚(yáng)聲器才能發(fā)出預(yù)先設(shè)定頻率的聲音。確定發(fā)聲時(shí)間的長短。72entry parametersentry parameters:DH= Number of long tones to beepDH= Number of long tones to beepDL= Number of short tones to beepDL= Number of short tones to beeperr-bee

48、p procerr-beep proc PUSHF PUSHF ;保存所有的標(biāo)志位;保存所有的標(biāo)志位 CLI CLI ;關(guān)中斷;關(guān)中斷 PUSH DS PUSH DS MOV AX MOV AX,DATA DATA ;DSDS指向數(shù)據(jù)段指向數(shù)據(jù)段 MOV DS MOV DS,AXAX OR DH OR DH,DH DH ;是否要鳴長音;是否要鳴長音 JZ G3 JZ G3 ;不鳴長音,去鳴短音;不鳴長音,去鳴短音 下面是下面是IBM PC XTIBM PC XT機(jī)機(jī)BIOSBIOS中的開機(jī)診斷子程序。該子程序讓蜂中的開機(jī)診斷子程序。該子程序讓蜂鳴器鳴一聲長音鳴器鳴一聲長音(3(3秒秒) )和一

49、聲短音和一聲短音(0.5(0.5秒秒) ),以指出系統(tǒng)板或,以指出系統(tǒng)板或RAMRAM模塊或者模塊或者CRTCRT顯示器有錯(cuò)。顯示器有錯(cuò)。73G1G1: MOV BL MOV BL,6 6 ;蜂鳴常數(shù),一次鳴響延續(xù)時(shí);蜂鳴常數(shù),一次鳴響延續(xù)時(shí)0.50.5BLBL CALL BEEP CALL BEEP ;調(diào)用鳴響子程序;調(diào)用鳴響子程序G2G2: LOOP G2 LOOP G2 ;鳴響間隔,等待;鳴響間隔,等待500mS500mS DEC DH DEC DH JNZ G1 JNZ G1 ;長音沒鳴響完,繼續(xù);長音沒鳴響完,繼續(xù) CMP MFG-TST CMP MFG-TST,1 1 ;為制造測試

50、模式?;為制造測試模式? JNZ G3 JNZ G3 ;為制造測試模式,繼續(xù)鳴響短;為制造測試模式,繼續(xù)鳴響短音音 MOV AL MOV AL,0DH 0DH ;停止;停止LEDLED閃閃 OUT PORT-B OUT PORT-B,AL AL ;PORT-B=61HPORT-B=61H,即,即8255B8255B端口端口 JMP G1 JMP G174G3G3: MOV BL MOV BL,1 1 ;短音鳴響時(shí)間為;短音鳴響時(shí)間為0.50.51=0.5S1=0.5S CALL BEEP CALL BEEPG4G4: LOOP G4 LOOP G4 DEC DL DEC DL JNZ G3 J

51、NZ G3 ;短音沒鳴響完,繼續(xù);短音沒鳴響完,繼續(xù)G5G5: LOOP G5 LOOP G5 ;短音鳴響完,延遲;短音鳴響完,延遲1S1S返回返回G6G6: LOOP G6 LOOP G6 POP DS POP DS POPF POPF RET RETerr-beep endperr-beep endp75鳴響子程序:鳴響子程序:揚(yáng)聲器控制頻率設(shè)置揚(yáng)聲器控制頻率設(shè)置beep procbeep proc MOV AL MOV AL,0B6H 0B6H ;計(jì)數(shù)器;計(jì)數(shù)器2 2的控制字的控制字 OUT 43H OUT 43H,ALAL MOV AX MOV AX,533H 533H ;1000Hz

52、1000Hz分頻值,分高低字節(jié)兩分頻值,分高低字節(jié)兩次送入次送入 OUT 42H OUT 42H,ALAL MOV AL MOV AL,AHAH OUT 42H OUT 42H,ALAL 76 IN AL IN AL,61H 61H ;讀??;讀取8255B8255B端口的狀態(tài)端口的狀態(tài) MOV AH MOV AH,ALAL OR AL OR AL,3 ;D1D03 ;D1D0PB1PB0PB1PB011B11B,其他位,其他位不變不變 OUT 61H OUT 61H,AL AL ;打開蜂鳴器;打開蜂鳴器揚(yáng)聲器控制揚(yáng)聲器開77 MOV AL MOV AL,AH AH ;恢復(fù);恢復(fù)8255B825

53、5B端口的原來值,關(guān)蜂端口的原來值,關(guān)蜂鳴器鳴器 OUT 61H OUT 61H,ALAL RET RETbeep endpbeep endp揚(yáng)聲器控制揚(yáng)聲器關(guān)78 例8.5 對外部事件計(jì)數(shù)10次。 計(jì)數(shù)電路如下圖所示,由圖可知,使用的是計(jì)數(shù)器0。79控制程序如下:控制程序如下:stack segment stack stack segment stack stackstack dw 32 dup(0) dw 32 dup(0)stack endsstack endsdata segmentdata segmentDA1 DB DA1 DB WAIT LOADWAIT LOAD,0AH0AH,

54、0DH0DH,$ $DA2 DB DA2 DB PLEASE INPUTPLEASE INPUT,0AH0AH,0DH0DH,$ $DA3 DB DA3 DB PROGRAM TERMINATED NORMALLYPROGRAM TERMINATED NORMALLY,0AH0AH,0DH0DH,$ $data endsdata endscode segmentcode segmentbegin proc farbegin proc far assume ss assume ss:stackstack,cscs:codecode,dsds:datadata push ds push ds80

55、sub ax sub ax,axax push ax push ax mov ax mov ax,datadata mov ds mov ds,axax MOV DX MOV DX,383H 383H ;82538253計(jì)數(shù)器的方式計(jì)數(shù)器的方式0 0,BCDBCD計(jì)數(shù)計(jì)數(shù) MOV AL MOV AL,11H11H OUT DX OUT DX,ALAL MOV DX MOV DX,380H380H MOV AL MOV AL,10H10H OUT DX OUT DX,ALAL MOV DX MOV DX,OFFSET DA1OFFSET DA1 MOV AH MOV AH,9 9 INT 21H

56、 INT 21H MOV DX MOV DX,380H 380H 81LOADLOAD: IN AL IN AL,DXDX CMP AL CMP AL,10H 10H ;等待單穩(wěn)輸入脈沖,裝入計(jì)數(shù)初值;等待單穩(wěn)輸入脈沖,裝入計(jì)數(shù)初值 JNE LOAD JNE LOAD MOV DX MOV DX,OFFSET DA2OFFSET DA2 MOV AH MOV AH,9 9 INT 21H INT 21H MOV DX MOV DX,380H380HCONTINCONTIN: IN AL IN AL,DXDX CMP AL CMP AL,0 0 ;等待單穩(wěn)輸入;等待單穩(wěn)輸入1010個(gè)脈沖個(gè)脈沖

57、JNZ CONTIN JNZ CONTIN MOV DX MOV DX,OFFSET DA3OFFSET DA3 MOV AH MOV AH,9 9 INT 21H INT 21H ret retbegin endpbegin endpcode endscode ends end begin end begin82 將OUT0接至80 x86微機(jī)的IRQ9,使用中斷編程的程序如下:stack segment stack stack dw 32 dup(0)stack endsdata segmentDA1 DB WAIT LOAD,0AH,0DH,$DA2 DB PLEASE INPUT,0A

58、H,0DH,$DA3 DB PROGRAM TERMINATED NORMALLY,0AH,0DH,$data ends83code segmentcode segmentbegin proc farbegin proc far assume ss assume ss:stackstack,cscs:codecode,dsds:datadata push ds push ds sub ax sub ax,axax push ax push ax MOV ES MOV ES,AXAX mov ax mov ax,datadata mov ds mov ds,axax MOV DX MOV DX,

59、383H 383H ;82538253計(jì)數(shù)器的方式計(jì)數(shù)器的方式0 0,BCDBCD計(jì)計(jì)數(shù)數(shù) MOV AL MOV AL,11H11H OUT DX OUT DX,ALAL84 MOV DX,380H MOV AL,10H OUT DX,AL MOV DX,OFFSET DA1 MOV AH,9 INT 21H MOV DX,380HLOAD: IN AL,DX CMP AL,10H ;等待單穩(wěn)輸入脈沖,裝入計(jì)數(shù)初值 JNE LOAD MOV AX,SEG IS8253 ;填寫中斷向量表 MOV ES:01C6H,AX85 MOV AX,OFFSET IS8253 MOV ES:01C4H,AX

60、 IN AL,0A1H ;改變屏蔽字,允許IRQ9中斷 AND AL,0FDH OUT 0A1H,AL MOV DX,OFFSET DA2 MOV AH,9 INT 21H JMP $ ;等待單穩(wěn)輸入10個(gè)脈沖 MOV DX,OFFSET DA3 MOV AH,9 INT 21H ret86IS8253IS8253: MOV AL MOV AL,61H 61H ;指定中斷結(jié)束命令;指定中斷結(jié)束命令 OUT 0A0H OUT 0A0H,ALAL MOV AL MOV AL,62H62H OUT 20H OUT 20H,ALAL IN AL IN AL,0A1H 0A1H ;關(guān)屏蔽,禁止;關(guān)屏蔽,

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論