第七章可编程计数器定时器_第1页
第七章可编程计数器定时器_第2页
第七章可编程计数器定时器_第3页
第七章可编程计数器定时器_第4页
第七章可编程计数器定时器_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微型计算机原理与接口技术第16讲佘青山86919130 qsshe@8253工作原理:结构、引脚、工作方式8253应用举例:定时功能、计数功能内容提要第七章可编程计数器/定时器8253/8254及其应用2综述两大功能:(1)定时功能例如,按一定的时间间隔对动态RAM进行刷新;扬声器的发声;在计算机实时控制和处理系统中,对处理对象进行采样,或定时检测某些参数等(2)计数功能 对外部事件进行计数等实现定时功能主要有三种方法:软件定时不可编程的硬件定时可编程的硬件定时第七章可编程计数器/定时器8253/8254及其应用

例:软件延时(nT,假设T=210ns)

MOV BL,10 ;4T×1

DELAY0: MOV CX,2801 ;4T×10

DELAY1: LOOP DELAY1;17T/5T--->(17T×2801-12T)×10

DEC BL ;2T×10

JNZ DELAY0;16T/4T--->16T×10-12T

RET ;20T

n=4+10×

((4+2801×17-12)+2+16)-12+20 --->nT=10ms

3Intel8253就是一种能完成上述功能的计数器/定时器芯片,被称为可编程间隔定时器(ProgrammableIntervalTimer,PIT)可编程计数器/定时器8253主要功能:3个独立的16位计数器每个计数器都可以按照二进制或BCD码进行计数每个计数器的计数速率可达2MHz(8254-2计数频率可达10MHz)每个计数器有6种不同的工作方式所有的输入输出引脚电平都与TTL电平兼容47.1.18253的内部结构和引脚信号图7.1(a)8253的内部结构图7.1(b)

8253的引脚§7.18253的工作原理57.1.18253的内部结构和引脚信号1.数据总线缓冲器

8253与CPU数据总线连接的8位双向三态缓冲器。CPU用输入/输出指令对8253进行读/写操作的所有信息,都经这8条D7~D0传送。包括:⑴CPU在对8253进行初始化编程时,向它写入的控制字;⑵CPU向某一计数器写入的计数初值;⑶CPU从某一个计数器读出的计数值。§7.18253的工作原理62.读/写控制逻辑

接收CPU控制总线送来的输入信号,经组合后形成控制信号,对各部分操作进行控制。可接收的信号有:

⑴CS片选信号,低电平有效。由地址总线经I/O端口译码电路产生。只有当CS为低电平时,CPU才能对8253进行读写操作。

⑵RD读信号,低电乎有效。当RD为低电平时,表示CPU正在读取所选定的计数器通道中的内容。

⑶WR写信号,低电平有效。当WR为低电平时,表示CPU正在将计数初值写入所选中的计数通道中或者将控制字写入控制字寄存器中。

7

⑷A1A0端口选择信号。在8353内部有3个计数器通道(0~2)和一个控制字寄存器端口。当A1A0=00时,选中通道0; A1A0=01时,选中通道1; A1A0=10时,选中通道2; A1A0=11时,选中控制字寄存器端口。注意:8253与8位数据总线的微机(如8088CPU)相连,只要将其A1A0分别与CPU地址总线的最低两位A1A0相连即可。8253与16位数据总线的微机(如8086CPU

)相连,则用CPU地址总线中的A2A1实现端口选择,即CPU的A2连8253的A1,CPU的A1连8253的A0。

一般,CPU要求芯片内部的各个端口都使用偶地址四个端口地址83.计数器0~23个完全相同的计数器/定时器通道,对它们的操作完全是独立的。一个8位的控制字寄存器:CPU写入控制字,选定计数器通道的工作方式、读写格式和数制。一个16位的计数初值寄存器:存放由CPU送来的计数初值。构成每个通道都包含:一个16位的计数器执行部件(减法计数器):其起始值就是初值寄存器的值,该值可由程序设置。一个16位输出锁存器:锁存计数器执行部件的值,供CPU读取(某个时刻计数器的瞬时值)。注意:(1)计数初值寄存器、计数器执行部件和输出锁存器都是16位寄存器;(2)它们均可被分成高8位和低8位两个部分,因此也可作为8位寄存器来使用。9预置初值:每个通道对输入到CLK引脚上的脉冲按2进制或10进制(BCD码)格式进行计数(倒计数法),需先对计数器预置初值。减计数器:每输入一个时钟脉冲,计数器的值减1,当计数器的值减为0时,便从OUT引脚输出一个脉冲信号。

