微型计算机原理及其应用第九章计数器定时器精品文稿.ppt

上传人:石*** 文档编号:52227444 上传时间:2022-10-22 格式:PPT 页数:56 大小:9.40MB
返回 下载 相关 举报
微型计算机原理及其应用第九章计数器定时器精品文稿.ppt_第1页
第1页 / 共56页
微型计算机原理及其应用第九章计数器定时器精品文稿.ppt_第2页
第2页 / 共56页
点击查看更多>>
资源描述

《微型计算机原理及其应用第九章计数器定时器精品文稿.ppt》由会员分享,可在线阅读,更多相关《微型计算机原理及其应用第九章计数器定时器精品文稿.ppt(56页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、微型计算机原理及其应用第九章计数器定时器1第1页,本讲稿共56页定时信号和计数器计算系统中经常用到定时信号:动态RAM刷新、系统的时间和日历以及定时检测和实时控制系统中等都需要定时信号。计数器是对各种脉冲信号进行计数,而定时器则是对时钟信号进行计数!实现定时功能主要有三种方法:1、软件定时 2、不可编程的硬件定时 3、可编程的硬件定时2第2页,本讲稿共56页软件定时(也称软件延时)定时时间由软件编程(循环执行某段程序)来控制。该方法简单、费用低;但CPU的利用率低。不可编程的硬件定时 定时时间由不可编程器件和外围电路控制,通过改变电路参数,可在一定的范围内改变定时时间,定时精度不高。如:555

2、芯片。可编程的硬件定时 定时时间和范围是通过软件对可编程器件进行编程控制;由CPU的时钟信号提供时间基准,定时精确。与CPU并行工作,应用广泛,如8253,8254。3第3页,本讲稿共56页9.1 可编程计数器/定时器的工作原理定时器和计数器 定时器:当设置好定时常数后,在时钟信号作用下,进行定时的减“1”计数,定时时间到(减“1”计数回零)自动重新计数,就从输出端输出周期均匀、频率恒定的脉冲信号。定时器强调的是精确的时间,其应用包括:1.一天24小时的计时,称为日时钟。2.在监测系统中,对被测点的定时取样。3.在键盘去抖中,一般延迟一段时间,再读。4.在微机控制系统中,控制某工序定时启动。4

3、第4页,本讲稿共56页计数器:当设置好计数常数后,在时钟信号(或外接脉冲信号)的作用下,进行减“1”计数,计数次数到(减1计数回零),从输出端输出一个脉冲信号。计数器器强调的是脉冲的数目,应用包括:1.对零件和产品的计数;2.对大桥和高速公路上车流量的统计等等。5第5页,本讲稿共56页9.2 8253/8254的编程结构和外部信号Intel 8253/8254是一种可编程的计数器/定时器芯片,采用NMOS工艺制成。8253/8254的引脚与功能完全相同,两者的区别在于:8254的频率高于8253,且只有8254有状态寄存器。8253内部具有3个独立的16位计数器,分别称为计数器0、计数器1和计

4、数器2;通过编程,每个计数器均有6种工作方式,并且都可以按2进制或10进制2种格式进行计数;可用作可编程方波频率产生器、分频器、程控单脉冲发生器等。6第6页,本讲稿共56页8253的内部结构与引脚信号7第7页,本讲稿共56页 8253与CPU的接口 8 位数据线:D0 D7 寻址控制线:A0、A0、/CS 读写控制线:/RD、/WR 8253与外设的接口三个独立的16位计数器/定时器 时钟输入:CLK 输入门控:GATE 波形输出:OUT 8第8页,本讲稿共56页8253的数据总线缓冲器 一个8位双向的三态缓冲器,作为8253和系统数据总线之间的接口;实现CPU与8253之间数据的传送;传送信

5、息包括:进行初始化编程时的控制字 向某一计数器通道写入的计数初值 从某一计数器通道读出的当前计数值 9第9页,本讲稿共56页读读/写控制逻辑写控制逻辑10第10页,本讲稿共56页&CLKGATE16位当前计数值锁存器位当前计数值锁存器16位减一计数器位减一计数器16位计数初值寄存器位计数初值寄存器OUT(减(减1至至0时)时)MSBLSB装入初值装入初值LSBMSB锁存后读锁存后读出当前值出当前值每个计数器内部包含一个每个计数器内部包含一个16位的计数初值寄存器(位的计数初值寄存器(CR)、一个执行部件)、一个执行部件(CE)及一个输出锁存器()及一个输出锁存器(OL););执行部件执行部件C

