常用數(shù)字接口電路課件_第1頁
常用數(shù)字接口電路課件_第2頁
常用數(shù)字接口電路課件_第3頁
常用數(shù)字接口電路課件_第4頁
常用數(shù)字接口電路課件_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

常用數(shù)字接口電路

概述

通過本章的學(xué)習(xí),了解可編程接口芯片的一些基本概念,掌握兩種通用的可編程接口芯片——可編程并行接口8255A和可編程定時(shí)器/計(jì)數(shù)器8253-5的組成、功能和應(yīng)用。本章先介紹數(shù)字接口電路的結(jié)構(gòu)和引腳功能,再介紹數(shù)字接口電路的的工作方式,最后給出實(shí)際應(yīng)用舉例。這種數(shù)字接口電路的學(xué)習(xí)方法也適用于數(shù)字接口電路。7.1可編程并行接口芯片8255A8255A是Intel86系列微處理機(jī)的配套并行接口電路(NMOS)芯片,又稱可編程外圍接口(ProgrammablePeripheralInterface,PPI),它可為86系列CPU與外部設(shè)備之間提供并行輸入/輸出通道。80X86系統(tǒng)中常采用8255A作為打印機(jī)、鍵盤、揚(yáng)聲器等外設(shè)的接口電路。本章首先介紹可編程并行I/O接口芯片8255A的結(jié)構(gòu)和基本工作方式,然后以8255A與打印機(jī)、鍵盤等外設(shè)的接口為例,說明8255A具體應(yīng)用。7.1.18255A的內(nèi)部結(jié)構(gòu)和引腳功能8255A芯片采用40腳雙列直插封裝,單一+5V電源,全部輸入/輸出均與TTL電平兼容。它有三個(gè)輸入/輸出端口(端口A、端口B、端口C)。每個(gè)端口都可通過編程設(shè)定為輸入端口或輸出端口,芯片還有為輸入/輸出提供的控制聯(lián)絡(luò)信號(hào)、端口尋址信號(hào)等。8255A由4部分組成,其結(jié)構(gòu)框圖和引腳圖見圖7.1所示。7.1.18255A的內(nèi)部結(jié)構(gòu)和引腳功能7.1.18255A的內(nèi)部結(jié)構(gòu)和引腳功能數(shù)據(jù)總線緩沖器

數(shù)據(jù)總線緩沖器是一個(gè)三態(tài)雙向8位數(shù)據(jù)緩沖器,它是8255A與8086CPU之間的數(shù)據(jù)接口,CPU和8255A通過數(shù)據(jù)總線緩沖器輸入輸出的數(shù)據(jù),CPU輸出的控制字以及外設(shè)的狀態(tài)信息都是通過這個(gè)緩沖器進(jìn)行傳送。7.1.18255A的內(nèi)部結(jié)構(gòu)和引腳功能三個(gè)并行輸入/輸出端口端口A(PA口)包含一個(gè)8位數(shù)據(jù)輸出鎖存器/緩沖器和一個(gè)8位數(shù)據(jù)輸入鎖存器,輸入輸出數(shù)據(jù)均受到鎖存。端口B(PB口)和C(PC口)都包含一個(gè)8位數(shù)據(jù)輸入緩沖器和一個(gè)8位的數(shù)據(jù)輸出鎖存器/緩沖器,輸出數(shù)據(jù)能鎖存,輸入數(shù)據(jù)不鎖存。通常PA口和PB口用作輸入/輸出的數(shù)據(jù)端口,PC口可分成兩個(gè)4位端口,分別定義為輸入或輸出端口,還可定義為控制、狀態(tài)端口,配合PA口和PB口工作。7.1.18255A的內(nèi)部結(jié)構(gòu)和引腳功能

A組和B組控制電路

A組、B組的控制寄存器,接收來自數(shù)據(jù)總線的控制字,并根據(jù)控制字確定各端口的工作狀態(tài)和工作方式。端口A與端口C的高4位(PC7~PC4)構(gòu)成A組,由A組控制部件實(shí)現(xiàn)控制功能,端口B與端口C的低4位(PC3~PC0)構(gòu)成B組,由B組控制部件實(shí)現(xiàn)控制功能,接收來自讀/寫控制部件的命令和CPU通過數(shù)據(jù)總線(D7~D0)送來的控制字,并根據(jù)它們來定義各個(gè)端口的操作方式。7.1.18255A的內(nèi)部結(jié)構(gòu)和引腳功能讀/寫控制邏輯

這是8255A內(nèi)部完成讀/寫控制功能的部件,它與CPU的地址總線及有關(guān)的控制信號(hào)相連,接收CPU的控制命令,并根據(jù)它們向片內(nèi)各功能部件發(fā)出操作命令。8255A的引腳功能8255A采用40條引腳的雙列直插式(DIP,DualInlinepackage封裝,其引腳信號(hào)有::片選信號(hào)(輸入):讀信號(hào)(輸入):寫信號(hào)(輸入)7.1.18255A的內(nèi)部結(jié)構(gòu)和引腳功能A1、A0:片內(nèi)寄存器選擇信號(hào)(輸入)D7~D0:與CPU側(cè)連接的數(shù)據(jù)線(雙向PA7~PA0:A口外設(shè)數(shù)據(jù)線(雙向)PB7~PB0:B口外設(shè)數(shù)據(jù)線(雙向)PC7~PC0:C口外設(shè)數(shù)據(jù)線(雙向)RESET:復(fù)位信號(hào)(輸入)控制信號(hào),,以及A1、A0的組合可以實(shí)現(xiàn)對(duì)三個(gè)數(shù)據(jù)口(PA、PB、PC)和控制口(控制寄存器)的讀寫操作,如表7-1所示。

7.1.18255A的內(nèi)部結(jié)構(gòu)和引腳功能7.1.28255A的工作方式

8255A各端口共有3種基本工作方式:方式0——基本輸入/輸出方式;方式1——選通輸入/輸出方式;方式2——雙向傳送方式。端口A可處于3種工作方式(方式0,方式1或方式2),端口B只可處于兩種方式(方式0或方式1),端口C常常被分成高4位和低4位兩部分,可分別用來傳送數(shù)據(jù)或控制信息。7.1.28255A的工作方式方式0——基本的輸入輸出A口、B口、C口均可以工作在方式0,方式0是一種基本輸入輸出工作方式,此方式?jīng)]有專門的應(yīng)答信號(hào)線,常用于無條件傳送,輸出有鎖存,輸入只有緩沖能力而無鎖存功能。在方式0時(shí),不能采用中斷的方法與CPU交換信息,但可以采用應(yīng)答查詢方式與CPU交換信息。7.1.28255A的工作方式方式1

8255A的工作方式1被稱作選通輸入/輸出方式,在這種工作方式下,數(shù)據(jù)輸入/輸出操作要在選通信號(hào)控制下完成,主要是為中斷應(yīng)答式而設(shè)計(jì)。