输出信号的波形主要由工作方式决定,同时还受外部GATE门控信号控制(它决定是否允许计数)。工作原理108253的3个计数器都各有3个引脚,分别是:

CLK0~CLK2:计数器0~2的时钟脉冲输入端(频率不能大于2MHz)。OUT0~OUT2:计数器0~2的输出端。GATE0~GATE2:计数器0~2的门控脉冲输入端。引脚外部事件计数器:对CLK脚上的脉冲(由外部事件产生)进行计数,脉冲的间隔可以不相等。定时器:CLK引脚上输入精确的时钟脉冲。定时时间取决于计数脉冲的频率和计数器的初值,即

定时时间=时钟脉冲周期tc×预置的计数初值n114.控制字寄存器BCDM2M1M0RL1RL0SC1SC0D7D6D5D4D3D2D1D01BCD码计数0二进制计数000方式0001方式1X10方式2X11方式3100方式4101方式500计数器锁存,供CPU读01只读/写计数器低字节10只读/写计数器高字节11先读/写计数器低字节,后读/写高字节00选择通道001选择通道110选择通道211无效图7.28253控制字格式127.1.2初始化编程步骤和门控信号的功能1.8253的初始化编程步骤

使用前,必须用程序把编程芯片初始化为所需的特定模式,其过程称为初始化编程。其步骤为:(1)写入控制字;(2)写入计数初值。用输出指令向控制字寄存器写入一个控制字,以选定计数器通道,规定该计数器的工作方式和计数格式。写入控制字还起到复位作用,使输出端OUT变为规定的初始状态,并使计数器清0。⑴写入控制字13⑵写入计数初值用输出指令向选中的计数器端口地址中写入一个计数初值,初值可以是8位数据,也可是16位数据:若是8位数,只要用一条输出指令就可完成初值的设置。若是16位数,则须用两条输出指令来完成,且先送低8位数据,后送高8位数据。注意:计数初值为0时,也要分成两次写入。因为在二进制计数时,它表示65536,BCD计数时,它表示10000。

说明:3个计数器通道的编程没有先后顺序,可任意选择某一个计数器通道进行初始化编程,只要符合先写入控制字,后写入计数初值的规定即可。147.1.38253的工作方式Intel8253有6种工作方式:(1)方式0——计数结束中断方式(InterruptonTerminalCount)(2)方式1——可编程单稳态输出方式(ProgrammableOne-short)或硬件再触发单拍脉冲方式(3)方式2——比率(速率)发生器(RateGenerator)(4)方式3——方波发生器(SquareWaveGenerator)(5)方式4——软件触发选通(SoftwareTriggeredStrobe)(6)方式5——硬件触发选通(HardwareTriggeredStrobe)6种工作方式的原理和编程基本类似,重点介绍方式0151.方式0——计数结束中断方式(InterruptonTerminalCount)16不自动重复计数装入初值后输出端变低电平,计数结束输出高电平方式0WRmOUTGATE

m=5543210CLKWRnOUT43210n=48253方式0波形图17当对8253的任一个通道写入控制字,并选定工作于方式0时,输出端OUT立即变为低电平。要使8253能够进行计数,门控信号GATE必须为高电平。若CPU利用输出指令向计数通道写入初值n(=4)时,WRn变成低电平。在WRn的上升沿时,n被写入8253内部的计数器初值寄存器。在WRn上升沿后的下一个时钟脉冲的下降沿时,才把n装入通道内的实际计数器中,开始进行减1计数。每从CLK引脚输入一个脉冲,计数器就减1。总共经过个脉冲后,计数器减为0,OUT引脚由低电平变成高电平。

