第11章可编程定时器计数器_第1页
第11章可编程定时器计数器_第2页
第11章可编程定时器计数器_第3页
第11章可编程定时器计数器_第4页
第11章可编程定时器计数器_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章可编程定时器/计数器11.1概述11.2可编程定时/计数器825311.1概述实现定时方法主要有三种:软件定时、不可编程的硬件定时、可编程硬件定时。定时或计数的工作实质均体现为对脉冲信号的计数。如果计数的对象是标准的内部时钟信号,由于其周期恒定,故计数值就恒定地对应于一定的时间,这一过程即为定时。如果计数的对象是与外部过程相对应的脉冲信号(周期可以不相等),则此时即为计数。11.2可编程定时/计数器825311.2.1

8253的主要性能11.2.2

8253的内部结构及外部引脚11.2.3

8253的工作方式及波形 11.2.4

8253的编程 11.2.5

8253的应用 一、8253的主要性能主要性能:1.3个16位(每个可分为两个8位)减法计数器/通道;2.2种计数制式:二进制计数或BCD码计数;3.最大计数值为65536;4.6种不同的方式工作。5.计数速率高达2MHZ。二、8253的外部引脚D0~D7:数据线。CS#:片选信号,低电平有效。

RD#:读控制信号,低电平有效。WR#:写控制信号,低电平有效。A0、A1:地址线,用于选择3个计数器中的一个及选择控制字寄存器。二、8253的外部引脚(续)OUT0~2:计数器0#、1#、2#的输出端。GATE0~2:计数器0#、1#、2#的门控制脉冲输入端,由外部设备送入门控脉冲。CLK0~2:计数器0#、1#、2#的时钟输入端。三、8253的内部结构三、8253的内部结构(续)8253的内部结构:3个结构相同的16位计数器;

1个8位控制字寄存器。计数器内部结构:计数初值寄存器CR;计数执行部件CE;输出锁存器OL;都是16位寄存器,也可作8位寄存器使用。计数器内部结构计数器工作过程通过程序给计数初值寄存器CR送入初始值;初始值被送入计数执行部件CE进行减1计数;输出锁存器OL用来锁存CE的内容,可由CPU进行读出操作。

8253内部的3个计数器和1个控制字寄存器,可通过地址线A0、A1,读写控制线RD#、WR#与片选CS#进行寻址,并实现相应的操作。8253读写控制逻辑表四、8253的工作方式方式0-中断信号发生器方式1-可编程单稳负脉冲信号发生器方式2-分频器方式3-方波信号发生器方式4-软件触发的选通脉冲信号发生器方式5-硬件触发的选通脉冲信号发生器方式0-中断信号发生器写控制字:设定工作方式后,OUT端变为低电平;写初值:8位/16位(分2次)初值;开始计数:计数值装入执行部件,每个CLK下降沿,减1计数;计数结束:减到0时,计数过程结束,OUT端变为高电平。此输出信号可作为计数结束的中断请求信号;GATE作为计数控制信号:计数过程中,GATE=1:允许计数;GATE=0:暂停计数;重新计数:计数过程中,可随时写入新的计数值;如果初值为8位,则写完初值后,按新的初值重新开始计数;如果新的初值为16位,则写入第一个字节时,立即中止计数,写入第二个字节后,按新的初值重新开始计数;计数结束后,OUT端保持高电平,直至赋新的初值。方式0时序波形图(一)方式0时序波形图(二)写入8253的计数初值只是写入了CR,之后到来的第一个CLK输入脉冲(由低电平变高,再由高变低)才将初值送到CE减1计数器。从第二个CLK信号的下降沿才真正开始减1计数。方式1-可编程单稳负脉冲信号发生器写控制字:设定工作方式后,OUT端变为高电平;写初值:8位/16位(分2次)初值;开始计数:GATE上升沿控制计数开始。GATE上升沿的下一个时钟周期OUT变为低电平,每个CLK下降沿,减1计数;计数结束:减到0时,计数过程结束,OUT端变为高电平。此方式可以输出一个宽度(计数初值*Tclk)可调的单拍负脉冲,可作为设备的选通信号。重设初值:计数过程中,重新写入初值,对当前计数过程不会产生影响;重新触发:计数过程中,GATE上升沿的下一个时钟脉冲计数器将从初始值重新作减1计数,此时OUT端低电平保持不变,从而加宽了输出的负脉冲宽度。重新计数:计数结束后,GATE上升沿控制新一轮计数。方式1时序波形图(一)

方式1时序波形图(二)

方式2-分频器写控制字:设定工作方式后,OUT端变为高电平;写初值:8位/16位(分2次)初值;开始计数:计数值装入执行部件,每个CLK下降沿减1计数;计数结束:当计数器减到1时,OUT端输出将变为低电平;再经过一个时钟周期,计数值减到0后,OUT又恢复为高电平。在此方式下,计数器具有自动装入计数初值的功能,即计数器的计数过程会自动重复工作。从而产生一个n分频(n是写入计数器的初值)的连续的不对称的脉冲信号,可以作为脉冲信号发生器。重设初值:计数过程中重新写入初值不影响当前计数过程;计数过程控制:GATE=1:允许计数;GATE=0:停止计数,并强迫OUT输出高电平;GATE上升沿:下一个时钟周期,计数器恢复初值重新开始作减1计数。方式2时序波形图方式3-方波信号发生器