6、E从初值寄存器中获得计数初值,便进行减从初值寄存器中获得计数初值,便进行减1计数;计数;输出锁存器的内容随计数执行部件的变化而变化,当有锁存命令来到就锁存输出锁存器的内容随计数执行部件的变化而变化,当有锁存命令来到就锁存当前计数。当前计数。11第11页,本讲稿共56页9.3 8253/8254的控制字和状态字1)控制寄存器和控制字模式设置控制字0 0 0 方式0 0 0 1 方式1 X 1 0 方式2 X 1 1 方式3 1 0 0 方式4 1 0 1 方式5选择计数器 00 选择计数器0的控制寄存器 01 选择计数器1的控制寄存器 10 选择计数器2的控制寄存器 11 非法值SC1SC0RW

7、1RW0M2M1M0BCD00 将计数器中CE的数据锁存到输出锁存器OL中 01 选计数器的低8位字节读/写 10 选计数器的高8位字节读/写 11 计数器两次操作(先低位,后高位)读出,写入计数器0:二进制计数 1:十进制计数12第12页,本讲稿共56页读出控制字1.可以一次锁存多个计数器的计数值,也可同时锁存某个计数器的计数值和状态(8254),但不能同时锁存多个计数器的状态;2.先读入的是状态信息,然后是计数值。13第13页,本讲稿共56页2)状态寄存器和状态字OUTNULLCOUNTRW1RW2M2M1M0BCDD7(OUT):表示OUT端的状态,=1表示OUT端为高电平,=0表示OU

8、T端为低电平;D6(NULLCOUNT):低电平有效,=0表示初值已经装入,=1表示没有装入;D5-D0:含义与模式设置控制字中的对应位含义相同!14第14页,本讲稿共56页9.4 8253/8254的编程命令对计数器设置初值前首先设定模式控制字;计数器初值的设置必须与模式控制字中的规定相符合,即8位/16位;要读取状态字和计数初值,必须先用控制进行锁定,即先写后读!写入命令包含设置控制字、设置计数初值和锁存命令;读出命令包含读取计数器的当前计数值,对于8254还包括状态寄存器中的状态字!15第15页,本讲稿共56页8253的初始化过程分两步完成:先写入控制字再写入计数初值 1、写入控制字 由

9、OUT指令向控制字寄存器写入,用来选定计数器通道、规定该计数器的工作方式和计数方式。写入控制字还起到复位的作用,使得输出端OUT变为规定的初始状态,并使计数器清0。16第16页,本讲稿共56页2、写入计数初值 由OUT指令向某计数器送一个计数初值,可以是8/16位数据。若是8位数,一条OUT指令即可完成初值的设置;若是16位数,必须用两条OUT指令来完成,且先送低8位数据,后送高8位数据。若计数初值为0时,要分成两次写入。0在在二进制计数方式时,表示65536,BCD计数方式时,表示10000。三个计数器初始化没有先后顺序。17第17页,本讲稿共56页【例】某微机系统中,8253的3个计数器端

10、口地址分别为3F0H、3F2H和3F4H,控制端口地址为3F6H,若要求8253的通道0工作于方式3,计数初值N=1234,BCD方式计数,编写初始化程序。初始化程序段如下:MOV AL,00110111B MOV DX,3F6H OUT DX,AL MOV AL,34H MOV DX,3F0H OUT DX,AL MOV AL,12H OUT DX,AL18第18页,本讲稿共56页9.5 8253/8254的工作模式写入控制字后,芯片内部的逻辑控制电路立即复位,输出端OUT进行初始状态;计数器初值在写入以后,要经过一个时钟的上升沿和下降沿,计数执行部件才开始计数;门控信号GATE的触发方式:

11、包括电平触发和边沿触发。19第19页,本讲稿共56页1、模式0计数结束产生中断方式(计数器)工作过程:写入控制字,OUT立即变为低;写初值到计数寄存器(CR),若GATE为高电平,下一个时钟脉冲的下降沿将初值装入计数执行部件(CE),才开始减1计数;计数期间,OUT一直为低;当计数结束(计数值为0),OUT变为高,并一直保持到重新装入初值或设置新的工作方式。u用途:方式0常用来对外部事件计数,利用OUT由低到高的变化中断请求信号。20第20页,本讲稿共56页CW=10HCLKGATEOUTWRLSB=66543210CRCE CR=621第21页,本讲稿共56页u两种特殊情况:1CW=10HC

12、LKGATEOUT 1 0WRLSB=44322210CRCE CR=40101GATE门控信号的改变22第22页,本讲稿共56页u两种特殊情况:CR=3CW=10HCLKGATEOUTWRLSB=33213210CRCE CR=3LSB=3CRCE中途改变计数初值23第23页,本讲稿共56页2、模式1可编程的单稳态触发器(计数器)工作过程:写入控制字,OUT立即变为高,并保持不变。写计数初值N,只有当GATE形成一个上升沿时,才在下一个时钟脉冲的下降沿,将n装入实际计数器,同时OUT由高变为低,开始减1计数;计数期间,OUT一直为低;当计数结束(计数值为0),OUT变为高。用途:输出稳态负脉

13、冲 OUT端输出负脉冲的宽度=时钟脉冲宽度计数值N。24第24页,本讲稿共56页CRCE 12CW=12HCLKGATEWRLSB=330CRCE CR=325第25页,本讲稿共56页NOTE:在计数过程中,GATE为高、低和下降沿,均不影响计数;但若又来一上升沿,则将计数初值重新装入实际计数器并重新开始计数,使负脉冲变长;26第26页,本讲稿共56页3、模式2分频器(定时器)工作过程:写控制字,OUT为高。写计数初值,若GATE为高电平,则在下一个时钟脉冲下降沿,将计数初值装入CE,开始减1计数。当计数值减为1时,OUT由高变低,当减为0时OUT又变为高,即OUT输出一个时钟周期的负脉冲;同

14、时,自动将计数初值装入计数执行部件,开始新一轮的计数过程。用途:分频器 若计数器的初值为n,则OUT引脚产生的波形频率为时钟脉冲频率的n分之一。27第27页,本讲稿共56页CRCECRCECW=14HCLKGATEOUTWRLSB=33210 3210 3CRCE CR=32128第28页,本讲稿共56页NOTE:1)任何时候重新写入新的计数初值,当原计数值减为0时,才按新写入的计数值进行计数;2)计数过程中,当GATE再产生上升沿时,在下一个时钟脉冲下降沿,重新将计数初值装入实际计数器,开始减1计数。29第29页,本讲稿共56页4、模式3方波发生器(定时器)工作过程:写控制字,OUT为高。写

15、计数初值并受到触发后,做减1计数,当计数到一半时,输出变为低电平,到终值时又变为高电平。当计数值N为偶数时,输出为完全对称的方波;当计数值N为奇数时,输出矩形波。GATE=1时,计数进行;GATE=0时,计数停止。硬件同步和软件同步:受到外部门控信号GATE控制的计数过程称为硬件同步!30第30页,本讲稿共56页CRCECW=16HCLKGATEOUTWRLSB=44321432CRCE CR=414计数初值为偶数时的波形31第31页,本讲稿共56页计数初值为奇数时的波形1CRCE CW=16HCLKGATEOUTWRLSB=5543254CR=532CRCE32第32页,本讲稿共56页5、模

