微機(jī)原理及接口技術(shù) 第七章 Intel 8253定時(shí)器計(jì)數(shù)器_第1頁
微機(jī)原理及接口技術(shù) 第七章 Intel 8253定時(shí)器計(jì)數(shù)器_第2頁
微機(jī)原理及接口技術(shù) 第七章 Intel 8253定時(shí)器計(jì)數(shù)器_第3頁
微機(jī)原理及接口技術(shù) 第七章 Intel 8253定時(shí)器計(jì)數(shù)器_第4頁
微機(jī)原理及接口技術(shù) 第七章 Intel 8253定時(shí)器計(jì)數(shù)器_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 第七章第七章 Intel 8253定時(shí)器定時(shí)器/計(jì)數(shù)器計(jì)數(shù)器 一、概述一、概述 1、定時(shí)與計(jì)數(shù)器的概念、定時(shí)與計(jì)數(shù)器的概念 定時(shí)器:定時(shí)器:在時(shí)鐘信號作用下,進(jìn)行定時(shí)的減“1”計(jì)數(shù),定時(shí)時(shí)間到(減“1”計(jì)數(shù)回零),從輸出端輸出周期均勻、 頻率恒定的脈沖信號。 由上述可知,定時(shí)器強(qiáng)調(diào)的是精確的時(shí)間。由上述可知,定時(shí)器強(qiáng)調(diào)的是精確的時(shí)間。 定時(shí)舉例:定時(shí)舉例: 一天24小時(shí)的計(jì)時(shí),稱為日時(shí)鐘。 在監(jiān)測系統(tǒng)中,對被測點(diǎn)的定時(shí)取樣。 在讀鍵盤時(shí),為去抖,一般延遲一段時(shí)間,再讀。 在微機(jī)控制系統(tǒng)中,控制某工序定時(shí)啟動(dòng)。 計(jì)數(shù)器:計(jì)數(shù)器: 在時(shí)鐘信號作用下,進(jìn)行減“1”計(jì)數(shù),計(jì)數(shù)次數(shù)到計(jì)數(shù)次數(shù)到(減(減

2、“1”計(jì)數(shù)回零),從輸出端輸出一個(gè)脈沖信號。計(jì)數(shù)回零),從輸出端輸出一個(gè)脈沖信號。 計(jì)數(shù)舉例:對零件和產(chǎn)品的計(jì)數(shù);對大橋和高速公路上車流量的統(tǒng)計(jì),等等。Intel8253在微機(jī)系統(tǒng)中可用作定時(shí)器和計(jì)數(shù)器。定時(shí)時(shí)間與計(jì)數(shù)次數(shù)是由用戶事 先設(shè)定。 2、 8253 定時(shí)與計(jì)數(shù)器與CPU的關(guān)系 8253 定時(shí)與計(jì)數(shù)操作過程與CPU相互獨(dú)立,并行操作。 3、8253定時(shí)與計(jì)數(shù)結(jié)束時(shí)產(chǎn)生的脈沖信號可用于對某一事件進(jìn)行控制,也可作用為一外部終端請求信號。二、二、Intel 8253 定時(shí)器定時(shí)器/計(jì)數(shù)器的計(jì)數(shù)器的基本性能參數(shù) 1、一片8253內(nèi)部有3個(gè)16位的計(jì)數(shù)器(相互獨(dú)立) 2、每個(gè)計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)相同

