第八章定时与计数技术(Intel8253/8254及其应用)中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系内容8-1概述8-2可编程计数器/定时器8253一、内部结构和引脚信号二、8253的初始化编程三、8253的工作方式四、Intel82548-38253的应用举例中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系8-1概述各种应用系统中常要求:①外部实时时钟实现延时控制或计时;②要求能对外部事件计数。实现定时的三种方法:1.1.软件定时软件定时由CPU执行指令序列所花费的时间来构成一定的时间间隔,从而达到定时的目的。优点是不需要专门的硬件设备,缺点:浪费了宝贵的CPU资源。一般用于短延时。中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系2、不可编程的硬件定时如利用单稳态电路或555芯片实现优点:结构简单,价格便宜缺点:定时时间和范围不能由程序控制和改变,不够灵活。时序波形时序波形稳态稳态td触发信号暂稳态单稳单稳态态电路电路中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系3.可编程的硬件定时用可编程硬件电路实现,定时和范围由软件确定和改变,由CPU的时钟信号提供精确时间基准。该方法的优点主要有:定时准确,灵活方便,CPU的利用率高等。微机系统中经常使用的可编程计数器/定时器有:Zilog公司:Z80-CTCIntel公司:Intel8253输入频率:0~2MHzIntel8253-5输入频率:0~5MHzIntel8254输入频率:0~5MHzIntel8254-2输入频率:0~10MHz中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系内容8-1概述8-2可编程计数器/定时器8253一、内部结构和引脚信号二、8253的初始化编程三、8253的工作方式四、Intel82548-38253的应用举例中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系8-2可编程计数器/定时器825382538253的主要功能:的主要功能:(1)具有三个独立的16位计数通道;(2)每个计数通道可按二进制或BCD码计数;(3)每个计数通道有六种工作方式;(4)全部输入输出都与TTL电平兼容。82548254是是82538253的改进型的改进型中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系一、内部结构和引脚信号8253封装:24脚DIP封装内部组成:由与CPU的接口电路、内部控制电路以及3个结构完全相同的计数器/定时器CNT0~CNT2(三个计数通道)所组成。中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系数据总线缓冲器读/写逻辑控制字寄存器计数器0计数器1计数器2CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2D7~D0RDWRA0A1CS内部总线中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系1.1.数据总线缓冲器数据总线缓冲器这是8253与CPU的数据总线(D7~D0)连接的8位双向三态缓冲器。CPU用输入输出指令对8253进行读写操作时的所有信息都通过这个缓冲器传送。2.2.读读//写控制逻辑写控制逻辑这是8253内部操作的控制电路,它从系统控制总线上接收输入信号,然后转换成8253内部操作的各种控制信号。8253的端口地址分配如下表:中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系3.计数器计数器00、计数器、计数器11、计数器、计数器22这是三个计数器/定时器通道,每一个都由16位的可设置计数初值的减1计数器构成。三个通道的操作是完全独立的。每个通道都有两个输入引脚CLK和GATE以及一个输出引脚OUT。从编程的角度看,8253的结构框图如下图所示。-CSA1A0读操作(-RD)写操作(-WR)读计数器0读计数器1读计数器2无操作写计数器0写计数器1写计数器2写控制字000001010011中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系计数器的编程结构8(6)位控制寄存器16位输出锁存器16位计数初值寄存器16位减1计数器中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系控制寄存器及计数初值寄存器可由CPU写入;8253的控制寄存器是8位的,CPU每次写入的控制字中有两位(D7、D6)是选择写入哪个计数通道(CNT),因此可以认为,每个计数通道中有一个6位控制寄存器。初值寄存器中存放的是CPU写入(预置)的计数初值。在计数过程中,减1计数器的值不断减1,而初值寄存器中的初值不变。输出锁存器用于写入锁存命令时锁定当前计数值。输出锁存器的内容可由CPU读出。中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系计数器的计数器的33个引脚说明:个引脚说明:1)CLK——时钟输入信号在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减12)GATE门控输入信号控制计数器工作,可分成电平控制和上升沿控制两种类型。3)OUT计数器输出信号当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号。中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系4.控制字寄存器当地址信号A1A0=11时,访问控制字寄存器。控制字寄存器从数据总线上接收CPU送来的控制字,并由控制字的D7、D6两位的编码决定控制字写入哪个通道的控制寄存器中去。由寄存在每个通道内的控制寄存器的内容决定该通道的工作方式,选择计数器是按二进制还是BCD数计数,并确定每个计数器初值的写入顺序。控制字格式以及各位的含义如下:中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系计数器读写格式工作方式数制D7D6D5D4D3D2D1D000计数器001计数器110计数器211非法00计数器锁存命令01只读写低字节(*)10只读写高字节(*)11先读写低字节后读写高字节000方式0001方式1010方式2011方式3100方式4101方式50二进制1十进制SC1SC0RL1RL0M2M1M0BCD(*)注:只写入低或者高8位时,另外高或者低8位自动置为零。中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系二、8253的初始化编程8253加电后的状态不确定,必须在初始化编程后才能使用。初始化步骤和要点:先写控制字先写控制字CWCW,再写初值,再写初值NN;每个通道均需写,三个通道的初始化不分先后顺序。CW写入A1A0=1111端口,N写入3个计数器的各自端口。CW写入后一直有效,除非写入新的CW。严格按照CW规定的方式写N。16位的N必须按照先低8位,再高8位的步骤,通过8位数据总线接口分两次写入。16位计数时,N=0也要分两次写入。因为在16进制计数时,0=10000H;BCD码0=10000D。中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系初始化宜“一气呵成”,为防止在初始化过程中出现中断请求,应在初始化程序前用CLI指令关中断,初始化结束后再开中断。注意:8253/8254属于“同步”计数器,所有的动作和状态变化都与输入时钟信号的周期和相位密切相关。写入的N要等经历过一个时钟信号的上升沿和一个下降沿,才进入计数器的初值寄存器中。(N进入初值寄存器并不意味着计数器一定开始计数工作,这与计数器的工作方式有关)进入初值寄存器中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系关于关于82538253锁存命令的说明锁存命令的说明在8253计数期间,如何读取计数值?两种读计数值的方法11、直接读、直接读16位计数时,计数值必须按照先低后高的顺序分两次读出。在两次读操作期间计数器仍然在计数。可能出现的问题,例:计数值2001H误读为1F01H几种解决方法:22、先锁存再读、先锁存再读锁存命令:向A1A0=11端口写入S1S000xxxx,将S1S0选中的计数器中的计数值锁存到输出锁存器中。中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系然后再对S1S0所寻址的端口执行两次读操作,即可读出在锁存操作发生时刻的计数值。关于锁存操作的进一步讨论锁存操作不影响计数器的正常计数。事实上锁存器的内容平时与减1计数器同步,收到锁存命令后“定格”。锁存结果读出后锁存器自动解锁;若锁存后遇到重写CW或者重写N也将自动解锁。连续两次锁存操作,第二次无效。8253一次只能锁存一个通道,也不能锁存计数器状态。8254的主要改进之一是增加了“回读”操作(Read-Back)命令,可以同时锁存2个或者3个计数器的计数值或者计数器的工作状态。中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系三、8253的工作方式六种工作方式:1.方式0——计数结束中断2.方式1——硬件可重复触发的单稳态触发器3.方式2——分频器4.方式3——方波发生器5.方式4——软件触发延时选通脉冲发生器6.方式5——硬件触发延时选通脉冲发生器中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系1.方式0——计数结束中断1)1)基本时序波形基本时序波形GATE(高)CWN=4WR01234OUTCLKN×T中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系2)2)方式方式00的主要特点的主要特点(1)(1)计数器只计一遍,不能自动重复工作计数器只计一遍,不能自动重复工作当减1计数到零时,并不自动恢复计数初值重新开始计数,且OUT输出保持为高电平。只有CPU再次写入一个新的计数值(即使计数值相同也需再次写入),OUT才变为低电平,计数器按新写入的计数值重新开始计数。或者CPU重新对8253设置方式0控制字,它的OUT输出也可以立即变为低电平,并等再次写入计数初值后重新开始计数。中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系(2)(2)开始计数条件开始计数条件CPU将N最后一个字节写入初值寄存器后的第一个CLK脉冲的下降沿(即图中用斜线标出的那个脉冲),N也被送入减1计数器,计数器开始减1计数。方式0开始计数的触发条件触发条件是N最后一个字节的写信写信号-号-WRWR。(3)(3)在计数过程中,可由在计数过程中,可由GATEGATE信号控制暂停计数信号控制暂停计数当GATE变低时,计数暂停(类似PAUSE);当GATE变高后又接着(从断点处继续)计数。其工作波形如图所示。中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系CLKGATE12223N=3CWWROUT0中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科学系中国科学技术大学电子工程与信息科