16、式4软件触发的选通信号发生器(计数器)工作过程:写控制字,OUT为高。写计数初值并受到触发后,做减1计数,当计数到0时,输出宽度为一个时钟周期的负脉冲(选通信号)。GATE=1时,计数进行;GATE=0时,计数停止。软件再触发:如在计数时写入新的计数值,那么计数器立刻按新的初值进行计数,这种触发称为软件再触发。33第33页,本讲稿共56页CR=2CRCECW=18HCLKWRLSB=22102100CRCE CR=2LSB=234第34页,本讲稿共56页6、模式5硬件触发的选通信号发生器(计数器)工作过程:写控制字,OUT为高。写计数初值并受到触发后,做减1计数,当计数到0时,输出宽度为一个时

17、钟周期的负脉冲(选通信号)。上升沿触发。在计数过程中,若GATE端又来上升沿触发,则重新获得计数初值并重新计数;如在计数过程中,写入新的初值并在受到触发的情况下,将按新的计数初值开始计数。35第35页,本讲稿共56页CRCE CRCE 12CW=1AHCLKGATEOUTWRLSB=330 3332CRCE CR=336第36页,本讲稿共56页各种工作方式特点小结 方式0、1、4、5是计数器,方式2、3为定时器。方式0:写入控制字后,OUT即变低,计数结束后,OUT由低变高;方式1 5:写入控制字后,OUT均变高。方式0、1和4:计数初值装进计数器后,仅计数一次;方式2、3和5:计数值为0后,

18、自动将计数初值装进实际计数器。启动方式:方式0、4为软件启动;方式1、5为硬件启动;方式2、3为软件、硬件均可启动。37第37页,本讲稿共56页门控信号门控信号GATE的控制功能的控制功能38第38页,本讲稿共56页9.6 8253/8254的应用举例8253与CPU的硬件连接以及8253与其他芯片的硬件连接;计数器/定时器在工作之前,首先设置计数器的工作模式,然后设置计数器的计数初值;3个计数器的相互之间是独立的,设置工作方式没有前后顺序!39第39页,本讲稿共56页【例】用8253产生各种定时波形。某个CPU为8086的系统中使用了一块8253芯片,通道的基地址为310H,所用的时钟脉冲频

19、率为1MHz。要求3个计数通道分别完成以下功能:(1)通道0工作于方式3,输出频率为2kHz的方波;(2)通道1产生宽度为480us的单脉冲;(3)通道2用硬件方式触发,输出单脉冲,时间常数为26。40第40页,本讲稿共56页硬件电路设计硬件电路设计C B AG2BG2AG11MHz方波方波74LS1388086 D7D0 A9 A8M/IO RD WR A7 A6A5A4 A3 A0A2 A1Y4 CS CLK08253 D7D0 RD WR A1 A0CLK1CLK2GATE0OUT0GATE1OUT1GATE2OUT22kHz方波方波+5V负脉冲负脉冲480us宽单脉冲宽单脉冲41第41

20、页,本讲稿共56页分析:8253端口地址:因8253基地址为310H,所以通道03、控制端口地址分别为310H,312H,314,316H。各地址线电平要求如下:控制寄存器160110100011214001010001111201001000110100000100011A0A1A2A3A4A5A6A7A8A9通道地址AA0A1BCG2BG2AG142第42页,本讲稿共56页u工作方式选择及初值计算 通道0工作于方式3,计数初值为N0=1MHz/2kHz=500。通道1工作在方式1,计数初值为N1=480s/1s=480。通道2工作在方式5,计数初值为N2=26。43第43页,本讲稿共56页

21、1)通道0初始化程序 MOV DX,316H ;控制口地址 MOV AL,00110111B ;通道0控制字 OUT DX,AL MOV DX,310H ;通道0地址 MOV AL,00H ;先写低字节 OUT DX,AL MOV AL,05H ;后写高字节 OUT DX,AL初始化程序初始化程序44第44页,本讲稿共56页2)通道1初始化程序 MOV DX,316H ;控制口地址 MOV AL,01110011B ;通道1控制字 OUT DX,AL MOV DX,312H ;通道1口地址 MOV AL,80H ;先写低字节 OUT DX,AL MOV AL,04H ;后写高字节 OUT DX