方式1輸入——選通輸入輸出

方式1操作使端口A或端口B作為鎖存輸入設(shè)備工作。端口C也可按方式1操作使用,但不是對(duì)數(shù)據(jù),而是對(duì)控制信號(hào),或當(dāng)端口A或端口B為選通輸入端口時(shí)的握手信號(hào)。如圖7.2所示。7.1.28255A的工作方式7.1.28255A的工作方式選通信號(hào),由外設(shè)輸入,低電平有效,表示外設(shè)輸入數(shù)據(jù)已準(zhǔn)備好,同時(shí)把輸入的數(shù)據(jù)信號(hào)送入相應(yīng)的數(shù)據(jù)鎖存器。IBF輸入緩沖器滿信號(hào),是8255A向外設(shè)輸出的響應(yīng)信號(hào),高電平有效。當(dāng)CPU從8255A讀取數(shù)據(jù)后,的上升沿使IBF復(fù)位成低電平,向外設(shè)表明端口數(shù)據(jù)被CPU取走。INTR中斷請(qǐng)求信號(hào),高電平有效。當(dāng)、IBF和INTE都為高電平時(shí),表明數(shù)據(jù)鎖存器中已寫入數(shù)據(jù),使INTR為高電平輸出。CPU響應(yīng)中斷,在的控制下從8255A中讀取數(shù)據(jù)時(shí),的下降沿使INTR復(fù)位。INTE中斷允許信號(hào),它是通過端口PC4(端口A)或PC2(端口B)的位的置/復(fù)位來控制。只有當(dāng)它們置“1”時(shí),中斷請(qǐng)求信號(hào)才能送出。7.1.28255A的工作方式方式1輸出方式1輸出時(shí),每個(gè)口與CPU及外設(shè)的連接如圖7.3所示。7.1.28255A的工作方式輸出緩沖器滿信號(hào),低電平有效。由8255A向外設(shè)輸出,當(dāng)其有效時(shí),表示CPU已將數(shù)據(jù)輸出到指定的端口,通知外設(shè)可將數(shù)據(jù)取走。外設(shè)應(yīng)答信號(hào),低電平有效。由外設(shè)輸入,有效時(shí)表示8255A數(shù)據(jù)已經(jīng)為外設(shè)所接收。INTR:中斷請(qǐng)求信號(hào),高電平有效。當(dāng)、和INTE都為高電平時(shí),表明數(shù)據(jù)鎖存器中的數(shù)據(jù)已被外設(shè)取走,使INTR為高電平輸出。CPU響應(yīng)中斷,在的控制下向8255A中寫數(shù)據(jù)時(shí),的上升沿使INTR復(fù)位。INTE中斷允許信號(hào),通過端口PC6(端口A)或PC2(端口B)的位的置/復(fù)位來控制。只有當(dāng)它們置“1”時(shí),中斷請(qǐng)求信號(hào)才能送出。PC4、PC5位可設(shè)置為輸入或輸出數(shù)據(jù)用。7.1.28255A的工作方式方式2——雙向選通輸入輸出

方式2只允許A組采用,此時(shí)端口A變?yōu)殡p向,允許數(shù)據(jù)在同一組8條線上發(fā)送和接收。當(dāng)A口工作在方式2時(shí),B口可以工作在方式0或方式1,方式2的結(jié)構(gòu)圖如圖7.4所示。7.1.28255A的工作方式輸出緩沖器滿信號(hào),向外設(shè)輸出,低電平有效,表示CPU已將數(shù)據(jù)送到端口A。來自外設(shè)的應(yīng)答信號(hào),由外設(shè)輸入,低電平有效,有效時(shí)啟動(dòng)A口的三態(tài)輸出緩沖器送出數(shù)據(jù)。數(shù)據(jù)選通輸入信號(hào),由外設(shè)輸入,低電平有效,同時(shí)將輸入數(shù)據(jù)送入A口鎖存。IBF輸入緩沖器滿信號(hào),向外設(shè)輸出,高電平有效,表明數(shù)據(jù)已送入A口鎖存器。INTR:中斷請(qǐng)求信號(hào),高電平有效,輸入輸出都用此信號(hào)向CPU申請(qǐng)中斷。INTE:中斷允許信號(hào)(INTE1和INTE2)。高電平有效,分別由PC6和PC4置/復(fù)位來控制。7.1.38255A的初始化

使用8255A時(shí),首先要由CPU對(duì)8255A寫入控制命令字,即初始化8255A。8255A有2種控制命令字,方式選擇控制字和C口置位/復(fù)位控制字,它們共用同一個(gè)端口地址,用D7位作為標(biāo)志位來區(qū)分。方式選擇控制字(D7=1)

格式如圖7.5所示。通過定義方式選擇控制字可將3個(gè)端口定義為各種不同方式的組合。7.1.38255A的初始化7.1.38255A的初始化【例7-1】系統(tǒng)要求8255A各個(gè)端口工作在如下方式:A口方式0、輸入端口;B口方式0、輸出端口;C扣高4位為輸出口,低4位為輸入口。此時(shí)方式控制字的格式為91H,設(shè)8255A控制寄存器的地址號(hào)為D6H,則其初始化程序如下:MOVAL,91H;CPU將控制宇91H經(jīng)AL輸出OUT0D6H,AL;送至8255A控制寄存器中當(dāng)8255A控制寄存器為16位地址號(hào)時(shí),CPU對(duì)8255A輸出控制字,應(yīng)采用寄存器間接尋址的輸出指令。如控制寄存器地址號(hào)為300H時(shí),則初始化程序?yàn)椋篗OVDX,0300H;控制寄存器地址號(hào)存入DX中MOVAL,91H;控制字經(jīng)AL送控制寄存器OUTDXAL7.1.38255A的初始化C口置位/復(fù)位控制字(D7=0)

圖7.6是C口置位/復(fù)位控制字各位的功能規(guī)定。7.1.38255A的初始化【例7-2】C口PC6位實(shí)現(xiàn)置0操作時(shí),此時(shí)控制字為00001100B(0CH)。故對(duì)PC6位置0操作的程序?yàn)椋篗OVAL00001100B;設(shè)置PC6=0的控制字OUT0D6HAL;控制字送8255A控制寄存器中對(duì)PC7位置1的程序?yàn)椋篗OVAL0001111BOUT0D6HAL同理,當(dāng)?shù)刂诽?hào)為16位時(shí),應(yīng)采用間接尋址的輸出指令7.1.4

8255A的應(yīng)用舉例用方式0與打印機(jī)接口