这个由低到高的正跳变信号,可以接到8259A的中断请求输入端,向CPU发中断请求信号。工作过程:n+1为什么?从写入计数器初值到开始减1计数之间,有一个时钟脉冲的延迟.18OUT引脚上的高电平信号,一直保持到对该计数器装入新的计数值,或设置新的工作方式为止。按方式0进行计数时,计数器不会自动重装初值,计数器只计一遍。当计数器计到0时,不会再装入初值重新开始计数,其输出将保持高电平。特殊情况考虑:(1)特殊情况1:在计数的过程中,如果GATE变为低电平,则暂停减1计数,计数器保持GATE有效时的值不变,OUT仍为低电平。待GATE回到高电平后,又继续往下计数。(2)特殊情况2:如果在计数过程中改变初值,写完初值后,计数器按照新的初值开始计数。

工作过程:(续)198253方式1波形图WRnGATE43210OUTCLK34210GATEOUT234不自动重复计数装入初值后输出端变高电平,计数开始输出低电平,结束后又变高方式12.方式1——可编程单稳态输出方式或硬件再触发单拍脉冲方式20特点:(1)计数初值为n,则输出的单拍负脉冲宽度为n倍时钟周期。(2)当计数到0时,外部触发(GATE由低电平向高电平跳变)可启动新一轮计数,可产生同宽度的单拍脉冲。(3)若计数未结束,重新触发,将扩展输出脉冲的宽度。(4)在计数过程中改变初值,不影响当前一轮计数,等计数到0,产生单拍脉冲后,如果再有新的触发信号,将以新的初值开始计数。2.方式1——可编程单稳态输出方式或硬件再触发单拍脉冲方式21WRn43210(3)OUTCLKn=4n=3

0(4)321210GATEOUT0(3)3210(3)210(3)2108253方式2波形图自动重复计数装入初值后输出端变高电平,计数到最后一个脉冲时输出低电平方式23.方式2——比率(速率)发生器(RateGenerator)

22特点:(1)计数到0时,自动重装计数初值,重新开始计数。(2)计数过程可由门控信号GATE控制。在计数过程中,当GATE变为低电平时,使OUT变为高电平,禁止计数;当GATE从低电平变为高电平,GATE端产生上升沿,则在下一个时钟脉冲时,把预置的计数初值装入计数器,从初值开始递减计数,并循环进行。(3)计数过程中,可改变计数初值,不影响当前计数过程的进行。当计数值减为0时,一个计数周期结束,8253将按新写入的计数值n进行计数。注意:需要产生连续的负脉冲序列信号时,可使8253工作于方式2。3.方式2——比率(速率)发生器(RateGenerator)

2344424OUTn=4n=440222CLK24252OUT

n=5542525425GATEOUTn=44244224208253方式3波形图自动重复计数装入初值后输出端变高电平,输出对称的方波或基本对称的矩形波方式34.方式3——方波发生器(SquareWaveGenerator)

24特点:(1)方式3和方式2的工作相类似,但从输出端得到的不是序列负脉冲,而是输出对称的方波或基本对称的矩形波。(2)在计数过程中,若GATE变成低电平时,就迫使OUT变为高电平,并禁止计数,当GATE回到高电平时,重新从初值n开始进行计数。(3)如果希望改变输出方波的速率,CPU可在任何时侯重新装入新的计数初值,在下一个计数周期就可按新的计数值计数,从而改变方波的速率。注意:当写入的计数初值为偶数时,输出完全对称的方波,写入初值为奇数时,其输出波形的高电平宽度比低电平多一个时钟周期。4.方式3——方波发生器(SquareWaveGenerator)

25CLKWRnn=4OUTn=401234WRn443210GATEOUT8253方式4波形图不自动重复计数装入初值后输出端变高电平,计数结束输出一个CLK宽度的低电平方式45.方式4——软件触发选通(SoftwareTriggeredStrobe)26特点:(1)装入的计数初值n仅一次有效,不重新写入初值。若要继续进行计数,必须重新装入计数初值。(2)若在计数过程中写入一个新的计数值,则在现行计数周期内不受影响,但当计数值回0后,将按新的计数初值进行计数,同样也只计一次。(3)如果在计数的过程中GATE变为低电平,则停止计数,当GATE变为高电平后,又重新将初值装入计数器,从初值开始计数,直至计数器的值减为0时,从OUT端输出一个负脉冲。5.方式4——软件触发选通(SoftwareTriggeredStrobe)27CLKOUTn=401234GATE43210GATE

