微机原理杭州电子科技大学8253及其应用解读.docx
《微机原理杭州电子科技大学8253及其应用解读.docx》由会员分享,可在线阅读,更多相关《微机原理杭州电子科技大学8253及其应用解读.docx(18页珍藏版)》请在冰豆网上搜索。
微机原理杭州电子科技大学8253及其应用解读
微机原理与接口技术第十九讲15:
37
第八章可编程计数器/定时器8253及其应用内容提要内容提要8-18253工作原理8-18253工作原理内部结构与引脚信号内部结构与引脚信号初始化编程步骤和门控信号的功能初始化编程步骤和门控信号的功能8253的工作方式8253的工作方式8-28253的应用举例8-28253的应用举例定时功能定时功能计数功能计数功能15:
372
第八章可编程计数器/定时器8253及其应用综述在微型计算机系统中,常需要用到定时功能。
例如:
按一定的时间间隔对动态RAM进行刷新;扬声器的发声;在计算机实时控制和处理系统中,按一定的采样周期对处理对象进行采样,
或定时检测某些参数,对外部事件进行计数等,都需要定时信号。
实现定时功能
主要有三种方法:
实现定时功能主要有三种方法:
软件定时软件定时不可编程的
硬件定时不可编程的硬件定时可编程的硬件定时可编程的硬件定时15:
373
第八章可编程计数器/定时器8253及其应用-综述1.软件定时软件定时是最简单的定时方法,它不需要硬件支持,只要让机器循环执行某一条或一系列指
令,这些指令本身并没有具体的执行目的,但由于执行每条指令都需要一定的时
间,重复执行这些指令就会占用一段固定的时间。
利用这种方法定时,完全由软件编程来控制相改变定时时间,灵活方便,而且节省费用。
但CPU的利用率太低,在定时循环期间,CPU不能再去做任何其它有用的工作,而仅仅是在反复循环,等待预定的定时时间的到来,这在许多情况下是不允许的。
比如,对动态存储器的定时刷新操作,只要处于开机状态,就需要一直不停地进行下去,显然不能采用软件定时。
15:
374
第八章可编程计数器/定时器8253及其应用-综述2.不可编程的硬件定时
555芯片是一种常用的不可编程器件,加上外接电阻和电容就能构成定时电路。
这
种定时电路结构简单,价格便宜,通过改变电阻或电容值,可以在一定的定时范
围内改变定时时间。
但这种电路在硬件已连接好的情况下,定时时间和范围就不
能由程序来控制和改变,而且定时精度也不高。
15:
375
3.可编程的硬件定时
z可编程定时器/计数器电路利用硬件电路和中断方法控制定时,定时时间和范围完全由软件来确定和改变,并由微处理器的时钟信号提供时间基准,这种时钟信号由晶体振荡器产生,因此计时精确稳定。
z用可编程定时器/计数器进行定时,先要根据预定的定时时间,用指令对计数器/定时器芯片设定计数初值,然后启动芯片进行工作。
z计数器一旦开始工作后,CPU就可以去做别的工作,等计数器计到预定的时间,便自动形成一个输出信号,该信号可用来向CPU提出中断请求,通知CPU定时已到,使CPU作相应的处理。
或者直接利用输出信号去启动设备工作。
z该方法显著提高了CPU的利用率,而且定时时间由软件设置,使用十分灵活方便,加上定时时间又很精确,所以获得了广泛的应用。
z系统也可以利用计数器/定时器芯片对外部事件进行计数。
4.可编程计数器/定时器8253
Intel8253就是一种能完成上述功能的计数器/定时器芯片,被称为可编程间隔定日寸器(ProgrammableIntervalTimer,PIT。
8253内部具有3个独立的16位计数器通道,通过对它进行编程,每个计数器通道均可按6种不同的方式工作,并且都可以按2进制或10进
制格式进行计数,最高计数频率能达到2MHz。
8253还可用作可编程方波频率产生器、分频器、程控单脉冲发生器等。
5.可编程计数器/定时器8254
Intel8254是8253的增强型产品,它与8253的引脚兼容,功能几乎完全相同,不同之处在于:
8253的最大输入时钟频率为2MHz,而8254的最大输入时钟频率可高达
5MHz,8254-2则为10MHz。
8254有读回(read-back功能,可以同时锁存1~3个计数器的计数值及状态值,供CPU读取,而8253每次只能锁存和读取一个通道的计
数器,且不能读取状态值。
§8-18253的工作原理
一、8253的内部结构和引脚信号
§8-18253的工作原理【内部结构和引脚信号】
一、8253的内部结构和引脚信号
1•数据总线缓冲器
数据总线缓冲器是8253与系统数据总
线相连接时用的接口电路,由8位双向三态缓冲器构成,CPU用输入/输出指令对8253进行读/写操作的信息,都经8位数据总线
D
7~D
传送,这些信息包括:
CPU在对8253进行初始化编程时,向它写入的控制字。
CPU向某一计数器写入的计数初值。
从计数器读出的计数值。
§8-18253的工作原理2•读/写控制逻辑CS片选信号,低电平有效,由地址总线经I/O端口译码电路产生。
只有当CS为低电平时,CPU才能对8253进行读写操作。
RD读信号,低电平有效。
当RD为低电平时,表示CPU正在读取所选定的计数器通道中的内容。
【内部结构和引脚信号】WR写信号,低电平有效。
当WR为低电平时,表示CPU正在将计数初值写入所选中的计数通道中或者将控制字写入控制字寄存器中。
A1A0端口选择信号。
在8353内部有3个计数器通道
(0~2和一个控制字寄存器端口。
当A1A0=00时,选中通道0;A1A0=01时,选中通道1;A1A0=10时,选中通道2;A1A0=11时,选中控制字寄存器端口。
15:
3711
§8-18253的工作原理【注意】【内部结构和引脚信号】如果8253与8位数
据总线的微机相连,只要将A1A0分别与地址总线的最低两位A1A0相连即可。
如果系统采用的是8086CPU,贝擞据总线为16位。
CPU在传送数据时,总是将低8位数据送往偶地址端口,将高8位数据送到奇地址端口。
偶地址端口的数据总是通过低8位数据总线送到CPU,奇地址端口的数据总是通过高8位数据总线送到CPU。
当仅具有8位数据总线的存储器或I/O接口芯片与8086的16位数据总线相连时,既可以连到高8位数据总线,也可以接在低8位数据总线上。
在实际设计系统时,常将这些芯片的数据线D7~D0接到系统数据总线的低8位,这样,CPU就要求芯片内部的各个端口为偶地址(地址总线的A0=0)。
应改用地
址总线中的A2A1实现端口选择,即将A2连到8253的A1引脚,而将A1与8253的A0引脚相连。
1215:
37
§8-18253的工作原理2•读/写控制逻辑【内部结构和引脚信号】8253输入信号组合的功能表CS000000001015:
37RD111100001WR00001111X1A1A00001101100011011X^功能写入计数器0写入计数器1写
入计数器2写入控制字寄存器读计数器0读计数器1读计数器2无操作禁止使用无操作13
§8-18253的工作原理3.计数器0〜2①构成【内部结构和引脚信号】8253内部包含3个完全相同的计数器/定时器通道,对3个通道的操作完全独立。
每个通道都包含:
一个8位的控制字寄存器:
控制字寄存器是一种只写寄存器,在对8253进行编程时,由CPU用输出指令向它写入控制字,来选定计数器通道,规定各计数器通道的工作方式,读写格式和数制。
一个16位的计数初值寄存器:
存放
由CPU送来的计数初值。
一个计数器执行部件(实际的计数器:
执行部件实际是一个16位的减法计数器,它的起始值就是初值寄存器的值,该值可由程序设置。
输
出锁存器用来锁存计数器执行部件的值,必要时CPU可对它执行读操作,以了解
某个时刻计数器的瞬时值。
注意:
计数初值寄存器、计数器执行部件和输出锁存
器都是16位寄存器,它们均可被分成高8位和低8位两个部分(可作为8位寄存器使用)。
15:
3714
§8-18253的工作原理3.计数器0〜2一个8位的控制字寄存器一个16位的计数初值寄存器一个16位计数器执行部件输出锁存器【内部结构和引脚信号】控制字寄存器(8位)控制字寄存器(8位)计数初值寄存器(16位)计数初值寄存器(16位)计数器执行部件(16位)计数器执行部件(16位)输出锁存器
(16位)输出锁存器(16位)15:
3715
3.计数器0~2
z预置初值:
每个通道工作时,都是对输入到CLK引脚上的脉冲按2进制或10进制(BCD码格式进行计数,计数采用倒计数法,先对计数器预置一个初值,再把初值装入实际的计数器。
z减计数器:
CLK每输入一个脉冲,计数器的值减1,当计数器的值减为0时,便从OUT引脚输出一个脉冲信号。
输出信号的波形主要由工作方式决定,同时还受外部GATE门控信号控制(它决定是否允许计数。
z外部事件计数器:
在CLK脚上的计数脉冲由外部事件产生,这些脉冲的间隔可以是不相等的。
z定时器:
CLK引脚上应输入精确的时钟脉冲。
定时时间取决于计数脉冲的频率和计数器的初值,即
定时时间=时钟脉冲周期T
c预置的计数初值n
②工作原理
3.计数器0~2
③引脚
8253的3个计数器都各有3个引脚,它们是:
CLK0~CLK2:
计数器0~2的输入时钟脉冲从这里输入。
频率不能大于2MHz
OUT0~OUT2:
计数器0~2的输出端。
GATE0~GATE2:
计数器0~2的门控脉冲输入端。
4.控制字寄存器
BCD
M0
RL1
RL0
SC1
SC0
D7D6D5D4D3D2D1D0
1BCD码计数0二进制计数
000方式0001方式1X10方式2X11方式3100方式4101
方式5
00计数器锁存,供CPU读01只读/写计数器低字节10只读/写计数器高字节
11先读/写计数器低字节,后读/写高字节
00选择通道001选择通道110选择通道211
无效
§8-18253的工作原理
二、初始化编程步骤和门控信号的功能
1.8253的初始化编程步骤
接通电源时,8253处于未定义状态,在使用之前,必须用程序把它们初始化为所需的特定模式,这个过程称为初始化编程。
初始化编程按下列步骤进行:
(1写入控制
字;(2写入计数初值。
⑴写入控制字
用输出指令向控制字寄存器写入一个控制字,以选定计数器通道,规定该计数器的工作方式和计数格式。
写入控制字还起到复位作用,使输出端OUT变为规定的初始状态,并使计数器清0。
§8-18253的工作原理【编程步骤和门控信号】
1.8253的初始化编程步骤
⑵写入计数初值
用输出指令向选中的计数器端口地址中写入一个计数初值,初值可以是8位数
据也可以是16位数据。
若是8位数,只要用一条输出指令就可完成初值的设置。
如果是16位数,则必须用两条输出指令来完成,且先送低8位数据,后送高8位数据。
注意,计数初值为0时,也要分成两次写入,因为在
二进制计数时,它表示65536,BCD计数时,它表示10000。
说明:
由于3个计数器分别具有独立的编程地址,而控制字寄存器本身的内容又确定了所控制的寄存器的序号,因此对3个计数器通道的编程没有先后顺序的规
定,可任意选择某一个计数器通道进行初始化编理,只要符合先写入控制字
后写入计数初值的规定即可。
【例如】某微机系统的8253的3个计数器的端口地址分别为3F0H、3F2H和3F4H,控制字寄存器的端口地址为3F6H,要求8253的通道0工作于方式3,计数初值n
=1234H,则初始化程序为:
MOVAL,00110111B;控制字:
选择通道0,先读/写低字节,
;后高字节力式3,BCD计数MOVDX,3F6H;指向控制口
OUTDX,AL;送控制字
MOVAL,34H;计数值低字节
MOVDX,3F0H;指向计数器0端口
OUTDX,AL;先写入低字节
MOVAL,12H;计数值高字节
OUTDX,AL;后写入高字节
【注意】计数初值写入8253后,还要经过一个时钟脉冲的上升沿和下降沿,才能将计数初值装入实际的计数器,然后在门控信号GATE的控制下,对从CLK引脚
输入的脉冲进行递减计数
2.门控信号控制功能
从初值开始计数
方式5
允许计数禁止计数方式4允许计数从初值开始计数
禁止计数,使输出变高
从初值开始计
方式3允许计数从初值开始计数禁止计数,使输出变高方式2
数,下一个时钟后输出变为低电平
方式1允许计数
禁止计数方式OGATE为高电平
GATE为上升沿
GATE为低电平或下降沿
工作方式门控信号GATE的控制功能
、8253的工作方式
2.方式1可编程单稳态输出方式(ProgrammableOne-short
3.方式2比率发生器(RateGenerator
4.方式3方波发生器(SquareWaveGenerator
5.方式4软件触发选通(SoftwareTriggeredStrobe
6.方式5硬件触发选通(HardwareTriggeredStrobe
§8-18253的工作原理【编程步骤和门控信号】
三、8253的工作方式
1.方式0计数结束中断方式(InterruptonTerminalCount
1方式0计数结束中断方式(InterruptonTerminalCount
1当对8253的任一个通道写入控制字,并选定工作于方式0时,该通道的输出端OUT立即变为低电平。
2要使8253能够进行计数,门控信号GATE必须为高电平。
3若CPU利用输出指令向计数通道写入初值n(=4时,WRn变成低电平。
在WRn的上升沿时,n被写入8253内部的计数器初值寄存器。
在WRn上升沿后的下
一个时钟脉冲的下降沿时才把n装入通道内的实际计数器中,开始进行减1计数(从写入计数器初值到开始减1计数之间,有一个时钟脉冲的延迟。
4每从CLK引脚输入一个脉冲,计数器就减1。
总共经过n十1个脉冲后,计数器减为
0,表示计数计到终点,计数过程结束,这时OUT引脚由低电平变成高电平(由低
到高的正跳变信号,可以接到8259A的中断请求输入端,向CPU发中断请求信号。
§8-18253的工作原理【工作方式】
§8-18253的工作原理【工作方式】
1.方式0计数结束中断方式(续
5OUT引脚上的高电平信号,一直保持到对该计数器装入新的计数值,或设置新的
工作方式为止。
6在计数的过程中,如果GATE变为低电平,则暂停减1计数,计数器保持GATE有
效时的值不变,OUT仍为低电平。
待GATE回到高电平后,又继续往下计数。
7按方式0进行计数时,计数器只计一遍。
当计数器计到0时,不会再装入初值重新
开始计数,其输出将保持高电平。
若重新写入一个新的计数初值,OUT立即变成
低电平,计数器按照新的计数值开始计数。
1.方式0计数结束中断方式(InterruptonTerminalCount
§8-18253的工作原理【编程步骤和门控信号】
CLOCK
WRn
OUT
43210
n=4WRm
OUTGATE
m=5
543210
2.方式1可编程单稳态输出方式(ProgrammableOne-short
2.方式1可编程单稳态输出方式(ProgrammableOne-short
1当CPU用控制字设定某计数器工作于方式1时该计数器的输出OUT立即变为
高电平
2在这种方式下,在CPU装入计数值n后,无论GATE是咼电平还是低电平,都
不进行减1计数,必须等到GATE由低电平向高电平跳变,形成一个上升沿
后,才能在下一个时钟脉冲的下降沿,将n装入计数器的执行部件,同时,输
出端OUT由高电平向低电平跳变。
3以后,每来一个时钟脉冲,计数器就开始减1操作。
4当计数器的值减为零时,输出端OUT产生由低到高的正跳变。
这样,就可在
OUT引脚上得到一个负的单脉冲,单脉冲的宽度可由程序来控制,它等于时钟脉冲的宽度乘以计数值n。
2.方式1――可编程单稳态输出方式(续⑤在计数过程中,若GATE产生负跳变,不会影响计数过程的进行。
但若在计数器回零前,GATE又产生从低到高的正跳变,
则8253又将初值n装入计数器执行部件,重新开始计数,其结果会使输出的单脉冲宽度加宽。
因此,只要计数器没有回零,利用GATE的上升沿可以多次触发计数器从n开始重新计数,直到计数器减为0时,OUT才回到高电平。
WRn
GATE
43210OUT34210CLOCK
GATE
OUT
234
3.方式2—比率发生器(RateGenerator
3方式2—比率发生器(RateGenerator
1当对某一计数通道写入控制字,选定工作方式2时,0UT端输出高电平。
2如果GATE为高电平则在写入计数值后的下一个时钟脉冲时,将计数值装入执
行部件。
3此后,计数器随着时钟脉冲的输入而递减计数。
当计数值减为1时,OUT端由
高
电平变为低电平,待计数器的值减为0时,OUT引脚又回到高电平,即低电平的持续时间等于一个输入时钟周期。
与此同时,还将计数初值重新装入计数器,开始一个新的计数过程,并由此循环计数。
4如果装入计数器的初值为n,那么在OUT引脚上,每隔n个时钟脉冲就产生一个负
脉冲,其宽度与时钟脉冲的周期相同,频率为输入时钟脉冲频率的n分之一。
5在操作过程中,任何时候都可由CPU重新写入新的计数值,不影响当前计数过程
的进行。
当计数值减为0时,一个计数周期结束,8253将按新写入的计数值n进行计数
6在计数过程中,当GATE变为低电平时,使OUT变为高电平,禁止计数;当GATE从低电平变为高电平,GATE端产生上升沿,则在下一个时钟脉冲时,把预置的计数初值装入计数器,从初值开始递减计数,并循环进行。
需要产生连续的负脉冲序列信号时,可使8253工作于方式2。
3方式2—比率发生器(续WRn43210(3OUT
GATE
OUT
CLOCK
n=4
n=30(43212100(3
3210(3210(3210
4.方式3方波发生器(SquareWaveGenerator
4方式3方波发生器(SquareWaveGenerator
方式3和方式2的工作相类似,但从输出端得到的不是序列负脉冲,而是对称的方波或基本对称的矩形波。
1当输入控制字后,OUT端输出变为高电平
2如果GATE为高电平则在写入计数值后的下一个时钟脉冲时,将计数值装入执
行部件,并开始计数。
3如果写入计数器的初值为偶数,则当8253进行计数时,每输入一个时钟脉冲,均使计数值减2。
4计数值减为0时,OUT输出引脚由高电平变成低电平,同时自动重新装入计数初
值,继续进行计数。
当计数值减为0时,OUT引脚又回到高电平,同时再一次将计数初值装入计数器,开始下一轮循环计数;
4.方式3方波发生器(续
5如果写入计数器的初值为奇数,则当输出端OUT为高电平时,第一个时钟脉
冲使
计数器减1,以后每来一个时钟脉冲,都使计数器减2,当计数值减为0时,输出端
OUT由高电平变为低电平,同时自动重新装入计数初值继续进行计数。
这时第一个时钟脉冲使计数器减3,以后每个时钟脉冲都使计数器减2,计数值减为0时,OUT端又回到高电平,并重新装入计数初值后,开始下一轮循环计数。
6在计数过程中若GATE变成低电平时,就迫使OUT变为高电平,并禁止计数,
GATE回到高电平时,重新从初值n开始进行计数
7如果希望改变输出方波的速率,CPU可在任何时侯重新装入新的计数初值,在下
一个计数周期就可按新的计数值计数,从而改变方波的速率。
8从OUT端输出的方波频率都等于时钟脉冲的频率除以计数初值。
9注意:
当写入的计数初值为偶数时,输出完全对称的方波,写入初值为奇数时,
其输出波形的高电平宽度比低电平多一个时钟周期。
4.方式3方波发生器(续
42210(4OUT
n=4
GATE
OUT
n=4n=4n=30(42103210(421331CLOCK
OUT
n=5
3210(543210(5430(5430
5.方式4软件触发选通(SoftwareTriggeredStrobe
5.方式4――软件触发选通(续
1当对8253写入控制宇,进入工作方式4后,OUT端输出变为高电平。
2如果GATE为高电平,那么,写入计数初值后,在下一个时钟脉冲后沿将自动把计数初值装入执行部件,并开始计数。
3当计数值成为0时,OUT端输出变低,经过一个时钟周期后,又回到高电平,形成一个负脉冲。
4用这种方法装入的计数初值n仅一次有效,若要继续进行计数,必须重新装入计数初值。
5若在计数过程中写入一个新的计数值,则在现行计数周期内不受影响,但当计数值回0后,将按新的计数初值进行计数,同样也只计一次。
6如果在计数的过程中GATE变为低电平,则停止计数,当GATE变为高电平后,又重新将初值装入计数器,从初值开始计数,直至计数器的值减为0时,
从OUT端输出一个负脉冲。
5方式4
软件触发选通(续
CLOCK
WRnn=4
OUT
n=4
1
2
3
4
443210
LOADnGATEOUT
6.方式5—硬件触发选通(HardwareTriggeredStrobe
6方式5—硬件触发选通(HardwareTriggeredStrobe
1编程进入工作方式5后,OUT端输出高电平。
2当装入计数值n后,不管GATE是高电平还是低电平,减1计数器都不会工作。
一
定要等到从GATE引脚上输入一个从低到高的正跳变信号时,才能在下一个时钟脉冲后沿把计数初值装入执行部件,并开始减1计数。
3当计数器的值减为0时,输出端OUT产生一个宽度为一个时钟周期的负脉冲
后OUT又回到高电平
4计数器回0后,8253又自动将计数值n装入执行部件,但并不开始计数,要等到
GATE端输入正跳变后,才又开始减1计数。
5计数器在计数过程中,不受门控信号GATE电平的影响,但只要计数器未回0,
GATE的上升沿却能多次触发计数器,使它重新从计数初值n开始计数,直到计数值减为0时,才输出一个负脉冲。
6如果在计数过程中写入新的计数值,但没有触发脉冲,则计数过程不受影响。
当
计数器的值减为0后,GATE端又输入正跳变触发脉冲时,将按新写入的初值进行计数。
6方式5—硬件触发选通(HardwareTriggeredStrobe
CLOCK
OUTn=4
1
2
3
4
3210
GATE
GATE
OUT43
7.各种方式的主要特点
1方式0:
在写入控制字后,输出端即变低,计数结束后,输出端由低变高,常用
该输出信号作为中断源。
也可实现定时或对外部事件进行计数。
其余5种方式
写入控制字后,输出均变高。
2方式1:
产生单脉冲。
3方式2:
产生序列负脉冲,每个负脉冲的宽度与CLK脉冲的周期相同。
4方式3:
产生连续的方波。
方式2和方式3都实现对时钟脉冲进行n分频。
5方式4、方式5:
波形相同,都在计数器回0后,从OUT端输出一个负脉冲,其宽度等于一个时钟周期。