目前打印機(jī)一般采用并行接口Centronics標(biāo)準(zhǔn),其主要信號(hào)與傳送時(shí)序如圖7.7。打印機(jī)接收主機(jī)傳送數(shù)據(jù)的過程是這樣的:當(dāng)主機(jī)準(zhǔn)備好輸出打印的一個(gè)數(shù)據(jù)時(shí),通過8255A把數(shù)據(jù)送給打印機(jī)接口的數(shù)據(jù)引腳DATA0~DATA7,同時(shí)送出一個(gè)數(shù)據(jù)選通信號(hào)STROBE給打印機(jī)。打印機(jī)收到該信號(hào)后,把數(shù)據(jù)鎖存到內(nèi)部緩沖區(qū),同時(shí)在BUSY信號(hào)線上發(fā)出忙信號(hào)。待打印機(jī)處理好輸入數(shù)據(jù)時(shí),打印機(jī)撤消忙信號(hào),同時(shí)向主機(jī)送出一個(gè)響應(yīng)信號(hào)ACK。主機(jī)根據(jù)信號(hào)BUSY或信號(hào)ACK決定是否輸出下一個(gè)數(shù)據(jù)。7.1.4

8255A的應(yīng)用舉例7.1.4

8255A的應(yīng)用舉例本例中,CPU與8255A采用查詢方式輸出數(shù)據(jù)。端口A設(shè)置為方式0,輸出打印數(shù)據(jù),端口C的PC7產(chǎn)生負(fù)脈沖選通信號(hào),PC2連接打印機(jī)的BUSY信號(hào)查詢其狀態(tài)。假設(shè)8255A的A、B、C口的I/O地址為FFF8H、FFFAH和FFFCH,控制端口地址為FFFEH。;初始化程序段

MOVDX,0FFFEHMOVAL,81H;A口方式0輸出,C口上半部輸出,;下半部輸入

OUTDX,AL;輸出工作方式字MOVAL,0FH;C口的置位/復(fù)位控制字,;使PC7=1,即置STROBE=1OUTDX,ALPUSHAX;輸出打印數(shù)據(jù)子程序,打印數(shù)據(jù)7.1.4

8255A的應(yīng)用舉例

PUSHDXPM:MOVDX,0FFFCHINAL,DX;查詢PC2ANDAL,04H;BUSY=0?JNZPM;忙,則等待,D2=1表示忙

MOVDX,0FFF8H;不忙,則輸出數(shù)據(jù)

MOVAL,AHOUTDX,ALMOVDX,0FFFEHMOVAL,0EH;使PC7=0,即置

STROBE=0OUTDX,ALNOP;適當(dāng)延時(shí),產(chǎn)生一定寬度的低電平

NOPMOVAL,0FH;使PC7=1,置STROBE=1OUTDX,ALPOPDXPOPAXRET7.1.4

8255A的應(yīng)用舉例用方式1與打印機(jī)接口8255A的端口A工作于選通輸出方式,PC7作為輸出信號(hào),PC6作為輸入信號(hào),而PC3作為INTRA輸出信號(hào);另外,可用程序控制INTEA(PC6),決定是否采用中斷方式。打印機(jī)接口的時(shí)序與8255A的選通輸出方式的時(shí)序類似,但略有差別,用單穩(wěn)電路74LS123即可滿足雙方的時(shí)序要求,見圖7.8。7.1.4

8255A的應(yīng)用舉例7.1.4

8255A的應(yīng)用舉例假設(shè)8255A的A、B、C口的I/O地址為FFF8H、FFFAH和FFFCH。控制端口的地址為FFFEH。以下為采用選通方式輸出緩沖區(qū)BUF中的打印字符的子程序,輸出的字節(jié)數(shù)為M。PRINTPROCPUSHAX;保護(hù)寄存器

PUSHBXPUSHCXPUSHDXMOVDX,0FFFEH;設(shè)定A口為選通輸出方式

MOVAL,0A0H7.1.4

8255A的應(yīng)用舉例OUTDX,ALMOVAL,0CH;使INTEA(PC6)為0,禁止中斷

OUTDX,ALMOVCX,M;打印字節(jié)數(shù)送CXMOVBX,OFFSETBUF;取緩沖區(qū)首址送BXPRINT1:MOVAL,[BX];取一個(gè)數(shù)據(jù)

MOVDX,0FFF8HOUTDX,AL;從A口輸出

MOVDX,0FFFCHPRINT2:INAL,DX;讀C口

TESTAL,80H;檢測(cè)

EMBEDEquation.3

A(PC7)為1否?

JZPRINT2;為0,則繼續(xù)檢測(cè)

INCBX;為1,說明數(shù)據(jù)已輸出

LOOPPRINT1;準(zhǔn)備取下一個(gè)數(shù)據(jù)輸出

POPDX;打印結(jié)束,恢復(fù)寄存器

POPCXPOPBXPOPAXRET;返回PRINTENDP7.1.4

8255A的應(yīng)用舉例8255A與鍵盤接口7.1.4

8255A的應(yīng)用舉例

如圖7.9是1個(gè)矩陣式鍵盤,這個(gè)矩陣分為3行3列,如果鍵4按下,則第1行和第1列線接通而形成通路。如果第1行線接低電平,則鍵4的閉合,會(huì)使第1列線也輸出低電平。矩陣式鍵盤工作時(shí),就是按行線和列線的電平來識(shí)別閉合鍵的。行反轉(zhuǎn)法是識(shí)別鍵盤的常用方法。它的原理是:將行線接一個(gè)數(shù)據(jù)端口,先讓它工作在輸出方式;將列線也接到一個(gè)數(shù)據(jù)端口,先讓它工作在輸入方式。程序使CPU通過輸出端口往各行線上送低電平,然后讀入列線值。如果此時(shí)有某鍵被按下,則必定會(huì)使某列線值為0。接著,程序再對(duì)兩個(gè)端口進(jìn)行方式設(shè)置,使接行線的端口改為輸入方式,接列線的端口改為輸出方式。并且,將剛才讀得的列值從列線所接端口輸出,再讀取行線的輸入值,那么,閉合鍵所在的行線值必定為0。這樣,當(dāng)一個(gè)鍵被按下時(shí),必定可以讀得一對(duì)唯一的行值和列值。因此,要實(shí)現(xiàn)上述行反轉(zhuǎn)法,行、列線所接的數(shù)據(jù)端口應(yīng)能夠改變輸入、輸出方式,而8255A的3個(gè)端口正好具有這個(gè)功能。7.1.4

8255A的應(yīng)用舉例7.1.4

8255A的應(yīng)用舉例

為了查找鍵代碼,鍵盤程序設(shè)計(jì)時(shí),可將各個(gè)鍵對(duì)應(yīng)的行、列值放在一個(gè)表中,程序通過查表來確定哪一個(gè)鍵被按下,進(jìn)而在另一個(gè)表中找到這個(gè)鍵的代碼。如果遇到多個(gè)鍵同時(shí)閉合的情況,則輸入的行值或者列值中一定有一個(gè)以上的0,而由程序預(yù)選建立的鍵值表中不會(huì)有此值,因而可以判為重鍵而重新查找。所以,用這種方法可以方便地解決重鍵問題。7.1.4

8255A的應(yīng)用舉例KEY1:…;設(shè)置行線接輸出端口ROWPORT,列線接輸入端口COLPORT,