22、,AL45第45页,本讲稿共56页3)通道2初始化程序 MOV DX,316H MOV AL,10011011B ;通道2控制字 OUT DX,AL MOV DX,314H ;通道2地址 MOV AL,26H ;只写入低字节 OUT DX,AL 46第46页,本讲稿共56页【例】利用8253来定时控制LED的点亮与熄灭。要求:循环点亮10秒钟后再让它熄灭10秒钟(周期为20秒),设计接口电路并编程实现。这里8253的各端口地址为81H,83H,85H和87H,时钟信号频率为2MHz。分析:对8253编程,输出周期为20秒的方波信号,就能使LED交替亮灭。47第47页,本讲稿共56页u时间常数计

23、算 输出频率:(1/20)Hz 时间常数:2M/(1/20)=40M 一个通道的计数初值最多为65536,所以采用多通道级联的方法实现。让通道0和通道1都工作在方式3,通道1的CLK端接通道0的OUT。只要满足两个计数初值的乘积为N0*N1=40M即可,所以通道0的计数初值若为:5000;则通道1的则为:8000。48第48页,本讲稿共56页u硬件电路设计 这种设计加上适当的驱动电路后,便可以用在交通红绿灯控制和灯塔等场合。49第49页,本讲稿共56页u8253的初始化程序 MOV AL,00110111B ;通道0 方式3 BCD计数 OUT 87H,AL MOV AL,00H OUT 81

24、H,AL MOV AL,50H OUT 81H,AL MOV AL,01110111B ;通道1 方式3 BCD计数 OUT 87H,AL MOV AL,00H OUT 83H,AL MOV AL,80H OUT 83H,AL50第50页,本讲稿共56页【例】利用8253设计接口电路,对某工程生产线上的产品的数量进行统计。u硬件电路设计A9A0 M/IO A2 A1RD WR I/O 译码译码LED+5V62 工件工件+5VRD WR CS 82538253 A1 A0CLK1GATE1OUT1D7D0 去去8259的的IR074LS14D7D051第51页,本讲稿共56页u工作原理 无工件通

25、过时,光电晶体管导通,集电极为低电平,经74LS14整形后送到CLK1端;有工件通过时,光电晶体管截止,集电极为高,整形后送到CLK1端,工件通过后又变为低。每通过一个工件CLK1端得到一个正脉冲信号,利用8253对脉冲计数,即可得到工件的个数。这种计数方案也可以用于其他场合,如:统计在高速公路上行驶的车辆数,进入工厂的人数。52第52页,本讲稿共56页u问题分析 选择计数器1工作在方式0,二进制计数。若选取计数初值n499,则经过500个脉冲OUT1端输出一个正跳变。向CPU发出一次中断请求(或作为CPU查询的状态信号),表示计满500个,在程序中使工件总数加上500。同时由程序将计数初值4

26、99再装入计数器1,继续进行计数。53第53页,本讲稿共56页u8253的初始化程序 设8253的4个端口地址:F0H,F2H,F4H和F6H,则初始化程序为:MOV AL,01110000B OUT 0F6H,AL MOV AX,499 OUT 0F2H,AL MOV AL,AH OUT 0F2H,AL54第54页,本讲稿共56页u8253计数值的读取 利用指令读取8253的当前计数值,但由于读取计数值时计数过程还在进行,其数值不稳定,导致读取的数据错误的。为防止这种情况发生,可采取下面两种方法:计数器停止计数。关闭CLK脉冲或使GATE信号变低,用IN指令读出计数值。缺点是正常计数过程被干扰。飞读。在计数的过程中读取数据。先对8253写入一个控制字(RL1、RL0为00),将当前计数值锁存到输出锁存器,再用IN指令读取输出锁存器的值。55第55页,本讲稿共56页上例中若求已计工件件数,可执行下面的程序:MOV AL,01000000B ;锁存计数器1控制字 OUT 0F6H,AL ;发锁存命令 IN AL,0F2H ;读低8位 MOV AH,AL IN AL,0F2H ;读高8位 XCHG AH,AL ;计数值在AX中 MOV BX,500 SUB BX,AX ;已计工件数在BX中56第56页,本讲稿共56页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