OUT438253方式5波形图不自动重复计数波形与方式4相同方式56.方式5——硬件触发选通(HardwareTriggeredStrobe)

28特点:(1)写完控制字和初值后,要等GATE触发信号,才能在下一个时钟脉冲后沿把计数初值装入执行部件,并开始减1计数。(2)计数器回0后,自动重装计数值,但并不开始计数(要等到GATE端输入正跳变触发脉冲信号)。(3)计数器在计数过程中,不受门控信号GATE电平的影响,但只要计数器未回0,GATE的上升沿却能多次触发计数器,使它重新从计数初值n开始计数,直到计数值减为0时,才输出一个负脉冲。(4)在计数过程中写入新的计数值,但GATE端没有触发脉冲,则计数过程不受影响。6.方式5——硬件触发选通(HardwareTriggeredStrobe)

298253六种工作方式小结1、输出波形的特点

方式0的输出常作为中断源方式1的输出是宽度为N个CLK脉冲的低有效脉冲(单脉冲,计数过程中输出为低)方式2、4、5的输出波形相同,都是宽度为一个CLK周期的负脉冲。但方式2是连续工作,方式4由软件(设置计数值)触发启动,方式5由硬件(门控信号GATE)触发启动方式3的输出是连续的方波或矩形波2、输出OUT的初始状态

只有方式0在写入控制字后输出为低方式1、2、3、4、5等五种方式在写入控制字后输出为高308253六种工作方式小结3、计数值的设置任一种方式,只有在写入计数值后才能开始计数,不同点在于:方式0、2、3、4都在写入计数值后,计数过程就开始方式1、5需要外部触发启动,才开始计数方式功能N与输出波形的关系0计完最后一个数中断写入计数值N后,经过N+1个CLK脉冲输出变高1可编程单稳态输出(硬件再触发单拍脉冲)单拍脉冲的宽度为N个CLK脉冲2比率(速率)发生器每N个CLK脉冲,输出一个宽度为CLK周期的脉冲318253六种工作方式小结工作方式GATE为低电平或下降沿GATE为上升沿GATE为高电平计数器减为0后的特点方式0:计数结束中断方式禁止计数无影响允许计数不自动重装计数初值,也不自动重复计数方式1:可编程单稳态输出方式无影响(1)启动计数(2)下一个CLK脉冲使输出变低无影响不自动重装计数初值,也不自动重复计数方式2:比率发生器(1)禁止计数(2)立即使输出为高启动计数允许计数自动重装计数初值,自动重复计数方式3:方波发生器(1)禁止计数(2)立即使输出为高启动计数允许计数自动重装计数初值,自动重复计数方式4:软件触发选通禁止计数无影响允许计数不自动重装计数初值,也不自动重复计数方式5:硬件触发选通无影响从初值开始计数无影响自动重装计数初值,但不开始计数4、门控信号(GATE)的作用与计数器计数到0后的特点GATE输入总是在CLK输入时钟的上升沿被采样328253六种工作方式小结5、在计数过程中改变计数值8253在不同方式时都可以在计数过程中写入计数值,但作用不同。方式功能改变计数值0计完最后一个数中断立即有效1可编程单稳态输出(硬件再触发单拍脉冲)外部触发后有效2比率发生器计数到1后有效3方波发生器(1)外部触发后有效(2)计数到0后有效4软件触发选通立即有效5硬件触发选通外部触发后有效337.2.18253定时功能的应用例子1.用8253产生各种定时波形