并判斷是否有鍵按下KEY2:MOVAL,00HMOVDX,ROWPORTOUTDX,AL;行線全為低

MOVDX,COLPORTINAL,DX;讀取列值

CMPAL,0FFHJZKEY2;無閉合鍵,循環(huán)等待

PUSHAX;有閉合鍵,保存列值PUSHAX…;設(shè)置行線接輸入端口ROWPORT,列線接輸出端口COLPORTMOVDX,COLPORTPOPAXOUTDX,AL;輸出列值

MOVDX,ROWPORTINAL,DX;讀取行值POPBX;結(jié)合行列值,此時(shí)

MOVAH,BL;AL=行值,AH=列值7.1.4

8255A的應(yīng)用舉例MOVSI,OFFSETTABLE;TABLE為鍵值表MOVDI,OFFSETCHAR;CHAR為鍵對(duì)應(yīng)的代碼

MOVCX,64;鍵的個(gè)數(shù)KEY3:CMPAX,[SI];與鍵值比較JZKEY4;相同,說明查到

INCSI;不相同,繼續(xù)比較

INCSIINCDILOOPKEY3JMPKEY1;全部比較完,仍無相同,說明是重鍵KEY4:MOVAL,[DI];獲取鍵代碼送AL

;判斷按鍵是否釋放,沒有則等待

CALLDELAY;按鍵釋放,延時(shí)消除抖動(dòng)

;后續(xù)處理TABLEDW0FEFEH;鍵0的行列值(鍵值)DW0FDFEH;鍵1的行列值

DW0FBFEH;鍵2的行列值

;全部鍵的行列值CHARDB…

;鍵0的代碼

DB…

;鍵1的代碼

;全部鍵的代碼7.2可編程定時(shí)器/計(jì)數(shù)器8253-5微機(jī)控制系統(tǒng)中,經(jīng)常會(huì)提出這樣的要求:按一定的采樣周期對(duì)處理對(duì)象進(jìn)行采樣或定時(shí)檢測(cè)某些參數(shù)或在實(shí)時(shí)操作系統(tǒng)和多任務(wù)操作系統(tǒng)中,可以利用定時(shí)器產(chǎn)生的定時(shí)中斷進(jìn)行進(jìn)程調(diào)度;用計(jì)數(shù)器對(duì)外部事件計(jì)數(shù),即記錄外設(shè)提供的脈沖個(gè)數(shù),例如啤酒自動(dòng)生產(chǎn)線上對(duì)酒瓶的計(jì)數(shù)裝置等。因此,定時(shí)計(jì)數(shù)技術(shù)在計(jì)算機(jī)中具有極為重要的作用。計(jì)數(shù)器和定時(shí)器都由數(shù)字電路中的計(jì)數(shù)電路構(gòu)成。計(jì)數(shù)器記錄外設(shè)提供的具有一定隨機(jī)性的脈沖信號(hào)的個(gè)數(shù)。定時(shí)器記錄高精度晶振脈沖信號(hào)的個(gè)數(shù),只要保證計(jì)數(shù)脈沖的間隔相等,則計(jì)數(shù)值就代表了時(shí)間的流逝,因此可以輸出準(zhǔn)確的時(shí)間間隔。實(shí)現(xiàn)定時(shí)和計(jì)數(shù)有3種方法有:軟件定時(shí)、不可編程的硬件定時(shí)和可編程的定時(shí)。7.2可編程定時(shí)器/計(jì)數(shù)器8253-5不可編程的硬件定時(shí)/計(jì)數(shù)設(shè)計(jì)數(shù)字邏輯電路來實(shí)現(xiàn)計(jì)數(shù)或定時(shí)的要求,例如采用數(shù)字電路中的分頻器將系統(tǒng)時(shí)鐘進(jìn)行適當(dāng)?shù)姆诸l產(chǎn)生需要的定時(shí)信號(hào);也可以采用單穩(wěn)電路或簡(jiǎn)易定時(shí)電路(如常用的555定時(shí)器)由外接RC電路控制定時(shí)時(shí)間。若要改變計(jì)數(shù)/定時(shí)的要求,必須改變電路參數(shù),通用性和靈活性差,而且定時(shí)精度也不高。7.2可編程定時(shí)器/計(jì)數(shù)器8253-5軟件定時(shí)/計(jì)數(shù)根據(jù)CPU執(zhí)行每條指令需要一定的時(shí)間,重復(fù)執(zhí)行一些指令就會(huì)占用一段固定的時(shí)間,通過適當(dāng)?shù)剡x取指令和循環(huán)次數(shù)便很容易實(shí)現(xiàn)定時(shí)功能,這種方法不需要增加硬件,可通過編程來控制和改變定時(shí)時(shí)間,靈活方便,節(jié)省費(fèi)用,但要占用CPU的資源。7.2可編程定時(shí)器/計(jì)數(shù)器8253-5軟件定時(shí)/計(jì)數(shù)采用可編程定時(shí)計(jì)數(shù)器,其定時(shí)計(jì)數(shù)功能可由程序靈活地設(shè)定,定時(shí)值和定時(shí)范圍也可用程序確定和改變,而且具有多種工作方式,可以輸出多種控制信號(hào),計(jì)時(shí)也精確,穩(wěn)定,并行工作,不占用CPU的時(shí)間。本節(jié)介紹的8253-5PIT(programmableIntervalTimer)就是一種可編程定時(shí)器/計(jì)數(shù)器芯片。

7.2.18253-5的內(nèi)部結(jié)構(gòu)和引腳功能

8253是一片具有3個(gè)獨(dú)立通道的16位計(jì)數(shù)器/定時(shí)器芯片,使用單一+5V電源,24引腳雙列直插式封裝,如圖7.11所示。它有5種基本功能:3個(gè)獨(dú)立的16位計(jì)數(shù)器,最大計(jì)數(shù)范圍為1~65536;每個(gè)計(jì)數(shù)器均可以按二進(jìn)制或二—十進(jìn)制計(jì)數(shù),二進(jìn)制計(jì)數(shù)時(shí)最大計(jì)數(shù)值是65536,二—十進(jìn)制計(jì)數(shù)時(shí)最大計(jì)數(shù)值是10000,計(jì)數(shù)形式均為0000H;計(jì)數(shù)器速率可達(dá)2MHz;可編程6種不同的工作方式;所有輸入和輸出都與TTL兼容。7.2.18253-5的內(nèi)部結(jié)構(gòu)和引腳功能8253-5的內(nèi)部結(jié)構(gòu)8253-5由4部分組成,其結(jié)構(gòu)框圖和引腳圖見圖7.11。7.2.18253-5的內(nèi)部結(jié)構(gòu)和引腳功能數(shù)據(jù)總線緩沖器