3、,可通過編程手段設(shè)置為6種不同的工作方式來進(jìn)行定時(shí)/計(jì)數(shù) 3、每個(gè)計(jì)數(shù)器再開始工作前必須預(yù)制時(shí)間常數(shù)(時(shí)間初始)每個(gè)計(jì)數(shù)器再開始工作前必須預(yù)制時(shí)間常數(shù)(時(shí)間初始) 4、每個(gè)計(jì)數(shù)器在工作過程中的當(dāng)前計(jì)數(shù)值可被CPU讀出. (注:時(shí)間常數(shù)也可在計(jì)數(shù)過程中更改)(注:時(shí)間常數(shù)也可在計(jì)數(shù)過程中更改)三、三、8253 定時(shí)器定時(shí)器/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)、計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)、 1、內(nèi)部結(jié)構(gòu)(下頁) .內(nèi)部邏輯結(jié)構(gòu) 8253/8254內(nèi)部有6個(gè)模塊,其結(jié)構(gòu)框圖如圖3.2所示。 8253 定時(shí)器定時(shí)器/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)框圖計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)框圖CLK1GATE1OUT1CLK2GATE2OUT2CLK0GATE0OU

4、T0數(shù)據(jù)總線緩沖器讀/寫邏輯A0A1RDWRCS8CPU控制字寄存器內(nèi)部總線計(jì)數(shù)器 0計(jì)數(shù)器 1計(jì)數(shù)器 2數(shù)據(jù)總線緩沖器。它是一個(gè)三態(tài)、雙向8位寄存器,用于將8253與系統(tǒng)數(shù)據(jù)總線D0D7 相連。讀/寫邏輯??刂泼罴拇嫫鳌K邮蹸PU送來的控制字。計(jì)數(shù)器。8253有3個(gè)獨(dú)立的計(jì)數(shù)器(計(jì)數(shù)通道),其內(nèi)部結(jié)構(gòu)完全相同,定時(shí)器定時(shí)器/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu):計(jì)數(shù)器的內(nèi)部結(jié)構(gòu):8253CLKGATEOUT16位當(dāng)前計(jì)數(shù)值鎖存器16位減一計(jì)數(shù)器16位計(jì)數(shù)初值寄存器&CLKGATEOUTMSBLSBLSBMSB(減1至0時(shí))裝入/讀出初值鎖存厚讀出當(dāng)前值8253 的內(nèi)部的各計(jì)數(shù)器的結(jié)構(gòu)的內(nèi)部的各計(jì)數(shù)器

5、的結(jié)構(gòu) 四四. 8253的端口尋址及基本操作的端口尋址及基本操作 CSRDA1WRA0傳 送 方 式00000001111000000011100110010101010寫入計(jì)數(shù)器0的初始值寫入計(jì)數(shù)器1的初始值寫入計(jì)數(shù)器2的初始值寫入控制寄存器控制字讀自計(jì)數(shù)器0的OL讀自計(jì)數(shù)器1的OL讀自計(jì)數(shù)器2的OL五、8253 的控制字格式: 數(shù)制選擇SC1SC0M2RW1RW0 BCDM0M1D7 D6 D5 D4 D3 D2 D1 D0工作方式000 方式0101 方式500 計(jì)數(shù)器鎖存命令10 只讀/寫高八位01 只讀/寫低八位11 先讀/寫低八位再讀/寫高八位00 選擇計(jì)數(shù)器001選擇計(jì)數(shù)器110

6、 選擇計(jì)數(shù)器2讀/寫指示計(jì)數(shù)器選擇 關(guān)于的控制字關(guān)于的控制字說明說明: 1、8253只有一個(gè)工作方式控制字,但是對每個(gè)計(jì)數(shù)器而言,它們的工作方式控制字內(nèi)容一定各不相同(前兩位不同),所用各計(jì)數(shù)器的控制字需要分別設(shè)置所用各計(jì)數(shù)器的控制字需要分別設(shè)置,先后不計(jì)。 2、8253的工作方式控制字的特殊形式可用于對計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值進(jìn)行鎖存。 3、在工作方式控制字被設(shè)置之后,隨后必須緊接著給計(jì)數(shù)器預(yù)設(shè)置計(jì)數(shù)初值,計(jì)數(shù)器方可開始工作??刂谱挚刂谱諷C1SC0M2RW1RW0 BCDM0M1D7 D6 D5 D4 D3 D2 D1 D000 計(jì)數(shù)器鎖存命令00 選擇計(jì)數(shù)器001選擇計(jì)數(shù)器110 選擇計(jì)數(shù)器2

