《计算器定时器》PPT课件.ppt
1,河南科技大学电子信息工程学院,计算机接口技术,第7章 可编程计数器定时器接口芯片8253,知识点:了解8253内部结构及管脚功能;掌握8253工作原理及六种工作方式;掌握8253控制字及编程应用。,难点:8253的六种工作方式及编程应用。,2,计算机接口技术,7.1 概述 在微机系统中,常用到定时功能,如定时中断、定时采样、定时检测等等;此外,还需要计数功能,以实现对外部事件的计数,如对生产线上零件或产品的计数,对大桥和高速公路上车流量的统计等等。定时与计数的本质是相同的对脉冲信号进行计数。如果计数的对象是与外部事件相对应的脉冲信号(周期可以不相等),即为计数。如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程即为定时。所以,定时的本质就是计数,当脉冲信号是周期信号时,计数就可以用于定时。如脉冲信号是周期为1秒的周期信号,则计数60次就是1分,计满60分就是1小时,计满24小时就是1天。,3,计算机接口技术,CPU执行每条指令都需要一定的时间,重复执行一些指令就会占用一段固定的时间,因此,可运用软件编程的方法,适当地选取一些指令和循环次数便能实现定时功能。,1、定时的三种方法,1)软件定时,例:MOV CX,1000 DEALY:MOV BX,1234H LOOP DEALY,优点:不需要增加硬件,只需通过编程来控制和改变定时时间,灵活方便,节省费用。缺点:CPU重复执行的这段程序,程序本身并没有什么具体执行目的,仅为了延时,从而降低了CPU利用率。,4,计算机接口技术,利用专门的定时电路实现定时,如利用555定时器外接RC构成的定时电路。,2)不可编程的硬件定时,优点:电路结构简单,价格便宜,通过改变电阻或电容值,可以在一定的定时范围内改变定时时间。缺点:电路在硬件已连接好的情况下,定时时间和范围不能由程序来控制和改变,而且定时精度不高。,5,计算机接口技术,3)可编程的硬件定时,在微机系统中,常采用软件、硬件相结合的方法实现定时,如用可编程计数器/定时器芯片(如Intel 8253)构成一个方便灵活的计数定时电路。这种电路不仅定时值和定时范围可由软件编程来确定和改变,而且具有多种工作方式,可以输出多种形式的控制信号,以CPU的时钟信号为输入脉冲信号,故定时精确。与CPU并行工作,应用广泛。系统也可以利用计数器/定时器芯片对外部事件进行计数。,6,计算机接口技术,2、外部事件计数,高速公路入口的车辆计数系统,7,计算机接口技术,7.2 可编程计数器/定时器接口芯片8253,18253的主要功能 具有3个独立的16位计数器通道,最大计数范围为065535;每个计数器都可以按照二进制或二十进制(BCD码)计数;每个计数器的计数速率可高达2MHz;每个计数器通道有6种工作方式,可通过程序进行设置;所有的输入和输出都与TTL兼容。,8,计算机接口技术,28253的内部结构,双向、三态、8位,CPU通过数据总线缓冲器可向控制字寄存器写入控制字,向计数器写入计数初值;也可读出计数器当前计数值。,接收来自CPU的控制信号。完成对8253各计数器的读/写操作。,接收CPU写入的控制字,决定8253使用哪个计数器,工作方式、读/写格式、计数方式。,计数器的门控信号,计数器的输出信号,计数器的时钟信号,9,计算机接口技术,8253的编程结构,工作过程:1、初值 CRCE,CE减1计数,OL跟随CE变化,减到0,OUT输出结束信号。,2、锁存命令到来,OL锁存当前计数,当计数被读走,OL又随CE变化。,10,计算机接口技术,计数器的内部结构与工作原理,1)16位计数初值寄存器CR 存放计数初值 可通过程序来设置,2)计数执行部件CE 一个16位减1计数器;初值是计数初值寄存器的内容;在GATE控制下,对CLK脉冲计数;启动后每出现一个CLK脉冲计数值减1;当减为0时通过OUT输出结束信号。,3)输出锁存器OL 通常随计数执行部件CE的内容变化;当接收到CPU锁存命令时,锁存当前的计数值,而当前计数值被CPU读取后,OL内容又随CE的内容变化。,4)CLK信号 周期性时钟信号,定时器功能;非周期性计数信号,计数器功能。5)GATE信号 控制输入端 有多种控制作用(允许/禁止计数、启动/停止计数),11,计算机接口技术,数据总线缓冲器是一个三态、双向、8位缓冲器,用于将8253与系统数据总线D0D7相连,实现CPU与8253之间数据的传送。CPU通过数据总线缓冲器向控制字寄存器写入确定8253工作方式的控制字;向某个计数器写入计数初值;从某个计数器读出当前计数值。,(1)数据总线缓冲器,12,计算机接口技术,(2)读/写逻辑,13,计算机接口技术,(3)WR:写信号 低电平有效,当WR有效时,CPU将计数初值写入指定的计数器,即将计数初值写入CR,或将控制字写入控制字寄存器中。(4)A1、A0:端口选择信号 8353内部有3个计数器(02)和1个控制字寄存器。,14,计算机接口技术,注意:如果8253与8088 CPU相连时,由于8088系统数据总线为8位,所以,8253的8位数据线直接与8088系统数据总线相连,地址总线的最低两位A1、A0连8253的A1、A0。如果8253与8086 CPU相连时,由于8086系统数据总线为16位。通常8253的D7D0与数据总线的低8位相连,所以,地址总线的A2、A1连8253的A1、A0;地址总线的A0置为0,这样8253内部各个端口地址都为偶地址。,15,计算机接口技术,16,计算机接口技术,8253初始化时,CPU用OUT输出指令向控制字寄存器写入控制字,以选定计数器通道,规定计数器通道的工作方式,读写格式和计数格式。此寄存器只能写入而不能读出。,(3)控制字寄存器,17,计算机接口技术,(4)计数器0、1、2,3个完全相同的计数器通道,对3个计数器通道的操作完全独立。每个通道都包含:一个16位的计数初值寄存器CR:存放由CPU送来的计数初值。一个计数执行部件CE(16位减1计数器):它的起始值就是初值寄存器的值,该值可由程序设置。一个输出锁存器OL:用来锁存计数执行部件的值,CPU可对它执行读操作,来检查某个时刻计数器的计数值。,注意:计数初值寄存器、计数执行部件和输出锁存器都是16位寄存器,它们均可被分成高8位和低8位两个部分。因此也可作为8位寄存器来使用。,18,计算机接口技术,38253的管脚及功能,19,计算机接口技术,BCD,M0,M1,M2,RW0,RW1,SC0,SC1,4.8253的控制字,20,计算机接口技术,说明:8253在工作前,必须先初始化,即先写入控制字,通过设置控制字,可完成以下任务:选择计数器;确定计数器读写格式;选择计数器工作方式;确定计数的格式。,8253内部只有一个控制字寄存器,即只有一个控制端口地址。当三个计数器同时工作时,必须对三个计数器分别进行初始化。(假设计数器0、计数器1、计数器2和控制字寄存器的地址分别为:40H,41H,42H,43H,初始化程序段为:,MOV AL,00010011BOUT 43H,ALMOV AL,01111010BOUT 43H,ALMOV AL,10110110BOUT 43H,AL,21,计算机接口技术,对写入计数初值的说明:,先写入控制字再写计数初值;若初值是8位数,一次可完成初值的写入。若初值16位,分两次写入(写入方式按照控制字中的D5、D4进行)。每次写入一个字节;不同计数器的计数初值写到相应计数器通道中。,(3)写操作 包括写入控制字、写入计数初值和锁存命令。,用作定时器时的计数器初值计算方法:定时时间时钟脉冲周期Tc计数初值N,22,计算机接口技术,(4)读操作 计数器在计数时,计数器的计数内容是动态变化的,需检查当前计数值时要用到读操作。步骤为:先向8253写控制字(D5D4=00),锁存当前计数值,再读入。读完后,锁存功能自动失效。,程序:MOV AL,0000BOUT 43H,AL;发出锁存命令IN AL,40H;读计数器0当前计数值的低8位MOV CL,AL;送入CX寄存器的CL中IN AL,40H;读计数器0当前计数值的高8位MOV CH,AL;送入CX寄存器的CL中,23,计算机接口技术,(5)计数格式,BCD=1时采用BCD码计数,写入计数器的初值用BCD码表示,范围:00009999H,其中0000表示最大值10000,即104;若设置计数初值n=1234H,表示设置了一个十进制数1234。,BCD=0时采用二进制计数,写入计数器的初值用二进制数表示,范围:0000HFFFFH,其中0000H表示最大值65536,即216;当设置计数初值n=1234H,表示设置了一个十六进制数1234H,即十进制数4660。,24,计算机接口技术,例1:设8253的端口地址为:40H43H,使用计数器1,工作于方式3,采用二进制计数,计数初值为3000H,编写初始化程序。,方案1:MOV AL,01110110BOUT 43H,AL;控制字写入控制字寄存器MOV AL,00H;计数初值低8位OUT 41H,AL;计数初值低8位写入计数器1MOV AL,30H;计数初值高8位OUT 41H,AL;计数初值高8位写入计数器1,方案2:MOV AL,01100110BOUT 43H,AL;控制字写入控制字寄存器MOV AL,30H;计数初值高8位OUT 41H,AL;计数初值高8位写入计数器1,25,计算机接口技术,例2:设8253的端口地址为:5F0H5F3H,使用计数器0,工作于方式4,采用二进制计数;使用计数器2,工作于方式5,采用BCD计数。计数器0和计数器2的计数初值都为十进制数512,编写初始化程序。,MOV AL,00111000B;计数器0,工作于方式4,二进制计数MOV DX,5F3H;控制字寄存器端口地址(DX寄存器间接寻址)OUT DX,AL;控制字写入控制字寄存器MOV DX,5F0H;计数器0端口地址(DX寄存器间接寻址)MOV AL,00H;计数初值低8位OUT DX,AL;计数初值低8位写入计数器0MOV AL,02H;计数初值高8位OUT DX,AL;计数初值高8位写入计数器0,说明:十进制数512等于十六进制数0200H,26,计算机接口技术,MOV AL,10111011B;计数器2,工作于方式5,BCD计数MOV DX,5F3H;控制字寄存器端口地址(DX寄存器间接寻址)OUT DX,AL;控制字写入控制字寄存器MOV DX,5F2H;计数器2端口地址(DX寄存器间接寻址)MOV AL,12H;计数初值低8位OUT DX,AL;计数初值低8位写入计数器2MOV AL,05H;计数初值高8位OUT DX,AL;计数初值高8位写入计数器2,说明:十进制数512的二十进制表示(BCD码)为512H,27,计算机接口技术,5.8253工作方式,8253共有6种工作方式,各方式下的工作状态是不同的,输出的波形也不同,而门控信号的作用比较灵活。由此组成了8253丰富的工作方式、波形,下面我们逐一介绍。几条基本原则 写入控制字,输出端OUT进入初始状态,初始状态对不同的工作方式来说不一定相同。写入计数初值后,要经过一个时钟周期,计数执行部件才开始计数操作,因为在这个时钟周期下降沿,计数初值才由CRCE。,28,计算机接口技术,通常,在每个时钟脉冲CLK的上升沿,采样门控信号GATE。不同的工作方式下,门控信号的触发方式是有具体规定的,或者是电平触发,或者是边沿触发,在有的方式中,两种触发方式都是允许的。其中0、2、3、4是电平触发方式,1、2、3、5是上升沿触发。在时钟脉冲的下降沿,计数器作减1计数。,29,计算机接口技术,工作过程 写入控制字,OUT立即变为低;写入计数初值N到计数初值寄存器(CR),若GATE为高电平,下一个时钟脉冲的下降沿将计数初值N装入计数执行部件(CE),才开始减1计数;计数期间,OUT一直为低;当计数结束(计数值为0),OUT变为高,并一直保持。用途:方式0常用来对外部事件计数,利用OUT由低到高的变化产生中断请求信号。,方式0 计数结束中断方式,30,计算机接口技术,方式0 计数结束中断方式,GATE,OUT,CLK,0,3,1,2,4,N=4,CW,WR,写控制字设置工作方式,设置计数初值,计数值送入减1计数器,计数过程,计数结束,CRCE,高,31,计算机接口技术,图a 方式0 正常计数,图b 方式0 GATE 信号发生变化,图c 方式0 再次写入计数初值,计数过程中,若GATE信号变为低电平,则在低电平期间暂停计数,计数值保持不变。,计数过程中,若重新写入新的计数初值,则在下一个CLK脉冲的下降沿,减1计数器以新的计数初值重新开始计数。,32,计算机接口技术,定时时间43600=14400(秒)3840H(秒),例1:家庭厨房系统。,33,计算机接口技术,相应的程序段如下:MOV AL,10011010B;8255A方式控制字OUT 8255A控制口,ALMOV AL,00000000B;8255A置位/复位控制字,使PC00OUT 8255A控制口,ALMOV AL,00110000B;8253计数器0方式控制字OUT 8253控制口,ALMOV AL,40H;设置8253计数器0计数初值OUT 计数器0端口,ALMOV AL,38HOUT 计数器0端口,AL中断程序段如下:MOV AL,00000001B;8255A置位/复位控制字,使PC01OUT 8255A控制口,AL,34,计算机接口技术,工作过程 写入控制字CW,OUT立即变高,并保持不变。写入计数初值N,计数器并不立即计数,只有当GATE的一个上升沿到来时,才在下一个时钟脉冲的下降沿,将计数初值N装入减1计数器CE,OUT由高变低,开始减1计数。计数期间,OUT一直保持低电平,当计数结束(计数值为0),OUT变为高电平。用途:输出稳态负脉冲信号 OUT端输出负脉冲的宽度=计数初值N时钟脉冲宽度TCLK。,方式1 可编程单稳负脉冲输出方式,35,计算机接口技术,方式1 可编程单稳负脉冲输出方式,设置工作方式,设置计数初值,计数值送入计数器,计数开始,计数过程,计数结束,GATE,OUT,CLK,0,3,1,2,4,N=4,CW,WR,36,计算机接口技术,图a 方式1 正常计数,图b 方式1 GATE 信号再现,图c 方式1 再次写入计数初值,计数期间,又来一个门控信号上升沿触发,则在下一个CLK脉冲的下降沿,计数初值重新装入减1计数器,重新开始计数,OUT端保持低电平,直至计数值减到0时,OUT端变为高电平。,计数期间,又写入新的计数初值,不影响当前计数过程。直到下一次GATE信号触发,才装入新的计数初值,并以新的计数初值开始计数。,37,计算机接口技术,例2、高速公路入口的车辆计数系统,38,计算机接口技术,原始脉冲预处理,39,计算机接口技术,工作过程 写入控制字CW,OUT变高,并保持不变。写入计数初值N,若GATE为高电平,则在下一个时钟脉冲下降沿,将计数初值N装入减1计数器CE,开始减1计数。当计数值减为1时,OUT由高变低,减为0时,OUT又变为高,即OUT输出一个时钟周期的负脉冲;同时,自动将计数初值N装入计数执行部件CE,开始新一轮计数。用途:分频器 若计数器的初值为N,则OUT输出的波形频率为时钟脉冲频率的N分之一。,方式2 分频器,40,计算机接口技术,方式2 分频器,CRCE,CRCE,CLK,GATE,OUT,3,2,1,0 3,2,1,0 3,CRCE,CR=3,2,1,高,41,计算机接口技术,图a 方式2 正常计数,图b 方式2 GATE 信号发生变化,图c 方式2 再次写入计数初值,计数期间,又写入新的计数初值,不影响当前计数过程。计数结束后,才将新的计数初值装入减1计数器,并以新的计数初值开始计数。,计数过程中,若GATE变为低电平,则在低电平期间暂停计数,计数值保持不变,GATE上升沿使计数器重新装入计数初值,并开始减1计数。,42,计算机接口技术,工作过程 写入控制字CW,OUT变高,并保持不变。写入计数初值N,若GATE为高电平,在下一个时钟脉冲下降沿,将计数初值N装入减1计数器CE,开始减1计数。当计数到一半时,OUT由高变低,减1计数器继续计数,计数到0时,OUT由低变高。之后,周而复始地自动进行计数过程。当计数初值为偶数时,OUT输出对称方波;当计数初值为奇数时,OUT输出不对称方波。用途:方波发生器,也可作为分频器。,方式3 方波发生器,43,计算机接口技术,方式3 方波发生器,CRCE,CW,CLK,GATE,OUT,N=4,4,3,2,1,4,3,2,CRCE,CR=4,1,4,计数初值为偶数时输出波形,CRCE,高,输出正脉冲宽度=NT/2输出负脉冲宽度=NT/2,44,计算机接口技术,1,CRCE,CW,CLK,GATE,OUT,N=5,5,4,3,2,5,4,CR=5,3,2,计数初值为奇数时输出波形,CRCE,高,输出正脉冲宽度=(N+1)T/2输出负脉冲宽度=(N-1)T/2,45,计算机接口技术,图a 方式3 正常计数 计数初值N为偶数,图c 方式3 GATE信号发生变化,图b 方式3 正常计数 计数初值N为奇数,计数过程中,在OUT为低电平时,GATE变为低电平,减1计数器停止计数,而OUT立即变高电平。在GATE变为高电平后,下一个时钟脉冲的下降沿,计数初值重新装入减1计数器,开始新的计数。,46,计算机接口技术,例3:在PC机中,常用定时器/计数器8253产生定时信号或输出方波。8253的三个计数器及控制字寄存器的端口地址、工作方式与实现功能如下表所示。,8253的三个计数器及控制字寄存器的端口地址、工作方式与实现功能,47,计算机接口技术,8253的计数器0,实时中断。用于产生每秒18.2个节拍的中断信号,故设为工作在方式3,初值为0,从OUT0输出方波频率为1.19MHz/216=18.2Hz,计数器0的控制字为00110110(36H);,8253的计数器l,动态RAM刷新。用于产生固定频率的刷新信号,故设定工作在方式2,计数初值为12H18,输出频率为1.19MHz/1866.1kHz,定时时间为15.13s,计数器1的控制字为01010100(54H);,8253的计数器2,用于产生频率信号。故设为工作在方式3,计数初值为4A6H1190,方波输出频率为1.19MHz/11901kHz。此信号频率决定扬声器的音调,计数器2的控制字为10110110(0B6H)。,48,计算机接口技术,工作过程 写入控制字CW,OUT变高,并保持不变。写入计数初值N,若GATE为高电平,在下一个时钟脉冲下降沿,将计数初值N装入减1计数器CE,开始减1计数。当减1计数器的值为0时,OUT变为低电平,经过一个CLK时钟周期,OUT变为高电平。用途:产生单个负脉冲信号,负脉冲宽度为1个时钟周期。,方式4 软件触发方式,49,计算机接口技术,方式4 软件触发方式,CRCE,CW,CLK,GATE,OUT,N=2,2,1,0,2,1,0,CRCE,CR=2,高,N=2,CR=2,50,计算机接口技术,图a 方式4 正常计数,图c 方式4 再次写入计数初值,图b 方式4 GATE信号发生变化,计数过程中,若再次写入计数初值,则在下一个时钟脉冲的下降沿,新的计数初值重新装入减1计数器,又开始新的减1计数。,51,计算机接口技术,例4:家庭厨房系统改进型。,52,计算机接口技术,工作过程 写入控制字CW,OUT变高,并保持不变。写入计数初值N,只有当GATE信号的上升沿到来后,在下一个CLK脉冲的下降沿,才将计数初值N装入减1计数器,开始减1计数。当减1计数器的值为0时,OUT变为低电平,经过一个CLK时钟周期,OUT变为高电平。用途:产生单个负脉冲信号,负脉冲宽度为1个时钟周期。,方式5 硬件触发方式,53,计算机接口技术,方式5 硬件触发方式,1,2,CW,CLK,GATE,OUT,N=3,3,0 3,3,3,2,CR=3,54,计算机接口技术,图a 方式5 正常计数,图c 方式5 再次写入计数初值,图b 方式5 GATE信号发生变化,在计数过程中,若写入新的计数初值,但无GATE触发脉冲,则当前计数不受影响。当前计数结束后,若再有GATE触发,将按新的计数初值开始计数。,在计数过程中,若GATE又来一个上升沿触发,则在下一个CLK脉冲的下降沿,计数初值重新装入减1计数器,并按计数初值作减1计数。,55,计算机接口技术,例5:家庭厨房系统改进型。,56,计算机接口技术,8253工作方式总结:,六种方式作用:方式0:可用来实现定时或对外部事件进行计数;方式1:可用来产生单脉冲;方式2:可用来产生序列负脉冲,每个负脉冲的宽度和CLK 脉冲的周期相同;方式3:用来产生连续的方波。方式2、3都能实现对时钟脉 冲进行N分频;方式4:产生一个负脉冲,可用来计数;方式5:与4波形相同,产生一个负脉冲,可用来计数;,57,计算机接口技术,门控信号GATE的控制功能,58,计算机接口技术,59,计算机接口技术,六、8253应用举例,例1:现有一个高精密晶体振荡电路,输出信号是脉冲波,频率为1MHz。要求利用8253做一个秒信号发生器,其输出接一发光二极管,以0.5秒点亮,0.5秒熄灭的方式闪烁指示。设8253的端口地址为80H86H(偶地址),解:1、时间常数计算 用8253作一个分频电路,输出是方波,周期为1s,否则发光二极管不可能等间隔闪烁指示。频率为1MHz信号的周期为1s,而1Hz信号的周期为1s,分频系数N为:,60,计算机接口技术,8253一个计数器最大的计数初值是65535,所以对于N1000000,一个计数器不能完成上述分频要求。由于 即取两个计数器,采用级联方式。2、电路,61,计算机接口技术,3、工作方式选择 计数器1输出方波信号驱动发光二极管,所以计数器1应选工作方式3。对于计数器0,只要能起分频作用即可,对输出波形不做要求,所以可以选用方式2或方式3。对于计数器0,取工作方式2,BCD计数;对于计数器1,取工作方式3,二进制计数(也可选BCD计数)。,62,计算机接口技术,MOV AL,00110101B;计数器0控制字OUT 86H,ALMOV AL,00H;计数器0计数初值OUT 80H,ALMOV AL,10HOUT 80H,ALMOV AL,01110110B;计数器1控制字OUT 86H,ALMOV AL,0E8H;计数器1计数初值OUT 82H,ALMOV AL,03HOUT 82H,AL,63,计算机接口技术,例2:计件系统。计件系统的功能就是记录脉冲的个数。一个脉冲代表一个事件,比如交通道路检测系统中通过检测点的车辆,工业控制系统中流水线上已加工好的工件。要求在计件过程中,计算机可以显示当前计数器的内容,当完成10000个工件记录后,系统发出1KHz信号推动喇叭发音,通知用户。,解:1、电路 需要两个计数器通道,一个作为计数,选用计数器0。另一个产生1KHz信号,选用计数器1。工作原理如下,传感器电路把物理事件转换为脉冲信号输入到计数器0计数,当记录10000个事件后,计数器0溢出,GATE端输出高电平,这时计数器1开始工作,产生1KHz信号推动喇叭发音。,64,计算机接口技术,2、工作方式选择 对于计数器1,由于要产生1KHz信号,选用工作方式3。对于计数器0,要求初始计数值写入计数器后,计数器就可以工作,则通道0的启动方式应是软件启动。另外由于要求计数溢出后产生一个信号来启动一个事件,即喇叭发音,故可选的工作方式为方式0和方式4,对于图所示方案,计数器1的GATE信号由计数器0的OUT信号产生,这个OUT信号应该是电平型的,所以计数器0应选用方式0。,65,计算机接口技术,3、时间常数 N010000=2710H 4、相应程序段:,66,计算机接口技术,MOV DX,306H;计数器1初始化MOV AL,01110111BOUT DX,ALMOV DX,302HMOV AL,00HOUT DX,ALMOV AL,10HOUT DX,ALMOV DX,306H;计数器0初始化MOV AL,00110000BOUT DX,ALMOV DX,300HMOV AL,10HOUT DX,ALMOV AL,27HOUT DX,AL,67,计算机接口技术,GETDAT:CALL DELAY;延时 MOV DX,306H;计数器0锁存 MOV AL,0000000B OUT DX,AL MOV DX,300H;读计数器0 IN AL,DX MOV CL,AL;数据存入CX寄存器 IN AL,DX MOV CH,AL CALL DISPLAY;显示CL内容 CMP CX,0;检查计数器内容是否为0 JNZ GETDAT;不为0,重复,