數(shù)據(jù)總線緩沖器是一個(gè)三態(tài)雙向8位數(shù)據(jù)緩沖器,8根數(shù)據(jù)線D0~D7可直接掛在數(shù)據(jù)總線上。CPU通過8位數(shù)據(jù)總線D0~D7傳送如下信息:①向控制寄存器寫入控制字;②向某計(jì)數(shù)器寫入計(jì)數(shù)初值;③CPU通過緩沖器讀取計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值。讀/寫控制邏輯決定三個(gè)計(jì)數(shù)器和控制字寄存器中哪一個(gè)能進(jìn)行工作,并控制內(nèi)部總線上數(shù)據(jù)傳送的方向。 控制字寄存器控制字寄存器接收從CPU來的控制字,并由控制字的D7、D6位的編碼決定該控制字寫入哪個(gè)計(jì)數(shù)器的控制寄存器,控制寄存器只能寫入,不能讀出。

7.2.18253-5的內(nèi)部結(jié)構(gòu)和引腳功能計(jì)數(shù)器

8253有3個(gè)獨(dú)立的計(jì)數(shù)器通道,每個(gè)通道的結(jié)構(gòu)完全相同,如圖7.12所示。每一個(gè)通道有一個(gè)16位減法計(jì)數(shù)器,還有對(duì)應(yīng)的16位初值寄存器和輸出鎖存器。每個(gè)計(jì)數(shù)器都可以對(duì)其CLK輸入端輸入的脈沖按照二進(jìn)制或BCD碼從預(yù)置的初值開始進(jìn)行減1計(jì)數(shù),當(dāng)減至0時(shí),從OUT端輸出一個(gè)信號(hào)。計(jì)數(shù)的開始由軟件啟動(dòng)或硬件門控信號(hào)GATE控制。計(jì)數(shù)開始前寫入的計(jì)數(shù)初值存于初值寄存器。計(jì)數(shù)過程中,減法計(jì)數(shù)器的值不斷遞減,而初值寄存器中的初值不變。輸出鎖存器則用于寫入鎖存命令時(shí)鎖定當(dāng)前計(jì)數(shù)值。7.2.18253-5的內(nèi)部結(jié)構(gòu)和引腳功能7.2.18253-5的內(nèi)部結(jié)構(gòu)和引腳功能8253-5的引腳功能與CPU的接口信號(hào)①D0~D7——三態(tài)雙向數(shù)據(jù)線。與CPU數(shù)據(jù)總線相連,用于傳遞CPU與8253之間的數(shù)據(jù)信息、控制信息和狀態(tài)信息;② ——片選信號(hào),輸入,低電平有效;③ ——寫信號(hào),輸入,低電平有效,用于控制CPU對(duì)8253的寫操作,可與A1,A0信號(hào)配合以決定是寫入控制字還是計(jì)數(shù)初值;④ ——讀信號(hào),輸入,低電平有效。用于控制CPU對(duì)8253的讀操作,可與A1,A0信號(hào)配合讀取某個(gè)計(jì)數(shù)器的當(dāng)前計(jì)數(shù)值;⑤ A0,A1-——地址輸入線。用于8253內(nèi)部尋址的4個(gè)端口,即3個(gè)計(jì)數(shù)器和一個(gè)控制字寄存器。一般與CPU低位的地址線相連。7.2.18253-5的內(nèi)部結(jié)構(gòu)和引腳功能7.2.18253-5的內(nèi)部結(jié)構(gòu)和引腳功能與外部設(shè)備的接口信號(hào)

① CLK0(CLK1,CLK2)——時(shí)鐘脈沖輸入端,用于輸入定時(shí)脈沖或計(jì)數(shù)脈沖信號(hào)。CLK可以是系統(tǒng)時(shí)鐘脈沖,也可以是由其他脈沖源提供。8253規(guī)定加在CLK引腳的輸入時(shí)鐘周期不得小于380ns;② GATE0(GATE1,GATE2)——門控輸入端,用于外部控制計(jì)數(shù)器的啟動(dòng)或停止計(jì)數(shù)的操作。當(dāng)GATE為高電平時(shí),允許計(jì)數(shù)器工作,當(dāng)GATE為低電平時(shí),禁止計(jì)數(shù)器工作;③ OUT0(OUT1,OUT2-)-——計(jì)數(shù)輸出端。在不同工作方式中,當(dāng)計(jì)數(shù)器計(jì)數(shù)到0時(shí),OUT引腳上必輸出相應(yīng)的信號(hào)。7.2.28253-5的工作方式

8253是一種面向微機(jī)系統(tǒng)的專用接口芯片,它的每一個(gè)計(jì)數(shù)器都可以按照控制字的規(guī)定有6種不同的工作方式,每種工作方式中都有以下4種情況:① 寫入控制字后輸出的變化;② 正常計(jì)數(shù)的波形圖;③ 正在計(jì)數(shù)過程中改變門控信號(hào)GATE后對(duì)整個(gè)計(jì)數(shù)工作的影響;④ 正在計(jì)數(shù)的過程中改變計(jì)數(shù)值對(duì)整個(gè)計(jì)數(shù)工作的影響。7.2.28253-5的工作方式6種工作方式,不論用哪種工作方式,都遵守下面幾條基本規(guī)則:① 控制字寫入計(jì)數(shù)器時(shí),所有的控制邏輯電路立即復(fù)位,輸出端OUT進(jìn)入初始狀態(tài)(高電平或者低電平)。② 初始值寫入以后,要經(jīng)過一個(gè)時(shí)鐘上升沿和一個(gè)下降沿,計(jì)數(shù)執(zhí)行部件才開始進(jìn)行計(jì)數(shù)。7.2.28253-5的工作方式通常,在時(shí)鐘脈沖CLK的上升沿時(shí),門控信號(hào)GATE被采樣。對(duì)于一種給定的模式,對(duì)門控信號(hào)的觸發(fā)方式是有具體規(guī)定的,即或者用電平觸發(fā),或者用邊沿觸發(fā),在有的模式中,兩種方式都允許。具體講,8253的模式0、4中,門控信號(hào)為電平觸發(fā);模式1、5中,門控信號(hào)為上升沿觸發(fā);而在模式2、3中,既可用電平觸發(fā),也可用上升沿觸發(fā)。用電平觸發(fā)的情況下,在時(shí)鐘脈沖的上升沿對(duì)門控信號(hào)電平進(jìn)行采樣。在上升沿觸發(fā)的情況下,要用到8253計(jì)數(shù)器內(nèi)部的一個(gè)邊沿觸發(fā)器。邊沿觸發(fā)器在這里是專門用來檢測(cè)門控脈沖上升沿的,另一方面,計(jì)數(shù)器控制邏輯電路在每個(gè)時(shí)鐘脈沖的上升沿對(duì)邊沿觸發(fā)器采樣,以檢測(cè)邊沿觸發(fā)器是否被外部門控脈沖觸發(fā)過。所以,當(dāng)門控脈沖上升沿到來時(shí),使邊沿觸發(fā)器置位,在下一個(gè)時(shí)鐘脈沖上升沿時(shí),邊沿觸發(fā)器被采樣,采樣之后,又被復(fù)位。在邊沿觸發(fā)情況下,門控信號(hào)可以是很窄的脈沖,而且既可為正脈沖,也可為負(fù)脈沖,而在電平觸發(fā)的情況下,門控信號(hào)必須在下一個(gè)時(shí)鐘上升沿前保持高電平,否則,此門控信號(hào)將無效。在時(shí)鐘脈沖的下降沿,計(jì)數(shù)器作減1計(jì)數(shù)。0是計(jì)數(shù)器所能容納的最大初始值,因?yàn)樵谶@里,用二進(jìn)制時(shí),0相當(dāng)于216,用BCD碼時(shí),0相當(dāng)于104。7.2.28253-5的工作方式方式0—計(jì)數(shù)結(jié)束時(shí)中斷方式