7、計(jì)數(shù)器選擇 未用 鎖存計(jì)數(shù)器當(dāng)前計(jì)數(shù)值控制字鎖存計(jì)數(shù)器當(dāng)前計(jì)數(shù)值控制字4.計(jì)數(shù)初值計(jì)數(shù)初值 計(jì)數(shù)初值與輸入時(shí)鐘(CLK)頻率及輸出波形(OUT)頻率之間的關(guān)系為:Ci=CLK/OUT 或 Tc=CLK/OUT 5. 8253初始化的工作有兩個(gè)內(nèi)容初始化的工作有兩個(gè)內(nèi)容:(1)一是向命令寄存器寫入方式命令,以選擇器(3個(gè)計(jì)數(shù)器之一),確定工作方式(6種方式之一),指定計(jì)數(shù)器計(jì)數(shù)初值的長度和裝入順序以及計(jì)數(shù)值的碼制(BCD或二進(jìn)制碼)。(2)二是向已選定的計(jì)數(shù)器按方式命令的要求寫入計(jì)數(shù)初值。v例1:選擇2號計(jì)數(shù)器,工作在3方式,計(jì)數(shù)初值為533H(2個(gè)字節(jié)),采用二進(jìn)制計(jì)數(shù)。其初始化程序段為v M

8、OV DX,307H ;命令口v MOV AL,10110110B ;2號計(jì)數(shù)器的初始化v 命 令字v OUT DX,AL ;寫入命令寄存器v MOV DX,306H ;2號計(jì)數(shù)器數(shù)據(jù)口v MOV AX,533H ;計(jì)數(shù)初值v OUT DX,AL ;選送低字節(jié)到2號計(jì)v 數(shù)器v MOV AL,AH ;取高字節(jié)送ALv OUT DX,AL ;后送高字節(jié)到2號v 計(jì)數(shù)器v例2:要求讀出并檢查1號計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值是否是全“1”(假定計(jì)數(shù)值只有低8位),其程序段為v MOV DX,307H ;命令口vL :MOV AL,01000000B ;1號計(jì)數(shù)器的鎖存命令v OUT DX,AL ;寫入命令寄存

9、器v MOV DX,305H ;1號計(jì)數(shù)器數(shù)據(jù)口v IN AL,DX ;讀1號計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值v CMP AL,0FFH ;比較v JNE L ;非全“1”,再讀v HLT ; 是全“1”,暫停 1、方式0 “一次有效一次有效” 1)、計(jì)數(shù)器寫完計(jì)數(shù)值時(shí),開始計(jì)數(shù),相應(yīng)的輸出信號OUT就開始變成低電平。當(dāng)計(jì)數(shù)器減到零時(shí),OUT立即輸出高電平。 六、六、8253 的工作方式的工作方式 8253/8254芯片的每個(gè)計(jì)數(shù)器通道都有芯片的每個(gè)計(jì)數(shù)器通道都有6種種工作方式可供選用。工作方式可供選用。18組11 3)、在計(jì)數(shù)器工作期間,如果重新寫入新的計(jì)數(shù)值,計(jì)數(shù)器將按新寫入的計(jì)數(shù)值重新工作。 2)、門

10、控信號GATE位高電平時(shí),計(jì)數(shù)器工作;為低電平時(shí),計(jì)數(shù)器停止工作,計(jì)數(shù)只保持不變。18組118組2n=5n=5CLKCLKOUTOUTWRWR 5 54 43 32 21 10 0圖圖3.4 82533.4 8253的的0 0方式時(shí)序波形方式時(shí)序波形WRWROUTOUT n=9n=99 98 8n=4n=44 43 32 21 10 0n=5n=5WRWRGATEGATEOUTOUT 5 54 43 32 21 10 04 44 4 MOV DX,307H ;命令口 MOV AL,01110000B ;方式字 OUT DX,AL MOV DX,305H ;T1數(shù)據(jù)口 MOV AL,BYTEL