在某个以8086为CPU的系统中使用了一块8253芯片,通道的基地址为310H,所用的时钟脉冲频率为1MHz。要求3个计数通道分别完成以下功能:⑴通道0工作于方式3,输出频率为2kHz的方波;⑵通道1产生宽度为480µs的单脉冲;⑶通道2用硬件方式触发,输出单脉冲,时间常数为26。8253应用的步骤:与系统的连接芯片的初始化编程§7.28253的应用举例3435怎样与系统连接呢?8253芯片的片选信号CS由74LS138构成的地址译码电路产生。只有当M/IO=0,A9A8A7A6A5=11000时,译码器才能工作当A4A3A0=100时,Y4=0,使8253的片选信号CS有效,选中偶地址端口,端口基地址为310HCPU的A2A1分别与8253的A1A0相连,用于8253芯片内部寻址,使8253的4个端口地址分别为310H、312H、314H和316H8253的8根数据线D7~D0必须与CPU的低8位数据总线D7~D0相连8253的RD、WR脚分别与CPU的相应引脚相连3个通道的CLK引脚连在一起,均由频率为1MHz(周期为1µs)的时钟脉冲驱动36通道0:工作于方式3,即构成一个方波发生器,它的控制端GATE0须为高电平。要输出2kHz的连续方波,计算计数初值:通道1:工作于方式1,即构成一个单稳态电路,由GATE1的正跳变触发,输出一个宽度由时间常数决定的负脉冲。此功能一次有效,需要再形成一个脉冲时,不但GATE1脚上要有触发,通道也需重新初始化。要输出宽度为480us的单脉冲时,计算计数初值:通道2:工作于方式5,即由GATE2的正跳变触发减1计数,在计到0时形成一个宽度与时钟周期相同的负脉冲。此后,若GATE2脚上再次出现正跳变,又能产生一个负脉冲。思考:如果某个通道工作于方式0,要求每500个脉冲OUT端输出一个正跳变,则计数初值为?计数初值n=499,因为经过n+1个脉冲后计数器减为0CNT0=1MHz/2kHz=500CNT1=480us/1us=480由题设可知,预置的时间常数已设置为2637

对3个通道的初始化程序如下:

;(1)通道0初始化程序 MOV DX,316H ;控制口地址 MOV AL,00110111B OUT DX,AL ;写入方式字 MOV DX,310H ;通道0口地址 MOV AL,00H ;低字节 OUT DX,AL ;先写入低字节 MOV AL,05H ;高字节 OUT DX,AL ;后写入高字节;通道0控制字,先读写低字节,;后高字节,方式3,BCD计数38

;(2)通道1初始化程序 MOV DX,316H ;控制口地址 MOV AL,01110011B

OUT DX,AL ;写入方式字 MOV DX,312H ;通道1口地址 MOV AL,80H ;低字节 OUT DX,AL ;先写入低字节 MOV AL,04H ;高字节 OUT DX,AL ;后写入高字节;通道1控制字,先读写低字节,;后高字节,方式1,BCD计数续:39

;(3)通道2初始化程序 MOV DX,316H ;控制口地址 MOV AL,10011011B

;通道2控制字,只读写低字节, ;方式5,BCD计数 OUT DX,AL ;写入方式字 MOV DX,314H ;通道2口地址 MOV AL,26H ;低字节 OUT DX,AL ;只写入低字节 续:402.控制LED的点亮或熄灭用8253来控制一个LED发光二极管的点亮和熄灭,要求点亮10秒钟后再让它熄灭10秒钟,并重复上述过程。加上适当的驱动电路后,便可以用在交通红绿灯控制和灯塔等场合。设CPU为8086,8253的各端口地址为81H、83H、85H和87H。418253的8根数据线D7~D0与CPU的高8位数据线D15~D8相连,选中奇地址端口。通道1的OUT1与LED相连,当它为高电平时,LED点亮,低电平时LED熄灭。 只要对8253编程,使OUT1输出周期为20秒,占空比为1:1的方波,就能使LED交替地点亮和熄灭10秒钟。如果将2MHz时钟信号直接加到CLK1端,则OUT1输出的脉冲周期最大只有0.5us×65536=32.768ms,达不到20秒的要求。用几个通道级连的方案来解决?怎样与系统连接呢?42将2MHz时钟信号加在CLK0输入端,并让通道0工作于方式2。如果选择计数初值N0=5000,则从OUT0端可得到连续的负脉冲序列信号,其频率为:2MHz/5000=400Hz,周期为2.5ms。把该信号连到CLK1输入端,并使通道1工作于方式3。要使得OUT1输出周期为20秒(频率为1/20=0.05Hz)的方波,计算计数初值N1=400Hz/0.05Hz=8000。

N0×N1=2MHz/0.05Hz=4×10743

初始化程序如下:

M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论