方式0的工作時(shí)序如圖7.13(a)~(c)所示。圖中,CW表示8253的控制字,LSB表示低8位計(jì)數(shù)值。如果是16位計(jì)數(shù)方式,則還有高8位計(jì)數(shù)值MSB。計(jì)數(shù)過程

當(dāng)寫入方式0控制字后,OUT立即變?yōu)榈碗娖剑⑶以谟?jì)數(shù)過程中一直維持低電平。若GATE=1,寫入初值后,在信號(hào)上升沿之后的下一個(gè)CLK脈沖計(jì)數(shù)值裝入計(jì)數(shù)器,并開始計(jì)數(shù),計(jì)數(shù)器減到零時(shí),OUT輸出變?yōu)楦唠娖剑乙恢北3值皆撏ǖ乐匦卵b入計(jì)數(shù)值或重新設(shè)置工作方式為止,此信號(hào)可用于申請(qǐng)中斷。按方式0計(jì)數(shù)時(shí),計(jì)數(shù)器只計(jì)1遍。圖7.13(a)為方式0正常計(jì)數(shù)波形。7.2.28253-5的工作方式GATE信號(hào)的影響

GATE為高電平,允許計(jì)數(shù),GATE為低電平,暫停計(jì)數(shù),當(dāng)GATE重新為高電平時(shí)又恢復(fù)計(jì)數(shù)。圖7.13(b)為方式0時(shí)GATE信號(hào)對(duì)波形的影響。改變計(jì)數(shù)值對(duì)計(jì)數(shù)過程的影響

方式0是寫一次計(jì)數(shù)值,計(jì)一遍數(shù),計(jì)數(shù)器不會(huì)自動(dòng)重裝初值重新開始計(jì)數(shù)。如果在計(jì)數(shù)過程中寫入新的計(jì)數(shù)初值,則在寫入新值后的下一個(gè)時(shí)鐘下降沿計(jì)數(shù)器將按新的初值計(jì)數(shù),即新的初值是立即有效的。圖7.13(c)為方式0時(shí)計(jì)數(shù)過程中改變計(jì)數(shù)值對(duì)波形的影響。

7.2.28253-5的工作方式7.2.28253-5的工作方式

方式1—可重復(fù)觸發(fā)的單穩(wěn)態(tài)觸發(fā)器

方式1的工作時(shí)序如圖7.14(a)~(c)所示。由外部門控信號(hào)GATE上升沿觸發(fā),使輸出端變?yōu)榈碗娖剑a(chǎn)生一單拍負(fù)脈沖信號(hào),脈沖寬度由計(jì)數(shù)值決定,波形如單穩(wěn)態(tài)觸發(fā)器的波形。計(jì)數(shù)過程

寫入控制字后,OUT輸出為高電平。寫入計(jì)數(shù)初值N后,計(jì)數(shù)器并不開始計(jì)數(shù),而要等到GATE上升沿后的下一個(gè)CLK輸入脈沖的下降沿,OUT輸出變低,計(jì)數(shù)才開始。計(jì)數(shù)結(jié)束時(shí),OUT輸出變高,從而產(chǎn)生一個(gè)寬度為N個(gè)CLK周期的負(fù)脈沖。圖7.14(a)為方式1正常計(jì)數(shù)波形。7.2.28253-5的工作方式GATE信號(hào)的影響

在計(jì)數(shù)過程中,若來一個(gè)門控信號(hào)的上升沿,終止原來的計(jì)數(shù)過程,在下一個(gè)時(shí)鐘下降沿從初值起重新計(jì)數(shù)。在計(jì)數(shù)結(jié)束后,若再來一個(gè)GATE信號(hào)上升沿,則下一個(gè)時(shí)鐘周期的下降沿又從初值開始計(jì)數(shù),而不需要重新寫入初值,即門控信號(hào)可重新觸發(fā)計(jì)數(shù)。圖7.14(b)為方式1時(shí)GATE信號(hào)對(duì)波形的影響。

改變計(jì)數(shù)值對(duì)計(jì)數(shù)過程的影響如果在計(jì)數(shù)過程中寫入新的初值,不會(huì)立即影響計(jì)數(shù)過程,只有下一個(gè)門控信號(hào)到來后的第一個(gè)時(shí)鐘下降沿,才終止原來的計(jì)數(shù)過程,按新值開始計(jì)數(shù)。若計(jì)數(shù)結(jié)束前沒有GATE觸發(fā)信號(hào),則原來計(jì)數(shù)過程正常結(jié)束,即新的初值下次有效。圖7.14(c)為方式1時(shí)計(jì)數(shù)過程中改變計(jì)數(shù)值對(duì)波形的影響。7.2.28253-5的工作方式7.2.28253-5的工作方式方式2—頻率發(fā)生器

方式2的工作時(shí)序如圖7.15(a)~(c)所示。這種方式的功能如同一個(gè)N分頻計(jì)數(shù)器,輸出是輸入時(shí)鐘按照計(jì)數(shù)值N分頻后的一個(gè)連續(xù)脈沖。計(jì)數(shù)過程寫入控制字后的時(shí)鐘上升沿,輸出端OUT變成高電平。若GATE=1,寫入計(jì)數(shù)初值后的第一個(gè)時(shí)鐘下降沿開始減1計(jì)數(shù)。減到1時(shí),輸出端OUT變?yōu)榈碗娖?,減到0時(shí),輸出OUT又變成高電平,從初值開始新的計(jì)數(shù)過程,即方式2能自動(dòng)重裝初值,輸出固定頻率的脈沖。因此若裝入計(jì)數(shù)初值為N,則OUT引腳上每隔N個(gè)時(shí)鐘脈沖就輸出一個(gè)負(fù)脈沖,其頻率為輸入時(shí)鐘脈沖頻率的1/N,故方式2也稱為分頻器。圖7.15(a)為方式2正常計(jì)數(shù)波形。7.2.28253-5的工作方式GATE信號(hào)的影響