方式3与方式2类似,不同的是输出的波形为方波或者为近似对称的矩形波。

当计数值n为偶数:每当计数值减到n/2时,OUT端由高电平变为低电平,并一直保持计数到0,一旦计数为0时OUT端又由低变高并重新给计数器装入初值。

当计数值n为奇数:输出分频波高电平宽度为(n+1)/2计数脉冲周期,低电平宽度为(n-1)/2计数脉冲周期。方式3时序波形图(一)

方式3时序波形图(二)

方式4-软件触发的选通脉冲信号发生器写控制字:设定工作方式后,OUT端变为高电平;写初值:8位/16位(分2次)初值;开始计数:计数值装入执行部件,每个CLK下降沿减1计数;计数结束:减到0时,输出宽度为1个Tclk的负脉冲。该负脉冲可以作为选通信号。计数过程控制:GATE=1允许计数;GATE=0停止计数;重设初值:该方式是一次有效,即不重新写入计数值,就只产生一个选通脉冲。如果在计数时又写入新的计数值,则在下一个时钟周期时将把此计数值写入计数器执行部件,使计数器按此新的计数值重新计数。方式4时序波形图(一)

方式4时序波形图(二)

方式5-硬件触发的选通脉冲信号发生器

此方式与方式4类似,不同的是:方式4靠软件触发,而方式5是利用引脚GATE来触发。

GATE上升沿触发:下一时钟周期,计数器开始作减1计数。任何时刻,当GATE触发脉冲上升沿到来时,将把计数初值重新送入计数器,然后重新开始计数过程。五、8253的编程写入方式控制字写入计数值读取计数值8253的编程—写入方式控制字8253的编程—写入计数值

若规定只写低8位,则只写1次,且写入的为计数初值的低8位,高8位自动为0。若规定只写高8位,则只写1次,且写入的为计数初值的高8位,低8位自动为0。若规定写两次,则先写入的为计数初值的低8位,再写入的为计数初值的高8位。

选择二进制时计数值范围:0000H~FFFFH0000H是最大值,代表65536

选择十进制(BCD码)计数值范围:0000~99990000代表最大值100001、当采用8位二进制计数时:

在8253初始化编程的传送指令“MOVAL,n”中,n可以写成任何进制数(二进制、十进制或十六进制)的形式。2、当采用16位二进制计数时:

方法一:先把计算得到的十进制计数初值n转换成十六进制数(即16位二进制),然后分两次写入8253的指定端口。方法二:先把该十进制计数初值n直接传送给AX,然后分两次写入8253指定端口,即:

MOVAX,nOUTPORT,AL ;先写低8位(PORT为端口号)

MOVAL,AHOUTPORT,AL ;后写高8位8253的编程—写入计数值注意事项3、当采用十进制(BCD码)计数时:

例如n=50,则应按如下方式写入:

MOVAL,50HOUTPORT,AL

如果n=1250,则需分两次写入,即:

MOVAL,50HOUTPORT,AL;先写低8位

MOVAL,12HOUTPORT,AL;后写高8位也可按如下方法两次写入:

MOVAX,1250HOUTPORT,AL;先写低8位

MOVAL,AHOUTPORT,AL;后写高8位将十进制计数初值n加上后缀H,以便在相应的传送指令执行后能够在AL(或AX)中得到十进制数n的BCD码表示形式。8253的编程—写入计数值注意事项(续)【例11.1】已知8253的端口地址为40H~43H,用8253的计数器0,每隔2ms输出一个负脉冲,设CLK0为2MHz,完成软件设计。

解:

1、计算计数初值N:

8253的编程举例2、确定控制字:根据题意,选择计数器0,工作方式2。(1)二进制计数,计数初值为4000(0FA0H),既写高字节,又写低字节。控制字为:00110100B=34H(2)BCD码计数,计数初值为4000H,低字节为0,可只写高字节。控制字为:00100101B=25H3、确定各端口地址计数器0,计数器1,计数器2,控制端口的地址分别为40H、41H、42H和43H。

8253的编程举例(续1)4、程序:(1)采用二进制计数: MOVAL,34H ;控制字 OUT43H,AL ;写到控制端口

MOVAX,4000;把4000自动分离出低8位和高8位 OUT40H,AL ;先送低8位到计数器0

MOVAL,AH ;把高8位给AL

OUT40H,AL ;再送高8位到计数器0(2)采用BCD码计数: MOVAL,25H ;控制字 OUT43H,AL ;写到控制端口

MOVAL,40H ;只需写高字节,低字节自动为0 OUT40H,AL ;写高8位到计数器08253的编程举例(续2)8253的编程—读取计数值

对8位数据线,读取16位计数值需分两次。计数在不断进行,应该将当前计数值先行锁存,然后读取。

【例11.2】设某系统中8253的端口地址为0B0~0B3H,读取计数器1当前的计数值(设计数值为16位),并存入BX寄存器的程序如下:

解: MOVAL,01000000B ;发锁存命令 OUT0B3H,AL ;写入控制端口 INAL,0B1H ;读低8位 MOVBL,AL ;存入BL中 INAL,0B1H ;读高8位 MOVBH,AL ;存入BH中六、8253的应用

在IBMPC/XT机中,8253是CPU外围支持电路之一,为系统电子钟提供时间基准,为动态RAM刷新提供定时信号以及作为扬声器的声源等功能。

CLK0~CLK2由8284时钟发生器输出的外部时钟PCLK(2.38MHz)经过2分频获得,其频率为1.19MHz。

8253的3个计数器端口地址为:40H、41H、42H;控制寄存器端口地址为43H。PC机中的8253为系统电子钟提供时间基准,即向系统日历时钟提供定时中断。其输出端OUT0作为系统的中断源接到中断控制器8259A的中断请求端IRQ0。选用方式3工作,以产生周期性的方波信号。为此,对计数器0编程时应设置的控制字为36H。计数器初值预置为0(即最大值65536),因此OUT0输出方波的时钟频率为:1.19MHz/65536=18.21Hz。每间隔55ms产生一次0级中断(每秒出现18.2次)。GATE0接+5V,允许计数。PC机中的8253—计数器0

为动态RAM刷新提供定时信号,即向DMA控制器定时发动态存储器刷新请求。选用方式2工作,相当于一个分频器。控制字为54H.

计数器初始值为18。OUT1输出的分频脉冲频率为:1.19MHz/18=66.1KHz。相当于周期为15.1μs。这样,计数器1每隔15.1μs经由U21产生一个动态RAM刷新的请求信号DRQ0,以完成对动态RAM的刷新。

GATE1接+5V,允许计数。

PC机中的8253—计数器1系统扬声器的声源,其输出信号送往扬声器。根据OUT2端输出信号的频率来控制扬声器的音调。扬声器发声的长短取决于OUT2信号延续时间的长短,通过门控信号GATE2控制。GATE2是在并行接口芯片8255A的PB0的。

方式3工作,控制字为B6H。

初值置533H(即1331)。OUT2输出方波频率为:1.19MHz/1331=894Hz。PC机中的8253—计数器28253的3个计数器的预置程序如下:PR0:MOVAL,36H ;选择计数器0,写双字节计数值, ;方式3,二进制计数

OUT43H,AL ;写控制字

MOVAL,0 ;预置计数值65536 OUT40H,AL ;先送低字节计数值

OUT40H,AL ;后送高字节计数值PR1: MOVAL,54H ;选择计数器1,读/写低字节计数 ;值,方式2,二进制计数

OUT43H,AL MOVAL,12H ;预置计数器初值18 OUT41H,ALPR2: MOVAL,0B6H ;选择计数器2,读/写双字节计数 ;值,方式3,二进制计数

OUT43H,AL MOVAX,533H ;送分频数1331 OUT42H,AL ;先送低字节

MOVAL,AH OUT42H,AL ;后送高字节【例11.3】某8086系统中有一片8253芯片,端口地址为500H、502H、504H、506H,各通道均接6MHz的时钟信号,要求在计数器0输出一个最大宽度的负脉冲,计数器1输出一个方波信号,周期为10s,计数器2输出一个定时中断信号,定时时间为0.2ms,写出其初始化程序。

8253的应用举例1

分析:计数器0、1、2的地址分别为500H、502H、504H,控制端口的地址为506H。计数器0工作在方式1,必须采用二进制,计数器值为0(65536)。

计数器1工作在方式3,计数值为

60,只写低字节,采用二进制或BCD码计数都可以。

计数器2工作在方式0,计数值为1200,采用二进制或BCD码计数都可以。8253的应用举例1(续一)计数器0:MOVDX,506HMOVAL,00110010BOUTDX,ALMOVDX,500HMOVAL,0OUTDX,ALOUTDX,AL计数器2:MOVDX,506HMOVAL,10110000BOUTDX,ALMOVDX,504HMOVAX,1200OUTDX,ALMOVAL,AHOUTDX,AL计数器1:MOVDX,506HMOVAL,01010111BOUTDX,ALMOVDX,502HMOVAL,60HOUTDX,AL8253的应用举例1(续二)【例11.4】某8088系统中有一片8253芯片,端口地址为150H~153H,计数器0的输出作为计数器1的计数脉冲,利用计数器1控制发光二极管,使发光二极管持续闪烁,亮2秒,灭2秒,利用其计数器2完成对外部事件计数,计满200次向CPU发出中断申请,试编写8253的初始化程序,硬件电路如图11.12所示。8253的应用举例2计数器0:计数初值N=2MHz/1KHz=2000,设采用二进制计数,操作类型为11(2000=07D0H,高低字节都不为0),方波为方式3。

初始化程序如下:

MOVAL,00110110B ;通道0的控制字MOVDX,153H ;控制端口的地址OUTDX,AL ;写控制字到控制端口MOVAX,2000;让计数初值2000自动分离出高低字节MOVDX,150H ;通道0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论