第十章-定時(shí)器-微型計(jì)算機(jī)原理與應(yīng)用-電子教案-教學(xué)課件
單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,第,10,章 定時(shí)器,/,【內(nèi)容簡(jiǎn)介】,首先簡(jiǎn)要介紹微型計(jì)算機(jī)中定時(shí)器的作用,然后重點(diǎn)介紹可編程定時(shí)器/計(jì)數(shù)器8254的組成原理、工作方式及編程使用。,【重點(diǎn)難點(diǎn)】,重點(diǎn)是8254的組成原理、工作方式及編程使用。難點(diǎn)是8254的方式控制字及編程使用。,10.1 概 述,10.2 可編程定時(shí)器/計(jì)數(shù)器8254,10.3 8254編程使用,第10章 定時(shí)器/計(jì)數(shù)器,10.1 概 述,在計(jì)算機(jī)中經(jīng)常用到定時(shí)信號(hào),比如動(dòng)態(tài)存儲(chǔ)器刷新、系統(tǒng)日歷計(jì)時(shí)等,在自動(dòng)控制中的定時(shí)控制等。定時(shí)方法可采用軟件/硬件方式。軟件定時(shí)是設(shè)計(jì)延時(shí)子程序,以達(dá)到定時(shí)的目的。硬件定時(shí)是用專(zhuān)門(mén)的定時(shí)器/計(jì)數(shù)器來(lái)實(shí)現(xiàn),主要優(yōu)點(diǎn)是不占用CPU的時(shí)間??膳cCPU并行工作。,硬件定時(shí)器實(shí)質(zhì)上是一個(gè)可加1或者減1的計(jì)數(shù)器,可上升沿或者下降沿計(jì)數(shù)。,在早期的PC機(jī)中使用8253作為定時(shí)器/計(jì)數(shù)器,以后的PC/AT使用的是8254。,另外在PC/AT及以后的一些兼容機(jī)中,使用MC146818作為定時(shí)芯片。,10.2 可編程定時(shí)器/計(jì)數(shù)器8254,8254包含有3個(gè)16位計(jì)數(shù)器,可按二進(jìn)制或十進(jìn)制計(jì)數(shù),有6種工作方式。,10.2.1 內(nèi)部結(jié)構(gòu)與引腳功能,10.2.2 工作方式,部,表,10.1 8254,內(nèi)部地址分配,CS,A,1,A,0,RD,WR,功,能,0,0,0,0,0 0,0 1,1 0,1 1,1,1,1,1,0,0,0,0,寫(xiě)計(jì)數(shù)器,0,寫(xiě)計(jì)數(shù)器,1,寫(xiě)計(jì)數(shù)器,2,寫(xiě)方式控制字,0,0,0,0,0 0,0 1,1 0,1 1,0,0,0,0,1,1,1,1,讀計(jì)數(shù)器,0,讀計(jì)數(shù)器,1,讀計(jì)數(shù)器,2,無(wú)效,在8254內(nèi)部設(shè)置有4個(gè)寄存器,由地址A,1,A,0,選擇和片選信號(hào) 確定,如,表10.1,所示。,表10.1 8254內(nèi)部地址分配,CS,A,1,A,0,RD,WR,功能,0,0,0,0,0 0,0 1,1 0,1 1,1,1,1,1,0,0,0,0,寫(xiě)計(jì)數(shù)器0,寫(xiě)計(jì)數(shù)器1,寫(xiě)計(jì)數(shù)器2,寫(xiě)方式控制字,0,0,0,0,0 0,0 1,1 0,1 1,0,0,0,0,1,1,1,1,讀計(jì)數(shù)器0,讀計(jì)數(shù)器1,讀計(jì)數(shù)器2,無(wú)效,2.引腳信號(hào),8254有24個(gè)引腳,采用雙列直插式封裝,其信號(hào)分布如,圖10.1(b),所示,功能如下:,D,7,-D,0,:數(shù)據(jù)總線,雙向,8位,與外部數(shù)據(jù)總線連接。,WR:寫(xiě)信號(hào)輸入,低電平有效。,RD:讀信號(hào),輸入,低電平有效。,CS:片選信號(hào),輸入,低電平有效。,A,1,A,0,:地址信號(hào),輸入,用于選擇內(nèi)部寄存器。,CLK,2,CLK,0,:3個(gè)計(jì)數(shù)器計(jì)數(shù)信號(hào)輸入。,OUT,2,OUT,0,:3個(gè)計(jì)數(shù)器計(jì)數(shù)回零輸出,高電平有效。,GATE,2,GATE,0,:3個(gè)計(jì)數(shù)器外部門(mén)控信號(hào)輸入端,高電平或上升沿有效。,VCC:5 V電源。,GND:地。,(2)GATE1,允許計(jì)數(shù);GATE0,禁止計(jì)數(shù)。如果在計(jì)數(shù)過(guò)程中修改計(jì)數(shù)初值,則在下一時(shí)鐘脈沖新寫(xiě)入的計(jì)數(shù)初值送入減1計(jì)數(shù)器,然后按新值計(jì)數(shù)。,2.方式1-可重復(fù)觸發(fā)的單穩(wěn)態(tài)觸發(fā)器,(1)寫(xiě)入控制字后OUT輸出高電平,寫(xiě)入計(jì)數(shù)初值后必須由GATE的上升沿觸發(fā)計(jì)數(shù)。計(jì)數(shù)開(kāi)始OUT變?yōu)榈碗娖?,直到?jì)數(shù)回0時(shí)再輸出高電平。若要再次計(jì)數(shù),必須用GATE上升沿重新觸發(fā)。方式1時(shí)序如,圖10.4,所示。,(2)在計(jì)數(shù)過(guò)程中寫(xiě)入新的計(jì)數(shù)初值,當(dāng)前計(jì)數(shù)狀態(tài)不受影響。若有GATE上升沿觸發(fā),則按新的計(jì)數(shù)初值重新計(jì)數(shù),直到計(jì)數(shù)回0,OUT變?yōu)楦唠娖?,低電平寬度為兩次?jì)數(shù)值之和。,3.方式2-分頻器,是一種(n-1):1的分頻器工作方式,特點(diǎn)如下:,(3)GATE1時(shí),允許計(jì)數(shù);GATE0時(shí),停止計(jì)數(shù)。GATE的上升沿啟動(dòng)重新計(jì)數(shù)。若在計(jì)數(shù)過(guò)程中寫(xiě)入新的計(jì)數(shù)初值,則在下一時(shí)鐘周期按新值計(jì)數(shù)。,5.方式4-軟件觸發(fā)的選通信號(hào)發(fā)生器,(1)寫(xiě)入控制字后OUT輸出高電平,寫(xiě)入計(jì)數(shù)初值后的下一時(shí)鐘送入減1計(jì)數(shù)器,減1計(jì)數(shù)。計(jì)數(shù)回0時(shí)輸出低電平,持續(xù)1個(gè)時(shí)鐘周期后又變?yōu)楦唠娖?,即一個(gè)負(fù)脈沖信號(hào),如,圖10.7,所示。,由于需要GATE的上升沿觸發(fā),故稱(chēng)硬件觸發(fā)的脈沖發(fā)生器,時(shí)序如,圖10.8,所示。,(2)計(jì)數(shù)過(guò)程中若GATE 有上升沿出現(xiàn),則在下一時(shí)鐘脈沖計(jì)數(shù)初值重新送入減1計(jì)數(shù)器,重新減1計(jì)數(shù)。,(3)計(jì)數(shù)過(guò)程中若寫(xiě)入新的計(jì)數(shù)初值,而無(wú)GATE上升沿觸發(fā),當(dāng)前計(jì)數(shù)狀態(tài)不受影響。如果有GATE 上升沿觸發(fā),則重新按照新的計(jì)數(shù)初值計(jì)數(shù)。,10.3 8254編程使用,10.3.1 控制字,10.3.2 編程使用,10.3.3 8254在PC機(jī)中的應(yīng)用,10.3.2 編程使用,8254的編程主要是設(shè)置工作方式,寫(xiě)入計(jì)數(shù)初值,在計(jì)數(shù)過(guò)程中讀取計(jì)數(shù)值和狀態(tài)信息。,1.寫(xiě)操作,寫(xiě)操作主要是寫(xiě)入控制字和計(jì)數(shù)初值,即初始化。8254有3個(gè)計(jì)數(shù)器,初始化時(shí)可以一個(gè)一個(gè)地進(jìn)行,也可以先設(shè)置3個(gè)計(jì)數(shù)器的工作方式,然后寫(xiě)入各自的計(jì)數(shù)初值。前者如,圖10.12,,后者如,圖10.13,所示。但是必須先寫(xiě)入方式控制字,再寫(xiě)入計(jì)數(shù)初值。對(duì)于16位計(jì)數(shù)初值,先寫(xiě)入低字節(jié),再寫(xiě)入高字節(jié)。,2.讀操作,讀操作有兩種方式,一種是直接讀,讀取計(jì)數(shù)初值;另一種是先發(fā)鎖存命令,然后再讀,讀取當(dāng)前計(jì)數(shù)值。16位時(shí),先讀低字節(jié),再讀高字節(jié)。,在發(fā)鎖存命令時(shí)可以使用讀回控制字,也可以使用方式控制字。若用方式控制字,其中D,5,D,4,00,D,7,D,6,用來(lái)選擇計(jì)數(shù)器,其余低4位任意。若設(shè)控制字端口地址為T(mén)IM,計(jì)數(shù)器1按雙字節(jié)計(jì)數(shù),讀取當(dāng)前計(jì)數(shù)值的程序如下:,MOVDX,TIM,MOVAL,01000000B,OUTDX,AL ;發(fā)鎖存命令,INAL,DX ;讀取低字節(jié),MOV AH,AL,IN AL,DX ;讀取高字節(jié),XCHG AH,AL,圖10.14 8254在PC機(jī)中的應(yīng)用,在中斷服務(wù)程序中,時(shí)間值保存在BIOS數(shù)據(jù)區(qū)的兩個(gè)變量TIMER-LO和TIMER-HI中。計(jì)數(shù)器0初始化程序如下:,MOV AL,36H ;計(jì)數(shù)器0雙字節(jié),方式3,二進(jìn)制計(jì)數(shù),OUT 43H,AL ;寫(xiě)入控制寄存器,MOVAL,0,OUT40H,AL ;寫(xiě)低字節(jié),OUT40H,AL ;寫(xiě)高字節(jié),(2)計(jì)數(shù)器1,計(jì)數(shù)器1用來(lái)向主機(jī)定時(shí)提出動(dòng)態(tài)RAM刷新請(qǐng)求,GATE,1,接5V,處于常啟狀態(tài)。選擇工作方式2,以字節(jié)計(jì)數(shù),初始化程序如下:,MOVAL,54H ;計(jì)數(shù)器1寫(xiě)入低字節(jié),方式2,,;二進(jìn)制計(jì)數(shù),OUT43H,AL ;寫(xiě)入控制寄存器,MOVAL,18 ;設(shè)置低字節(jié)計(jì)數(shù)值18,OUT41H,AL ;將18寫(xiě)入計(jì)數(shù)器1,啟動(dòng)工作后,由OUT1產(chǎn)生連續(xù)負(fù)脈沖,其頻率為1.1931816MHz/1866.2878KHz,周期為15.0857s。OUT,1,連接到D觸發(fā)器的觸發(fā)脈沖輸入端,而D觸發(fā)器的數(shù)據(jù)輸入端接+5V,這樣可利用負(fù)脈沖的上升沿將觸發(fā)器置1,輸出高電平,定時(shí)請(qǐng)求DRAM刷新。,