GATE信號(hào)為低電平終止計(jì)數(shù),而由低電平恢復(fù)為高電平后的第一個(gè)時(shí)鐘下降沿重新從初值開始計(jì)數(shù)。圖7.15(b)為方式2時(shí)GATE信號(hào)對(duì)波形的影響。改變計(jì)數(shù)值對(duì)計(jì)數(shù)過程的影響

如果在計(jì)數(shù)過程中寫入新的初值,且GATE信號(hào)一直維持高電平,則新的初值不會(huì)立即影響當(dāng)前的計(jì)數(shù)過程,但在計(jì)數(shù)結(jié)束后的下一個(gè)計(jì)數(shù)周期將按新的初值計(jì)數(shù),即新的初值下次有效。圖7.15(c)為方式2時(shí)計(jì)數(shù)過程中改變計(jì)數(shù)值對(duì)波形的影響。7.2.28253-5的工作方式7.2.28253-5的工作方式方式3—方波發(fā)生器

方式3的工作時(shí)序如圖7.16(a)、(b)所示。這種方式類似于方式2,不同的是OUT輸出是方波。當(dāng)計(jì)數(shù)值N為偶數(shù)時(shí),對(duì)前計(jì)數(shù)時(shí)OUT輸出為高電平,對(duì)后計(jì)數(shù)時(shí)OUT輸出為低電平。圖7.16(a)為方式3中,計(jì)數(shù)值為偶數(shù)時(shí)的波形。當(dāng)計(jì)數(shù)值N為奇數(shù)時(shí)對(duì)前計(jì)數(shù)時(shí)OUT輸出為高電平,對(duì)后計(jì)數(shù)時(shí)OUT輸出為低電平。GATE信號(hào)對(duì)計(jì)數(shù)的影響及改變計(jì)數(shù)值對(duì)計(jì)數(shù)過程的影響與方式2相同。圖7.16(b)為方式3中,計(jì)數(shù)值為奇數(shù)時(shí)的波形。7.2.28253-5的工作方式7.2.28253-5的工作方式方式4—軟件觸發(fā)選通方式計(jì)數(shù)過程

寫入方式控制字后,OUT輸出高電平。若GATE=1,寫入初值的下一個(gè)CLK脈沖開始減1計(jì)數(shù),計(jì)數(shù)到達(dá)0值,OUT輸出為低電平,持續(xù)一個(gè)CLK脈沖周期后再恢復(fù)到高電平。圖7.17(a)為方式4正常計(jì)數(shù)波形。門控信號(hào)的影響

GATE=1,允許計(jì)數(shù);GATE信號(hào)變低,禁止計(jì)數(shù),輸出維持當(dāng)時(shí)的電平,直到GATE變成高電平后繼續(xù)計(jì)數(shù),從OUT端輸出一個(gè)負(fù)脈沖。圖7.17(b)為方式4時(shí)GATE信號(hào)對(duì)波形的影響。改變計(jì)數(shù)值對(duì)計(jì)數(shù)過程的影響

在計(jì)數(shù)過程中改變計(jì)數(shù)值,則在寫入新值后的下一個(gè)時(shí)鐘下降沿計(jì)數(shù)器將新的初值計(jì)數(shù),即新值是立即有效的,因此被稱為軟件觸發(fā)選通方式。圖7.17(c)為方式4時(shí)計(jì)數(shù)過程中改變計(jì)數(shù)值對(duì)波形的影響。7.2.28253-5的工作方式方式5—硬件觸發(fā)選通方式計(jì)數(shù)過程

寫入控制字后,輸出OUT即為高電平。寫入計(jì)數(shù)初值后,計(jì)數(shù)器并不立即開始計(jì)數(shù),而是由門控脈沖的上升沿觸發(fā)。計(jì)數(shù)器減到0時(shí)輸出一個(gè)持續(xù)時(shí)間為一個(gè)TCLK的負(fù)脈沖,然后輸出恢復(fù)為高電平,直到GATE信號(hào)再次觸發(fā)。圖7.18(a)為方式5正常計(jì)數(shù)波形。門控信號(hào)的影響

若在計(jì)數(shù)過程中,又有一個(gè)門控信號(hào)的上升沿,則立即終止當(dāng)前的計(jì)數(shù)過程,且在下一個(gè)時(shí)鐘下降沿,又從初值開始計(jì)數(shù),如果計(jì)數(shù)過程結(jié)束后,來一個(gè)門控上升沿,計(jì)數(shù)器也會(huì)在下一個(gè)時(shí)鐘下降沿從初值開始減1計(jì)數(shù),即門控信號(hào)上升沿任何時(shí)候到來都會(huì)立即觸發(fā)一個(gè)計(jì)數(shù)過程。圖7.18(b)為方式5時(shí)GATE信號(hào)對(duì)波形的影響。7.2.28253-5的工作方式新的初值對(duì)計(jì)數(shù)過程的影響

如果在計(jì)數(shù)過程中寫入新的初值,則新的初值不會(huì)立即影響當(dāng)前的計(jì)數(shù)過程,只有到下一個(gè)門控信號(hào)上升沿到來后,才從新的初值開始減1計(jì)數(shù)。即新的計(jì)數(shù)初值在下一個(gè)門控信號(hào)上升沿觸發(fā)后有效。圖7.18(c)為方式5時(shí)計(jì)數(shù)過程中改變計(jì)數(shù)值對(duì)波形的影響。7.2.28253-5的工作方式7.2.28253-5的工作方式7.2.38253-5的初始化

使用8253-5時(shí),首先要由CPU對(duì)8253-5寫入控制命令字。8253-5的控制字有4個(gè)主要功能:選擇計(jì)數(shù)器;確定計(jì)數(shù)器數(shù)據(jù)的讀寫格式;確定計(jì)數(shù)器的工作方式;確定計(jì)數(shù)器計(jì)數(shù)的數(shù)制。

8253-5控制字的格式

7.2.38253-5的初始化8253-5的初始化編程寫入控制字

用輸出指令向控制字寄存器寫入一個(gè)控制字,以選定計(jì)數(shù)器通道,規(guī)定該計(jì)數(shù)器的工作方式和計(jì)數(shù)格式。寫入控制字還起到復(fù)位作用,使輸出端OUT變?yōu)橐?guī)定的初始狀態(tài),并使計(jì)數(shù)器清0。寫入計(jì)數(shù)初值