11、;計(jì)數(shù)值低字節(jié) OUT DX,AL MOV AL,BYTEH ;計(jì)數(shù)值高字節(jié) OUT DX,AL 例例1:使計(jì)數(shù)器:使計(jì)數(shù)器T1工作在工作在0方式,進(jìn)行方式,進(jìn)行16位二進(jìn)制計(jì)數(shù),計(jì)位二進(jìn)制計(jì)數(shù),計(jì)數(shù)初值的高低字節(jié)分別為數(shù)初值的高低字節(jié)分別為BYTEH和和BYTEL。其初始化程。其初始化程序段如下:序段如下: 2. 1方式方式-低電平輸出低電平輸出(GATE信號上升沿重新計(jì)數(shù)信號上升沿重新計(jì)數(shù)) 1方式為可編程的單穩(wěn)態(tài)工作方式。 情況一:情況一:(1)寫入計(jì)數(shù)初值后,計(jì)數(shù)器并不立即開始工作;(2)門控信號GATE有效,才開始工作,使輸出OUT變成低電平;(3)直到計(jì)數(shù)器值減到零后,輸出才變高電

12、平。見圖3.5中。 情況二:情況二: 在計(jì)數(shù)器工作期間,當(dāng)GATE又出現(xiàn)一個(gè)上升沿時(shí),計(jì)數(shù)器 重新裝入原計(jì)數(shù)初值并重新開始計(jì)數(shù),見圖見圖3.5中。 21組17 如果工作期間對計(jì)數(shù)器寫入新的計(jì)數(shù)初值,則要等到當(dāng)前的 計(jì)數(shù)值計(jì)滿回零且門控信號再次出現(xiàn)上升沿后,才按新寫入的 計(jì)數(shù)初值開始工作,見圖3.5所示。21組121組16圖圖3.5 82533.5 8253的的1 1方式時(shí)序波形方式時(shí)序波形n=3n=3WRWRn=2n=2OUTOUT 3 32 21 10 02 21 10 0GATEGATEn=4n=4CLKCLKGATEGATEWRWROUTOUT 4 43 32 21 10 0OUTOUT

13、 4 43 32 21 1GATEGATE4 40 0例2:使計(jì)數(shù)器T2 工作在1方式,進(jìn)行8位二進(jìn)制計(jì)數(shù), 并設(shè)計(jì) 數(shù) 初值的低8位為BYTEL。 其初始化程序段為 MOV DX,307H ;命令口 MOV AL,10010010B ;方式字 OUT DX,AL MOV DX,306H ;T2數(shù)據(jù)口 MOV AL,BYTEL ;低8位計(jì)數(shù)值 OUT DX,AL 3. 方式方式2:頻率發(fā)生器:頻率發(fā)生器 2方式是一種具有自動(dòng)裝入時(shí)間常數(shù)(計(jì)數(shù)初 值N) 的 N分頻器。時(shí)序波形如下時(shí)序波形如下特點(diǎn):特點(diǎn):一次設(shè)置計(jì)數(shù)初值,計(jì)數(shù)器可自動(dòng)重復(fù)進(jìn)行減“1”計(jì)數(shù)操作,減“1”計(jì)數(shù)回“0”,可從輸出端輸出

