8253的内部结构和工作方式
- 格式:doc
- 大小:122.00 KB
- 文档页数:8
8253的内部结构及编程原则8253读写控制8253控制字通道选择D 7D 6读/写格式D 5工作方式D 3D 2计数方式D 1D 0D 7D 6(SC 1 SC 0 )0 0 通道00 1 通道11 0 通道21 1 回读命令D 5D 4(RW 1RW 0 )00 锁存命令0 1 只读/写低8位1 0 只读/写高8位1 1 先低后高D 3D 2D 1(M 2M 1M 0)0 0 0 方式00 0 1 方式1× 1 0 方式2× 1 1 方式31 0 0 方式41 0 1 方式5D 0(BCD)0 二进制计数1 BCD 码计数D 48253工作方式表方式功能GATE低或变为低上升沿高0 计完最后一个数中断禁止计数___ 允许计数1 硬件再触发单拍脉冲----- ①启动计数②下一个CLK脉冲使输出变低-----2 速率发生器①禁止计数②立即使输出为高①重新装入计数值②启动计数允许计数3 方波速率发生器①禁止计数②立即使输出为高启动计数允许计数4 软件触发选通禁止计数----- 允许计数5 硬件触发选通------ 启动计数------8253初始化编程⏹1.写入通道控制字,规定通道的工作方式;(A1A0=11)⏹2. 写入计数值(由控制字的D7D6确定通道号)。
☐①若规定只写入低8位,则写入的为计数值的低8位,高8位自动置0;☐②若规定只写入高8位,则写入的为计数值的高8位,低8位自动置0;☐③若是16位计数值,则分两次写入,先写入低8位,再写入高8位。
8253初始化实例⏹例1 用8253实现初始化编程,要求:☐使用通道0,工作在方式1,按二—十进制计数,计数值为5080H,其中端口地址给定范围0F8-0FBH.(1)确定通道控制字:如图示为00110011B(2)选择控制字端口地址:A1A0组合11为控制字端口地址的低二位,故选择0FBH。
0110011 0D7D6D5D4D3D2D1D0通道0先写低8位再写高8位工作方式1BCD计数8253初始化实例⏹例1 用8253实现初始化编程,要求:☐使用通道0,工作在方式1,按二—十进制计数,计数值为5080H,其中端口地址给定范围0F8-0FBH.(3)计数值的低8位为80H.(4)计数值的高8位为50H.(5)选择写入计数值的端口地址:计数值写入通道0,故A1A0组合为00,选择0F8H。
8253的工作方式8253的工作方式8253有六种工作方式,在不同的方式下,计数器的启动方式、GATE端输入信号的作用以及OUT端的输出波形都有所不同。
方式0—计数结束产生中断n=443210INTR CLKWRGATEOUT CW方式0—计数结束产生中断a)当写入控制字后,输出端OUT即为低电平(初始状态),如果GATE=1,则计数器获得初值后开始计数,计数器只计数一遍,直到再次写入初始值b)因为在写入计数初值后经过一个时钟周期才能开始计数,所以当计数条件满足时,如果计数初值为n,则需要经过n+1个时钟,OUT端输出高电平,该OUT信号作为中断请求c)如果在GATE=0时写入计数初值,仍会在下一个时钟脉冲时,写入初值,但此时不会开始计数,直到GATE=1时,计数开始;计数过程中,如果GATE=0,计数暂停,直到GATE=1,计数继续d)如果有新的计数初值被写入,则原计数值作废,待下一个时钟脉冲时,新的初值送到计数执行部件方式1—可重复触发的单稳态触发器WR CW GATEOUT CLK323201n=31方式1—可重复触发的单稳态触发器a)写入控制字后,输出端OUT变为高电平(初始状态),计数初值经一个时钟周期后,送计数执行部件;GATE信号上升沿到来时,边沿触发器受到触发,下一个时钟脉冲时,OUT变为低电平,直到计数为0b)如果计数初值为n,则OUT输出n个时钟周期的负脉冲;计数器为0后,输出端OUT变为高电平,只要GATE上升沿到来,计数器可再次重新计数c)如果计数过程有新的计数初值写入计数器,不会影响当前输出,即仍然输出宽度为原计数值的负脉冲,直到GATE上升沿再次到来,按新的计数值开始计数方式2—分频器WR GATE OUT CLK21210330重复周期n=3CW方式2—分频器a)当写入控制字后,输出端OUT变为高电平(初始状态),计数初值经一个时钟周期后,送计数执行部件开始计数b)如果计数初值为n,输出端OUT将经历可重复输出周期,每个输出周期包含n个时钟,其中n-1个时钟为高电平,1个时钟周期为低电平;可以作为一个脉冲速率发生器或用于产生实时时钟中断c)GATE=1时计数进行,GATE=0时计数结束;在计数期间送入新的计数值,如果GATE=1,则OUT不变,当前计数完毕后,按新值进行计数方式3—方波发生器WR GATEOUT CLK4312543251n=5CW 重复周期方式3—方波发生器a)当写入控制字后,输出端OUT为高电平(初始状态),写入初值后下一个时钟开始计数,计数到一半时,OUT变为低电平,计数为0时再变为高电平,完成一个输出周期,进而开始下一个重复周期b)当初值为偶数,输出的正负脉冲个数相等,否则,高电平比低电平多一个时钟c)GATE=1时,在写入控制字及初值后的下一个时钟开始计数,GATE=0时计数停止。
8253中文资料
8253是在单片机系统常用的定时/计数器接口芯片,他能扩展几个定时/计数器,而不占用单片机的cpu时间,而且在pc机的应用很很广。
下面介绍8253引脚图和内部结构及引脚定义等。
8253由以下几个部分组成:
(1) 数据总线缓冲器(8位、三态、双向);
(2) 读/写控制逻辑;
CS:片选信号,低电平有效;
RD:读信号,低电平有效;
WR:写信号,低电平有效
A1A0:端口选择信号
(3) 三个通道( 0 ~ 2);
(4) 一个控制寄存器;
《8253引脚图》
当A1A0分别为00 01 10 11时分别选中三个通道和控制字寄存器在8088系统中,8088的A1A0分别与825 3的A1A0相连在8086系统中,通常将8253的8位数据线与8086的低8位相连,即使用偶地址,所以8086的A2A1分别与8253的A1A0相连
Intel 8253是一片具有三个独立的16位计数器通道的可编程定时器/计数器芯片。
每个通道都可以编程设定6种工作方式之一种;
OUT 42, AL
MOV AH, 01H
INT 21H
IN Al, 61H
AND AL, 0FCH
OUT 61H, AL
MOV AH, 4CH
INT 21H CODE ENDS
END START。
8253的内部结构和工作方式 8253具有3个独立的计数通道,采用减1计数方式。在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。当计数脉冲是已知周期的时钟信号时,计数就成为定时。
一、8253内部结构 8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。
1.数据总线缓冲器 数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。
2.读/写控制 读/写控制分别连接系统的IOR#和IOW#, 由CPU控制着访问8253的内部通道。接收CPU送入的读/写控制信号, 并完成对芯片内部各功能部件的控制功能, 因此, 它实际上是8253芯片内部的控制器。A1A0:端口选择信号,由CPU输入。8253内部有3个独立的通道和一个控制字寄存器, 它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。 这4个端口地址由最低2位地址码A1A0来选择。如表9.3.1所示。 3.通道选择 (1) CS#——片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。 (2) RD#、WR#——读/写控制命令,由CPU输入, 低电平有效。RD#效时,CPU读取由A1A0所选定的通道内计数器的内容。WR#有效时,CPU将计数值写入各个通道的计数器中, 或者是将方式控制字写入控制字寄存器中。CPU对8253的读/写操作如表9.3.2所示。
4.计数通道0~2 每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。采用二进制计数时, 最大计数值是FFFFH, 采用BCD码计数时。 最大计数值是9999。与此计数器相对应, 每个通道内设有一个16位计数值锁存器。必要时可用来锁存计数值。 当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入, 每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。 OUT端将有输出。表示计数次数到。当某个通道用作定时器时。 由CLK输入一定频率的时钟脉冲。根据要求定时的时间长短确定所需的计数值。并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”, 待计数值计到“0”。OUT将有输出,表示定时时间到。允许从CLK输入的时钟频在1~2MHz范围内。因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。 而后者是内时钟脉冲进行减“1”计数。作计数器时, 要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。作定时器时, 计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到: 定时系数=需要定时的时间/时钟脉冲周期 ①设置通道:向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式; ②计数/定时:向通道写入计数值,启动计数操作; ③读取当前的计数值:向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。 ④计数到:当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号。 计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。 锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。
5.方式选择控制字 二、8253的通道工作方式 8253中各通道可有6种可供选择的工作方式, 以完成定时、计数或脉冲发生器等多种功能。8253的各种工作方式如下:
1.方式0:计数结束则中断 工作方式0被称为计数结束中断方式,它的定时波形如图9.3.4所示。当任一通道被定义为工作方式0时, OUTi输出为低电平;若门控信号GATE为高电平,当CPU利用输出指令向该通道写入计数值WR#有效时,OUTi仍保持低电平,然后计数器开始减“1”计数, 直到计数值为“0”,此刻OUTi将输出由低电平向高电平跳变,可用它向CPU发出中断请求,OUTi端输出的高电平一直维持到下次再写入计数值为止。
在工作方式0情况下,门控信号GATE用来控制减“1”计数操作是否进行。当GATE=1时,允许减“1”计数;GATE=0时,禁止减“1”计数; 计数值将保持GATE有效时的数值不变, 待GATE重新有效后,减“1”计数继续进行。 显然,利用工作方式0既可完成计数功能, 也可完成定时功能。当用作计数器时,应将要求计数的次数预置到计数器中,将要求计数的事件以脉冲方式从CLKi端输入, 由它对计数器进行减“1”计数,直到计数值为0,此刻OUTi输出正跳变, 表示计数次数到。当用作定时器时,应把根据要求定时的时间和CLKi的周期计算出定时系数,预置到计数器中。从CLKi,输入的应是一定频率的时钟脉冲,由它对计数器进行减“1”计数, 定时时间从写入计数值开始,到计数值计到“0”为止,这时OUTi输出正跳变,表示定时时间到。 有一点需要说明,任一通道工作在方式0情况下, 计数器初值一次有效,经过一次计数或定时后如果需要继续完成计数或定时功能,必须重新写入计数器的初值。 2.方式1:单脉冲发生器 工作方式1被称作可编程单脉冲发生器,其定义波形如图9.3.5。进入这种工作方式, CPU装入计数值n后OUTi输出高电平, 不管此时的GATE输入是高电平还是低电平, 都不开始减“1”计数,必须等到GATE由低电平向高电平跳变形成一个上升沿后,计数过程才会开始。与此同时,OUTi输出由高电平向低电平跳变,形成了输出单脉冲的前沿,待计数值计到“0”, OUTi输出由低电平向高电平跳变,形成输出单脉冲的后沿, 因此,由方式l所能输出单脉冲的宽度为CLKi周期的n倍。
如果在减“1”计数过程中, GATE由高电平跳变为低电乎,这并不影响计数过程,仍继续计数;但若重新遇到GATE的上升沿,则从初值开始重新计数, 其效果会使输出的单脉冲加宽,如教材图9-22(b)中的第2个单脉冲。 这种工作方式下,计数值也是一次有效,每输入一次计数值,只产生一个负极性单脉冲。
3.方式2:速率波发生器 工作方式2被称作速率波发生器,其定时波形如图9.3.6所示。进入这种工作方式, OUTi
输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,OUTi保持为高电平
不变; 待计数值减到“1”和“0”之间, OUTi将输出宽度为一个CLKi周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,OUTi将输出一定频率的负脉冲序列, 其脉冲宽度固定为一个CLKi周期, 重复周期为CLKi周期的n倍。 如果在减“1”计数过程中,GATE变为无效(输入0电平),则暂停减“1”计数,待GATE恢复有效后,从初值n开始重新计数。这样会改变输出脉冲的速率。 如果在操作过程中要求改变输出脉冲的速率,CPU可在任何时候,重新写人新的计数值, 它不会影响正在进行的减“1”计数过程,而是从下一个计数操作用期开始按新的计数值改变输出脉冲的速率。
4.方式3:方波发生器 工作方式3被称作方波发生器,其定时波型如图9.3.7所示。任一通道工作在方式3, 只在计数值n为偶数,则可输出重复周期为n、占空比为1:1的方波。
进入工作方式3,OUTi输出低电平, 装入计数值后,OUTi立即跳变为高电平。如果当GATE为高电平, 则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。这时OUTi端输出的周期为n×CLKi周期,占空比为1:1的方波序列; 若n为奇数, 则OUTi端输出周期为n×CLKi周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。 如果在操作过程中, GATE变为无效,则暂停减“1”计数过程,直到GATE再次有效,重新从初值n开始减“l”计数。 如果要求改变输出方波的速率, 则CPU可在任何时候重新装入新的计数初值n,并从下一个计数操作周期开始改变输出方波的速率。 5.方式4:软件触发方式计数 工作方式4被称作软件触发方式,其定时波形如图9.3.8所示。进入工作方式4,OUTi
输出高电平。 装入计数值n后, 如果GATE为高电平,则立即开始减“1”计数,直到计数
值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。由软件装入的计数值只有一次有效,如果要继续操作, 必须重新置入计数初值n。如果在操作的过程中,GATE变为无效,则停止减“1”计数, 到GATE再次有效时,重新从初值开始减“1”计数。
显然,利用这种工作方式可以完成定时功能,定时时间从装入计数值n开始,则OUTi
输出负脉冲(表示定时时间到),其定时时间=n×CLK周期。 这种工作方式也可完成计数
功能,它要求计数的事件以脉冲的方式从CLKi输入,将计数次数作为计数初值装入后,由CLKi端输入的计数脉冲进行减“1”计数,直到计数值为“0”,由OUTt端输出负脉冲(表示计数次数到)。 当然也可利用OUTj向CFU发出中断请求。 因此工作方式4与工作方式0很相似,只是方式0在OUTi端输出正阶跃信号、方式4在OUTi端输出负脉冲信号。
6.方式5:硬件触发方式计数 工作方式5被称为硬件触发方式,其定时波形如图9.3.9所示。进入工作方式5, OUTi
输出高电平, 硬件触发信号由GATE端引入。 因此,开始时GATE应输入为0, 装入计
数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”, OUTi将输出负脉冲,其宽度固定为一个CLKi
周期,表示定时时间到或计数次数到。