资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第10章 可编程定时/计数器芯片,10.1 定时/计数器的概念,10.2 Intel 8253可编程定时/计数器,10.3 Intel 8253控制字和工作方式,10.4 Intel 8253编程,开 始,10.1 定时/计数器的概念,实现定时和计数有两种方法:硬件定时和软件定时。,1软件定时,软件定时是利用CPU每执行一条指令都需要几个固定的指令周期的原理,运用软件编程的方式进行定时。,2硬件定时,(1简单硬件定时,通过数字电路来实现定时,通常是使用单稳延时电路。,(2可编程定时,目前在控制系统中,通常采用可编程定时/计数芯片来实现延时。,返回本章首页,10.2 Intel 8253可编程定时/计数器,10.2.1 Intel 8253的内部结构,10.2.2 Intel 8253的功能,返回本章首页,10.2.1 Intel 8253的内部结构,8253是一种24引脚的双列直插式芯片,其中13条用于与CPU的连接,另外9条分配给3个独立的16位定时/计数器也称为三个独立通道用于与外设的连接。如图10-1所示。,图10-1 8253的引脚配置,1与CPU相连的信号线,(1数据总线D0D7;(2写输入信号;,(3读输入信号;(4片选信号,(5片内寄存器地址输入信号A0、A1,2计数器与外设相连的信号线,每个计数器均有三条信号线与外设相连,它们分别是:,(1计数输入时钟信号CLK,(2计数器输出信号OUT,(3选通信号门控输入GATE,返回本节,10.2.2 Intel 8253的功能,8253的主要功能有:,(1每个计数器有六种工作方式;,(2计数脉冲可以是系统脉冲,也可以是外部事件;,(3计数时可以使用二进制,也可以使用BCD码;,(4触发方式可以是软件触发,也可以是硬件触发;,(5最大计数范围可达065535;,(6所有的输入输出与TTL兼容。,13个独立的16位计数器,每个计数器内部都有一个8位的控制寄存器、一个16位的计数初值寄存器CR、一个16位的计数执行部件CE和一个16位的输出锁存器OL组成。初始化时,首先向计数初值寄存器CR写入计数初值,然后送入计数执行部件CE。,计数执行部件CE实际上是一个16位的减1计数器,当减至0时,输出端输出相应信号表示计数结束。,输出锁存器OL用来锁存计数执行部件CE的内容,若要获取计数初值,则从计数初值寄存器中直接读出。,CR、CE和输出锁存器OL均为16位寄存器,也可以用作8位寄存器,这样在8位数据总线的情况下8253仍然可以使用。,8253逻辑结构如图所示,内部有六个模块,分别是:,13个独立的16位计数器,2控制字寄存器,3读/写逻辑,4数据总线缓冲器,2控制字寄存器,此寄存器用来保存来自CPU送入的控制字。控制字将决定计数器的工作方式、计数形式及输出方式,也能决定应如何装入计数器初值。8253的3个控制字寄存器只占用一个地址号,根据控制字中最高二位来指定当前的控制字是发给哪一个计数器的。控制字寄存器只能写入,不能读取。,3读/写逻辑,读/写逻辑的任务是接收来自CPU的控制信号,完成对8253各计数寄存器的读/写操作。,4数据总线缓冲器,这是一个双向、三态8位缓冲器,它用于8253和系统数据总线连接。,返回本节,每个计数器均有三条信号线与外设相连,它们分别是:,(3RL1RL0D5D4),4 Intel 8253编程,(MODE 0)CLOCK,0是计数器所能容纳的最大初始值模16时,二进制的0相当于216;,通过数字电路来实现定时,通常是使用单稳延时电路。,输出锁存器OL用来锁存计数执行部件CE的内容,若要获取计数初值,则从计数初值寄存器中直接读出。,每个计数器内部都有一个8位的控制寄存器、一个16位的计数初值寄存器CR、一个16位的计数执行部件CE和一个16位的输出锁存器OL组成。,1与CPU相连的信号线,MOVDX,Port0,例1:置计数器0在工作方式3,按二进制计数,计数初值200H。,例2:在一个实际的数据采集系统中,要求每5秒采一个数,现场的主时钟的振荡频率为2.,每个计数器均有三条信号线与外设相连,它们分别是:,(4触发方式可以是软件触发,也可以是硬件触发;,模10000时,BCD码的0相当于10000)。,10.3 Intel 8253控制字和工作方式,10.3.1 Intel 8253的控制字,10.3.2 Intel 8253的工作方式,返回本章首页,10.3.1 Intel 8253的控制字,18253的端口地址,CS,A,1,A,0,端口地址(符号),PC/XT使用的地址,扩展板使用的地址,功能,0,0,0,COUNT0,40H,304H,选中计数器0,0,0,1,COUNT1,41H,305H,选中计数器1,0,1,0,COUNT2,42H,306H,选中计数器2,0,1,1,COUNT3,43H,307H,选中控制寄存器,1,0,0,器件未选中,1与CPU相连的信号线,MOVDX,CtrPort,每个计数器均有三条信号线与外设相连,它们分别是:,这是一个双向、三态8位缓冲器,它用于8253和系统数据总线连接。,(3RL1RL0D5D4),8253逻辑结构如图所示,内部有六个模块,分别是:,则OUT0的输出脉冲频率为着(2.,第10章 可编程定时/计数器芯片,8253是一种24引脚的双列直插式芯片,其中13条用于与CPU的连接,另外9条分配给3个独立的16位定时/计数器也称为三个独立通道用于与外设的连接。,例1:置计数器0在工作方式3,按二进制计数,计数初值200H。,2 Intel 8253的功能,经以上分析,总结如下:,4 Intel 8253编程,方式2:周期性时间间隔计时器频率发生器),计数执行部件CE实际上是一个16位的减1计数器,当减至0时,输出端输出相应信号表示计数结束。,4 Intel 8253编程,每个计数器均有三条信号线与外设相连,它们分别是:,28253的编程控制字,(1SC1SC0D7D6),用于选择计数器。,(2M2M0D3D1),用于选择计数器的工作方式。,(3RL1RL0D5D4),用于控制计数器读/写的字节数1或2字节以及读/写高低字节的顺序。,(4BCDD0),用于指定计数器的码制,是按二进制还是按BCD码进行计数。,38253的读操作,方法有两种:,(1读之前先停止计数,在读数之前,先使计数器停止工作,然后读数,目前一般不会使用这种方法。,(2读之前先送计数值锁存命令,这是常用的方法。在计数过程中,CPU读取计数值时,读取的高低字节可能不是同一时刻的值,为了防止CPU读到这种无效值,CPU进行计数值读取时必须锁存。,当CPU向8253写入一个合适的控制值即RL1RL0=00时,OLH和OLL锁存CE中的当前计数值,然后跟随计数执行部件CE变化,直到允许锁存供CPU读取当前计数值时才停止。CPU读取之后又跟随CE变化。,返回本节,10.3.2 Intel 8253的工作方式,8253作为一个可编程的芯片,可以用6种方式工作,但不论使用哪种方式工作,都要遵守下面几条基本规则:,(1控制字写入计数器时,所有的控制逻辑电路立即复位,输出端OUT进入初始状态高电平或低电平);,(2初始值写入之后,要经过一个时钟的上升沿和下降沿,计数执行部件才开始计数;,(3通常,在时钟脉冲CLK的上升沿,选通信号GATE被采样。,(4在时钟脉冲的下降沿,计数器进行减1计数。0是计数器所能容纳的最大初始值模16时,二进制的0相当于216;模10000时,BCD码的0相当于10000)。,(MODE 0)CLOCK,WRn#,OUTPUT(中断),4,3,2,1,0,n=4,WRm#,OUTPUT(中断),GATE,m=4,5,4,3,2,1,0,方式0:减1计数到0时发中断请求,WRn#,GATE(TRIGGER),4,3,2,1,0,OUTPUT,3,4,2,1,0,(MODE 1)CLOCK,GATE(TRIGGER),OUTPUT,2,3,4,方式1:可编程单脉冲输出,WRn#,4,3,2,1,0(3),OUTPUT,GATE,(RESET),OUTPUT,(MODE 2),CLOCK,n=4,n=3,0(4),3,2,1,2,1,0,0(3),3,2,1,0(3),2,1,0(3),2,1,0,方式2:周期性时间间隔计时器频率发生器),4,2,2,1,0(4),OUTPUT,n=4,GATE,(RESET),OUTPUT,n=4,n=4,n=3,0(4),2,1,0,3,2,1,0(4),2,1,3,3,1,(MODE 3),CLOCK,OUTPUT,n=5,3,2,1,0(5),4,3,2,1,0(5),4,3,0(5),4,3,0,方式3:方波发生器,(MODE 4),CLOCK,WRn#,n=4,OUTPUT,n=4,0,1,2,3,4,4,4,3,2,1,0,LOADn,GATE,OUTPUT,方式4:软件触发选通,(MODE 5),CLOCK,OUTPUT(n=4),0,1,2,3,4,4,3,2,1,0,GATE,GATE,OUTPUT,4,3,方式5:硬件触发选通,返回本节,10.4 Intel 8253编程,8253的控制寄存器和3个计数器具有独立的编程地址,并且根据控制字的内容可以确定所要操作的寄存器,因此8253的编程比较灵活。在编程时,只有两条规定必须严格遵守:,(1对计数器设置初值之前必须先写好控制字;,(2设置初始值时,要符合控制字的格式。,编程的命令有两类,一类是读出命令,用于读取计数器当前的值;一类是写入命令,用于设置控制字、初始值和锁存。,返回本章首页,1,8253初始化编程,写入控制字。端口地址为8253端口始地址3,由D7和D6位的组合区分使用哪一个计数器。,写入计数初值。根据控制字中读写指示位D5RW1),D4RW0的编码决定,若规定只写低8位,则高8位自动置0;若规定写16位,则先写低8位,后写高8位。,例1:置计数器0在工作方式3,按二进制计数,计数初值200H。,解:,确定方式控制字为36H,实现程序如下:,MOVAL,36H,MOVDX,CtrlPort,OUTDX,AL ;方式方式控制字为36H送端口,MOVDX,Port0,MOVAL,00H;计数初值的低8位,OUTDX,AL,MOVAL,02H;计数初值的高8位,OUTDX,AL,2,8253初始化编程举例,SC1,SC0,RW1,RW0,M2,M1,M0,BCD,0,0,0,0,1,1,1,1,3,8253编程应用举例,例2:在一个实际的数据采集系统中,要求每5秒采一个数,现场的主时钟的振荡频率为2.5MHz。,解:若外部时钟为2.5MHz,则计数次数(计数初值)为,5/(1/2.5*106)=1.25*107,一个计数器最大的计数次数为65536,所以必须采用二次计数器。用计数器0的输出OUT0 接计数器1的输入时钟CLK1。,若计数器0的计数初值为50000;则OUT0的输出脉冲频率为着(2.5*106)/(5*104)=50Hz。即周期为0.02s。,为了每5秒产生一个脉冲输出,计数器1为分频器(方式2),计数次数为5s/0.02=250,经以上分析,总结如下:,计数器0:方式3,输出50Hz脉冲,控制字36H,计数初值C350H,计数器1:方式2,分频,控制字54H,计数初值FAH,程序如下:,MOVAL,36H,MOVDX,CtrPort,OUTDX,AL;写计数器0 方式3 控制字,MOVDX,Port0,MOVAL,50H,OUTDX,AL;送低8位计数器值,MOVAL,0C3H,OUTDX,AL;送高8位计数器值,MOVAL,54H,MOVDX,CtrPort,OUTDX,AL;写计数器1 方式2 控制字,MOVAL,0FAH,OUTPort1,AL;送计数器1 初值,返回本节,Thank you very much!,本章到此结束,谢谢您的光临!,谢谢,
展开阅读全文