14、一負(fù)脈沖信號。OUTOUT3 32 21 15 51 143 32 2n=3n=3CLKCLKWE GATEOUTOUT3 32 21 13 3 2 1 32 2n=5n=5GATEOUTOUT3 32 22 2 1 32 21 2 2 例3:使計(jì)數(shù)器T0 工作在2方式,進(jìn)行16位二進(jìn)制計(jì)數(shù)。 其初始 化程序段為 MOV DX,307H ;命令口 MOV AL,00110100B ;方式字 OUT DX,AL MOV DX,304H ;T2數(shù)據(jù)口 MOV AL,BYTEL ;低8位計(jì)數(shù)值 OUT DX,AL MOV AL,BYTEL ;高8位計(jì)數(shù)值 OUT DX,AL4. 3方式方式-周期性方

15、波輸出周期性方波輸出 3方式工作方式與2方式基本相同,也具有自動(dòng)裝入時(shí)間常數(shù)(計(jì)數(shù)初值)的功能,不同之處在于:不同之處在于:(1)工作在3方式,引腳OUT輸出的不是一個(gè)時(shí)鐘周期的負(fù)脈 沖 , 而是占空比為1:1或近似1:1的方波;當(dāng)計(jì)數(shù)初值為偶 數(shù)時(shí),輸出在前一半的計(jì)數(shù)過程中為高電平,在后一半的計(jì)數(shù) 過程中為低電平。(2)由于3方式輸出的波形是方波,并且具有自動(dòng)重裝計(jì)數(shù)初 值的功能,因此,8253一旦計(jì)數(shù)開始,就會在輸出端OUT輸出 連續(xù)不斷的方波。n=5n=5CLKCLKWRWROUTOUT 2 2n=4n=42 22 22 2圖圖3.7 82533.7 8253的的3 3方式時(shí)序波形方式時(shí)

16、序波形OUTOUT WRWR3 32 23 32 2 5. 4方式方式-單次負(fù)脈沖輸出(軟件觸發(fā))單次負(fù)脈沖輸出(軟件觸發(fā)) 4方式工作方式是一種由軟件啟動(dòng)的計(jì)數(shù)方式, 即由寫入計(jì)數(shù)初值來觸發(fā)計(jì)數(shù)器開始工作。門控信GATE 為高電PIN平時(shí),允許計(jì)數(shù)器工作。 例4:使計(jì)數(shù)器T1工作方式4方式,進(jìn)行8位二進(jìn)制計(jì)數(shù), 并 且只裝入高8位計(jì)數(shù)值。其初始化程序段為: MOV DX,307H ;命令口 MOV AL,00110100B ;方式字 OUT DX,AL MOV DX,304H ;T2數(shù)據(jù)口 MOV AL,BYTEL ;低8位計(jì)數(shù)值 OUT DX,AL 6. 5方式方式-單次負(fù)脈沖輸出(硬件觸

17、發(fā))單次負(fù)脈沖輸出(硬件觸發(fā)) 5方式工作特點(diǎn)是由GATE上升沿觸發(fā)計(jì)數(shù)器開始工作。 在5方式工作方式下,當(dāng)寫入計(jì)數(shù)初值后,計(jì)數(shù)器并不立 即開始計(jì)數(shù),而要由門控信號的上升沿啟動(dòng)計(jì)數(shù)。30組1 在計(jì)數(shù)過程中(或者計(jì)數(shù)結(jié)束后),如果門控再次出現(xiàn)上 升沿,計(jì)數(shù)器將從原裝入的計(jì)數(shù)初值重新計(jì)數(shù)。30組2CLKWROUT n=5GATE543210圖3.9 8253的5方式時(shí)序波形OUT GATE54543210七七. 8253-/8254-2的應(yīng)用舉例的應(yīng)用舉例 一、計(jì)數(shù)器-日時(shí)鐘1.要求設(shè)計(jì)一個(gè)計(jì)一天時(shí)間的日計(jì)時(shí)器-日時(shí)鐘。2.分析利用8253工作在3方式下,其輸出為一系列方波,這種方波的周期是準(zhǔn)確的