用輸出指令向選中的計(jì)數(shù)器端口地址中寫入一個(gè)計(jì)數(shù)初值,初值設(shè)置時(shí)要符合控制字中有關(guān)格式的規(guī)定。初值可以是8位數(shù)據(jù),也可以是16位數(shù)據(jù)。若是8位數(shù),只要用一條輸出指令就可完成初值的設(shè)置。如果是16位數(shù),則必須用兩條輸出指令來完成,而且規(guī)定先送低8位數(shù)據(jù),后送高8位數(shù)據(jù)。注意,計(jì)數(shù)初值為0時(shí),若為16位計(jì)數(shù),也要分成兩次寫入。對(duì)3個(gè)計(jì)數(shù)器通道的編程沒有先后順序的規(guī)定,可任意選擇某一個(gè)計(jì)數(shù)器通道進(jìn)行初始化編程,只要符合先寫入控制字,后寫入計(jì)數(shù)初值的規(guī)定即可。7.2.38253-5的初始化【例7-3】在某微機(jī)系統(tǒng)中,8253的3個(gè)計(jì)數(shù)器的端口地址分別為3F0H、3F2H和3F4H,控制字寄存器的端口地址為3F6H,要求8253的通道0工作于方式2,BCD計(jì)數(shù),并已知對(duì)它寫入的計(jì)數(shù)初值n=3698(十進(jìn)制數(shù)),則初始化程序?yàn)椋篗OVAL,00110101B;控制字:選擇通道0,先讀/寫低字節(jié),后高字節(jié),方式2,BCD計(jì)數(shù)MOVDX,3F6H;指向控制口OUTDX,AL;送控制字MOVAL,98H;計(jì)數(shù)值低字節(jié),代表00110100BCDMOVDX,3F0H;指向計(jì)數(shù)器0端口OUTDX,AL;先寫入低字節(jié)MOVAL,36H;計(jì)數(shù)值高字節(jié),代表0001010BCDOUTDX,AL;后寫入高字節(jié)7.2.38253-5的初始化

由于8086CPU數(shù)據(jù)線總線為16位。CPU在傳送數(shù)據(jù)時(shí),總是將低8位數(shù)據(jù)送往偶地址端口,將高8位數(shù)據(jù)送到奇地址端口。當(dāng)僅具有8位數(shù)據(jù)總線的存儲(chǔ)器或I/O接口芯片與8086的16位數(shù)據(jù)總線相連時(shí),既可以連到高8位數(shù)據(jù)總線,也可以接在低8位數(shù)據(jù)總線上。在實(shí)際設(shè)計(jì)系統(tǒng)時(shí),為了方便起見,常將這些芯片的數(shù)據(jù)線D7~D0接到系統(tǒng)數(shù)據(jù)總線的低8位,這樣,CPU就要求芯片內(nèi)部的各個(gè)端口都使用偶地址,如本例中的地址3F0H、3F2H、3F4H和3F6H。CPU訪問這些端口時(shí),必須將地址總線的A0置為0。因此,CPU往往用地址總線中的A2A1實(shí)現(xiàn)端口選擇,即將系統(tǒng)地址線A2連到8253的A1引腳,而將系統(tǒng)地址線A1與8253的A0引腳相連。如果8253與8位數(shù)據(jù)總線的微機(jī)相連,如8088CPU,只要將A1A0分別與地址總線的最低兩位A1A0相連即可。比如,在以8088為CPU的PC/XT機(jī)中,地址總線高位部分(A9~A4)用于I/O端口譯碼,形成選擇各I/O芯片的片選信號(hào),低位部分(A3~A0)用于各芯片內(nèi)部端口的尋址。若8253的端口基地址為50H,則通道0,1,2和控制字寄存器端口的地址分別為50H,51H,52H和53H。7.2.38253-5的初始化8253-5的讀取計(jì)數(shù)值的方法8253工作過程中,CPU可用輸入指令讀取任一通道的計(jì)數(shù)值。CPU讀到的是執(zhí)行輸入指令瞬間計(jì)數(shù)器的當(dāng)前值。但8253的計(jì)數(shù)器是16位,所以要分2次讀至CPU。因此,若不鎖存的話,在前后兩次執(zhí)行輸入指令的過程中,計(jì)數(shù)值可能已經(jīng)變化了。鎖存當(dāng)前計(jì)數(shù)值有下面兩種方法:① 利用GATE信號(hào)使計(jì)數(shù)過程暫停。② 向8253寫入一個(gè)方式控制字,令8253通道的鎖存器鎖存。8253的每個(gè)通道都有一個(gè)16位鎖存器,平時(shí)它的值隨著通道計(jì)數(shù)器的值變化。當(dāng)向通道寫入鎖存的控制字時(shí),它把計(jì)數(shù)器的當(dāng)前值鎖存(計(jì)數(shù)器可繼續(xù)計(jì)數(shù)),于是CPU讀取的就是鎖存器的值。當(dāng)對(duì)計(jì)數(shù)器重新編程,或讀取計(jì)數(shù)值后,自動(dòng)解除鎖存狀態(tài),它的值又隨計(jì)數(shù)器變化。7.2.38253-5的初始化【例7-4】要讀取例2中計(jì)數(shù)器0的當(dāng)前計(jì)數(shù)值,則編程如下:MOVAL,00000000B;控制字:選擇通道0,鎖存MOVDX,3F6H;指向控制口OUTDX,AL;送控制字MOVDX,3F0H;指向計(jì)數(shù)器0端口INAL,DX;讀入通道0的計(jì)數(shù)值低8位MOVBL,AL;低8位暫存BL中INAL,DX;讀入通道0的計(jì)數(shù)值高8位MOVBH,AL;高8位暫存BH中7.2.48253-5的應(yīng)用舉例8253-5計(jì)數(shù)功能的應(yīng)用

用8253-5監(jiān)視一個(gè)生產(chǎn)流水線,每通過50個(gè)工件,揚(yáng)聲器響5s,頻率為2000Hz。工件從光源與光敏電阻之間通過時(shí),在晶體管的發(fā)射極上會(huì)產(chǎn)生一個(gè)脈沖,計(jì)數(shù)器計(jì)數(shù)滿50個(gè)脈沖后,連續(xù)輸出2000Hz的方波,持續(xù)5s后停止輸出。圖7.20為8253的應(yīng)用示意圖。7.2.48253-5的應(yīng)用舉例圖7.208253的應(yīng)用示意圖7.2.48253-5的應(yīng)用舉例工作方式選擇本例中,通道0做計(jì)數(shù)器工作于方式2,自動(dòng)重裝載計(jì)數(shù),通道1做定時(shí)器工作于方式3,輸出方波信號(hào)經(jīng)驅(qū)動(dòng)、濾波后送揚(yáng)聲器控制字設(shè)置通道0計(jì)數(shù)器工作于方式2,采用BCD計(jì)數(shù),因計(jì)數(shù)初值為50,采用RL1RL0=01(讀/寫計(jì)數(shù)器的低8位),則工作方式控制字為00010101。通道1計(jì)數(shù)器工作于方式3,CLK1接2.5MHz時(shí)鐘,要求產(chǎn)生2000Hz的方波,則計(jì)數(shù)初值應(yīng)為2.5×106/2000=1250,采用RL1RL0=11(先讀/寫低8位,后讀/寫高8位),BCD計(jì)數(shù)。則工作方式字為01110111。編程設(shè)通道0的地址為40H,通道1的地址為41H,控制口地址為43H,8255A的口地址為80H,則主程序?yàn)椋?.2.48253-5的應(yīng)用舉例MOV AL,15H;通道初始化OUT 43H,A

溫馨提示

  • 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)論