18、,可以作為定時(shí)單位。比如,選用8253的計(jì)數(shù)器0,讓其工作在3方式,計(jì)數(shù)初值設(shè)置為最大值-65536。當(dāng)輸入時(shí)鐘CLK0=1.1931816MHz,則輸出方波的頻率為 fouto=1.1931816MHz/65536=18.2Hz輸出方波的周期為: Touto=1/18.21000ms=54.945ms 1天天2460601000ms/54.945ms=1573040(計(jì)時(shí)單位)。 若以十六進(jìn)制表示,則為 01800B0H個(gè)計(jì)時(shí)單位個(gè)計(jì)時(shí)單位(占用占用4個(gè)存儲單元)個(gè)存儲單元)。 為存放每次中斷以后加1所得到的計(jì)數(shù)值,使用4個(gè)存儲字節(jié),其對應(yīng)雙字變量分別為: TIMER-LO(40H:6CH)

19、 和 TIMER-HI (40H:6EH)。 同理可得:1小時(shí)包含小時(shí)包含65543個(gè)計(jì)時(shí)單位,個(gè)計(jì)時(shí)單位, 1分鐘包含分鐘包含1092個(gè)計(jì)時(shí)單位,個(gè)計(jì)時(shí)單位, 1秒鐘包含秒鐘包含18.2個(gè)計(jì)時(shí)單位個(gè)計(jì)時(shí)單位。 使用中斷程序?qū)τ?jì)時(shí)時(shí)間單元進(jìn)行加1累加,中斷請求通過8259的IR0引入。 3.設(shè)計(jì)設(shè)計(jì)(1)硬件設(shè)計(jì))硬件設(shè)計(jì)日時(shí)鐘的硬件主要由定時(shí)日時(shí)鐘的硬件主要由定時(shí)/計(jì)數(shù)器計(jì)數(shù)器8254和中斷控制器和中斷控制器8259A構(gòu)成,共工作原理框圖如圖構(gòu)成,共工作原理框圖如圖3.10所示。該圖還所示。該圖還畫出了在日時(shí)鐘運(yùn)行時(shí)對內(nèi)存畫出了在日時(shí)鐘運(yùn)行時(shí)對內(nèi)存RAM的使用情況。的使用情況。8254825

20、4OUT0GATE0CLK08259A8259AIRQ0T=54.9msIR0INTD07INTA總線控制器S2S1S0D QQ狀態(tài)=000CPPCLK+5VCPUCPUINTRD07S2S1S0MFEA5HF000HTIMER-LOTIMER-HI存儲器TIMER-INT(中斷程序)00:0000:20H00:23H40:6CH40:6EH向量向量指針時(shí)間值+1并保存圖3.10 日時(shí)鐘運(yùn)行原理示意圖2.3863632MHZ中斷號8加1 到24小時(shí)?TIMER-OFL置1并使日時(shí)鐘復(fù)位0點(diǎn)0 TIMER-LO0 TIMER-HIYN開中斷有關(guān)寄存器進(jìn)棧TIMER-LO加1到0?TIMER-HI

21、加1NY圖3.11 日時(shí)鐘中斷8的中斷服務(wù)程序流程圖(2)軟件設(shè)計(jì)AA調(diào)用定時(shí)報(bào)時(shí)中斷ICH輸出結(jié)束中斷的命令EOI到8259A有關(guān)寄存器出棧中斷返回關(guān)閉軟驅(qū)電機(jī)計(jì)算值減1 減至0?電機(jī)運(yùn)行狀態(tài)清零輸出命令關(guān)閉電機(jī)NA 二、穩(wěn)定延時(shí) 三、發(fā)聲器 1.要求 利用定/計(jì)數(shù)器8253發(fā)600Hz的長/短音。按任意鍵,開始 發(fā)聲;按ESC鍵,停止發(fā)聲。8253的輸入時(shí)鐘CLK的頻率 1.19318MHz。 2.分析 3.設(shè)計(jì) (1)硬件設(shè)計(jì) (2)軟件設(shè)計(jì) 發(fā)聲程序由主程序和子程序組成。主程序流程圖如圖3.13所 示。.發(fā)長音(BL=6)(CALL SSP)發(fā)短音(BL=1)(CALL SSP)按下E

22、sc鍵?關(guān)閉揚(yáng)聲器返回DOS結(jié)束YYN開始8253初始化計(jì)算并裝入初值關(guān)閉揚(yáng)聲器按下任意鍵?N發(fā)長/短音的程序?yàn)椋篊ODE SEGMENT ASSUME CS:CODE,DS:CODE ORG 100H START: JMP BEGIN LONG1 EQU 6 SHORT1 EQU 1 BEGIN: MOV AX,CODE MOV CS,AX MOV DS,AX ;初始化初始化8253 MOV AL,10110110B ; 方式命令 OUT 43H,AL ;命令口 ;裝計(jì)數(shù)初值 MOV AX,1983 ;輸出600Hz的計(jì) 數(shù)初值 OUT 42H,AL ;先裝低字節(jié) MOV AL,AH ; 后

23、裝高字節(jié) OUT 42H,ALv ; 關(guān)閉揚(yáng)聲器v IN AL,61H ; 讀入8255的PB口原輸出值v AND AL,0FCH ; 置PB0和PB1為零,關(guān)閉GATE2和與門v OUT 61H,ALv ; 查任意鍵,啟動(dòng)發(fā)聲器 WAIT1: MOV AH, 0BH ; 功能調(diào)用v INT 21Hv CMP AL,0H ;無按按下,發(fā)出長音v JE WAIT ;有鍵按下,發(fā)出長音v v ;發(fā)長音v LOP: MOV BL,LONG1 ;長音入口參數(shù)v CALL SSP ;;調(diào)發(fā)聲子程序v ;查Esc鍵,停止發(fā)聲v MOV AH,0BH ;功能調(diào)用v INT 21H v CMP AL,0Hv

24、JE CONTINUE1v MOV AH,08H ;有鍵銨下,檢測是Esc鍵?v INT 21Hv CMP AL,1BHv JE QUIT ;是,停止發(fā)聲,并退出v ;發(fā)短音CONTINUE1: MOV BL,SHORT1 ;短音入口參數(shù) CALL SSP ;調(diào)用發(fā)聲子程序 JMP LOP ;循環(huán) ;關(guān)閉揚(yáng)聲器,并退出 QUIT: IN AL, 61H ;停止發(fā)聲 MOV AH,AL AND AL,0FCH OUT 61H,AL MOV AL,AH MOV AX,4C00H ;退出,返回 DOS INT 21H SUB CX,CX ;設(shè)CX的值為216 ;發(fā)聲子程序SSP PROC NEAR

25、IN AL,61H ;讀取PB口的原值 OR AL,03H ;置PB0和PB1為高,打 開GATE2與門 OUT 61H,AL ;開始發(fā)聲 ;延時(shí) L: LOOP Lv DEC BL ;BL為子程序的入口件v JNZ L v RET v SSP ENDPv CODE ENDSv END START四、波特率時(shí)鐘發(fā)生器四、波特率時(shí)鐘發(fā)生器 1.要求設(shè)計(jì)一個(gè)波特率時(shí)鐘發(fā)生器,其輸入時(shí)鐘CLK=1.19318Mz,波特率因子factor=16,輸出的波特率為8檔,它們分別是110b/s、 150b/s、 300b/s、 600b/s、1200 b/s、2400b/s、4800b/s、9600b/s。

26、要求利用人-機(jī)對話方式選擇波特率。按Esc鍵,退出。 2. 分析 發(fā)送時(shí)鐘 TxC=BaudFactor Tc = C L K / B a ud F a c t o r = C L K / B F (3.2)3.設(shè)計(jì)(1)硬件設(shè)計(jì) 波特率時(shí)鐘發(fā)生器的硬件包括定時(shí)/計(jì)數(shù)器8253、并行接口芯片8255A及I/O端口地址譯碼電路等。(2)軟件編程 計(jì)算出題目中要求的8檔波特率的定時(shí)常數(shù),分別為678H、497H、249H、124H、62H、31H、16H、8H。其次,設(shè)計(jì)查表法的波特率時(shí)鐘發(fā)生器程序流程圖,如圖3.15所示。 DATA SEGNENT TC-TABLE DW 678 ;0=110b

27、/s ,定時(shí)常數(shù)表v DW 497 ;1= 150b/s v DW 249 ;2= 300b/sv DW 124 ;3= 600b/sv DW 62 ;4= 1200b/sv DW 31 ;5= 2400b/sv DW 16 ;6= 4800b/sv DW 8 ;7= 9600b/sDATA ENDS TEMP DB(?) MES DB NOW BEGIN TO GENERATE BAUD-RATES CLK!,0DH,0AH DB HTP ESC TO QUIT !,0DH,OAH,$ INPUR-MES DB 0:110 1:150 2:300 3:600 4:1200,0DH,0AH ,

28、$ DB 5:2400 6:4800 7:9600 ,0DH,0AH, $ ERROR-MES DB INPUT ERROR! TRY AGAIN PLEASE!,0DH,0AH, $CODE SEGMENT ASSUME CS:CODE,DS:DATAOK:MOV AX,CODE MOV CS,AX MOV DX,307H ;8253命令口 MOV AL,0B6H ;8253方式命令 OUT DX,AL MOV AL,0CH ;使PC6=0,關(guān)8253 OUT DX,AL MOV AX,DATA MOV DS,AX LEA DX,INPUT-MES ;提示選擇波特率 MOV AH,09H I

29、NT 21HINPUT:MOV AH,08H INT 21H CMP AL,0 ;選擇波特率是否正確? JB ERROR ;不正確,則轉(zhuǎn)出錯(cuò)處理 CMP AL,7 開始8253初始化8255初始化關(guān)閉8253 提示選擇波特率選擇波特率選擇有錯(cuò)?YN波特率代號temp查表獲取計(jì)數(shù)初值,并裝入8253(CALL Load)有ESC鍵按下?關(guān)8253返回DOS結(jié)束圖3.15 波特率時(shí)鐘發(fā)生器程序流程圖NYv JA ERRORv SUB AL,30H ;正確v MOV TEMP,AL ;則保存波特率代號v CALL LOAD ;裝入計(jì)數(shù)初值v JMP BEGIN ;啟動(dòng)8253波特率時(shí)鐘發(fā)生器ERRO

30、R:MOV AH,9H ;出錯(cuò)處理 LEA DX,ERROR-MES INT 21H JMP INPUT ;重新選擇波特率BEGIN:LEA DX,MES ;顯示提示信息 MOV AH,09H INT 21HSTART:MOV DX,303H ;8255命令口 MOV AL,0DH ;使PC6=1,啟動(dòng)8253, 產(chǎn)生波特率時(shí)鐘 OUT DX,AL NOPLOP: MOV AH,0BH ;檢測有鍵按下? INT 21Hv CMP AL,00v JE LOP ;無,等待v MOV AH,08H;有,檢測是否是Esc鍵v INT 21Hv CMP AL,1BHv JE QUIT;是,則退出v JMP LOP ;不是,循環(huán)查Esc鍵vQUIT:MOV DX,303Hv MOV AL,0CH;關(guān)閉8253v OUT DX,ALv MOV AX,4C00H;退出,返回DOSv INT 21H LOAD PROC NEAR PUSH AX PUSH DX PUSH SI MOV DL,TEMP SHL DL,1;波形代號乘2,存 放在DX中 AND DX,0FH ;只取DX的低4位 MOV SI,OFFSET TC-TABLE

溫馨提示

  • 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

提交評論