编程语言
首页 > 编程语言> > 【汇编与接口】定时器总结

【汇编与接口】定时器总结

作者:互联网

文章目录

定时与计数

  1. 定时
    ① 一天24小时的计时,称为日时钟。
    ② 在监测系统中,对被测点的定时取样。
    ③ 在读键盘时,要去抖动。一般采用延迟一段时间(10ms-20ms)后再去读。

  2. 计数
    ① 对零件和产品的计数。
    ② 对大桥和高速公路上车流量的统计,等等。

  3. 定时与计数的关系
    定时的本质是计数,这里‘数’是时间单位,如s,ms,us,ns。
    因此,定时与计数本质上都是计数,但它们所计的‘数’来源是不同的。

微机系统中的定时类型

  1. 定时系统

(1)内部定时:

(2)外部定时:

(3)外部定时和内部定时是相互独立的两个定时系统。

  1. 时需配合

外部定时方法及硬件定时器

定时方法

  1. 软件定时
    是利用CPU内部定时机构,运用软件编程去循环执行一段程序而产生的等待延时。
  1. 硬件定时
    采用外部定时器进行定时。

外部硬件定时器

  1. 不可编程定时器
  1. 可编程定时器

可编程定时/计数器82C54A

定时原理

定时器三要素:
① 稳定、准确的震荡频率。
② 控制定时开始。
③ 定时时间到后输出的波型。

82C54A的外部连接特性与内部结构

外部连接特性

(1)面向CPU的信号线:

(2)面向I/O设备的信号线

面向CPU的信号线

  1. 数据总线D0-D7:为三态输入输出线。用于将8253与系统数据总线相连。
  2. 片选线CS:为输入信号,低电平有效。当为低电平时,CPU选中82C54,并可以对82C54进行读/写操作;当为高电平时,CPU没有选中82C54。CS由CPU输出的地址码经译码产生。
  3. 读信号RD:为输入信号,低电平有效。
  4. 写信号WR:为输入信号,低电平有效。
  5. 地址线A1,A0:这两根线接到系统地址总线的A1,A0上,用于片内寻址。

面向I/O设备的信号线
6. 计数器时钟信号CLK:CLK为输入的计时脉冲信号。
7. 计数器门控选通信号GATE:为输入的计时启动、允许/禁止信号。
8. 数器输出信号OUT:为定时到的输出信号。

内部结构

82C54内部模块:6个模块,结构如下图示

各组成部分的含义:

  1. 数据总线缓冲器:它是一个三态、双向8位寄存器,用于将8253与系统数据总线D0-D7 相连。
  2. 读/写逻辑:用于读/写控制和片选。
  3. 控制命令寄存器:它接收CPU送来的控制字。
  4. 计数器:3个独立的16位计数器(计数通道),其内部结构完全相同,均由16位计数初值寄存器减法计数器、以及当前计数器锁存器三部分组成

  1. 计数初值寄存器(16位)
    用于存放计数初值(定时常数、分频系数),其长度为16位,故最大计数值为65536(64KB)。在初始化时同减1计数器的初值一起装入。计数初值寄存器的计数初值,在计数过程中保持不变
  2. 减1计数器(16位)
    用于进行减1计数操作,每来一个时钟脉冲,它就作减1运算,直至将计数初值减为0
  3. 当前计数值锁存器(16位)
    用于锁存减1计数器的内容,以供读出和查询。由于减法寄存器的内容不断变化,需先锁存才能读出。

82C54A的命令字

82C55A有3个命令字。3个命令字是:方式命令、锁存命令和读回命令。其中方式命令是必须的,其它两个命令根据需要使用。

注意:这三个命令字使用同一个端口,按方式命令在先,其它命令在后的循序写入端口。

方式命令

例:使用计数器T1工作在4方式,向通道写时间常数3F8H,二进制计数。设307H是命令寄存器的地址,305H是定时器1的地址,则初始化程序段为:

    MOV  DX,307H        ;命令口
    MOV  AL,01111000B   ;方式字
    OUT  DX,AL
    MOV  DX,305H        ;T1数据口
    MOV  AL,0F8H        ;低8位计数值             
    OUT  DX,AL
	MOV  AL,03H	       ;高8位计数值
	OUT  DX,AL

锁存命令

将减1寄存器的内容锁存到输出寄存器中,以供CPU读取。

锁存命令格式:

读当前计数值为什么要先锁存计数值?
减1计数器是16位的,而定时器的数据线是8位的,必须读两次才能读出16位数据,在两次读操作时可能使减1计数器的内容发生变化。

例:要求在计数器通道1的计数过程中读取当前的计数值,并把读取的计数值装入到AX寄存器中。设4个端口的地址为:304H(通道0),305H(通道1),306H(通道2),307H(命令寄存器)

    MOV DX,307H
	MOV	AL,0100XXXXB		;锁存计数器1
	OUT DX,AL
	MOV DX,305H
	IN AL,DX			;读低字节
	MOV BL,AL
	IN AL,DX			;读高字节
	MOV AH,AL
	MOV AL,BL

读回命令(8253不具有这种功能)

读回命令与前面的锁存命令不同,它既能锁存计数值又能锁存状态信息,而且一条读回命令可以锁存3个计数通道的当前计数值与状态。

读回命令格式:

注意:读回命令只是一个锁存的功能,要读回计数值和状态还要发一条读命令。

含义:
D1,D2,D3用于选择3个计数器
1:选中,0:未选中;
D4,D5用于选择读当前状态还是当前计数值
0:要读取,1:不读取

例:

状态字

状态字中的低6位D0-D5与方式字中的低6位是相同的;

D6位计数器的输出状态,1:输出引脚为逻辑1,0:输出引脚为逻辑0

D7表示是否有空计数值,1:空计数值,0:计数值有效

82C54的工作方式与功能

82C54的工作方式:有6种工作方式,不同的工作方式主要体现在输出波形、计数过程、初值装入,启动方式、停止方式、以及典型应用上。

0方式:事件计数器


例:使计数器T1工作在0方式,进行16位二进制计数,计数初值的高低字节分别为0AH和35H。其初始化程序段为

      MOV   DX,307H      	;命令口
      MOV   AL,01110000B 	;方式字
      OUT   DX,AL                    
      MOV   DX,305H     	;T1数据口
      MOV   AL,35H     	;计数值低字节
      OUT   DX,AL
      MOV   AL,0AH      	;计数值高字节
      OUT   DX,AL         

1方式:可编程单稳态触发器

例:使计数器T2 工作在1方式,进行8位二进制计数,并设计数初值的低8位为0E0H。

    MOV   DX,307H               ;命令口
    MOV   AL,10010010B          ;方式字
    OUT   DX,AL
    MOV   DX,306H               ;T2数据口
    MOV   AL,0E0H               ;低8位计数值
    OUT   DX,AL

2方式:分频器

例:使计数器T0 工作在2方式,进行16位二进制计数,计数初值0100H。其初始化程序段为

    MOV   DX,307H               ;命令口
    MOV   AL,00110100B          ;方式字
    OUT   DX,AL
    MOV   DX,304H               ;T0数据口
    MOV   AL,00H                ;低8位计数值
    OUT   DX,AL
    MOV   AL,01H                ;高8位计数值
    OUT   DX,AL

3方式:方波发生器

4方式:软件触发选通

5方式:硬件触发选通

82C54的输出基本波形

82C54的启动方式与停止方式

  1. 启动方式
  1. 停止方式

小结:6种工作方式的比较

  1. 方式0和方式1:共同点是:输出OUT波形类似,OUT在计数开始时为0,并在计数过程中保持不变;在计数结束时变为1。并可作为中断请求信号,无自动重装载。不同点是:GATE对计数的影响及启动计数器的触发信号不同。0方式靠软件启动,1方式靠硬件启动。
  2. 2方式和3方式:共同点是:具有自动再装入的能力(减到0时自动装入)。所以,OUT可输出连续的波形。不同点在于:方式2在计数过程中输出高电平,每当减到1时输出一个宽度为1个TCKL的负脉冲。方式3在计数过程中,输出1/2初值的正负方波。
  3. 方式4和方式5:相同点是:OUT输出波形相同,在计数过程中为高电平,在计数结束后输出一负脉冲,并无自动装入的能力。不同点在于:两种方式的计数触发方式不同,方式4靠软件启动(写入计数初值),方式5靠硬件启动(GATE的上升沿)。

82C54A的计数初值计算及装入

同时装入初值寄存器和减法计数器,产生不同的定时。

  1. 计数初值的计算


2. 计数初值的装入

  1. 计数初值的范围

82C54A的初始化

  1. 设置方式命令字
  2. 设置计数初始值

定时/计数器的应用

两种情况:

两者不同之处:

在微机系统中82C54:

系统的应用配置如下:

例题

例1:利用计数通道2产生896HZ的方波使扬声器发声。

初值的计算:

T=1.19318MHZ/896HZ=1331=533H

	MOV AL,10110110B	;初始化方式字
	OUT 43H,AL
	MOV AX,533H		;初值为533H
	OUT 42H,AL		;先低后高
	MOV AL,AH
	OUT 42H,AL	

例2:计数通道0每55ms产生一次中断请求

初值的计算:

T=1.19318MHZ/(1/55ms)≈65536

	MOV AL,00110110B	;初始化方式字
	OUT 43H,AL
	MOV AX,0H		;初值为00H(最大值)
	OUT 40H,AL		;先低后高
	MOV AL, AH
    OUT 40H,AL

例3:计数通道1每15us请求一次DMA传送

初值的计算:

T=1.19318MHZ/(1/15us )≈12H

	MOV AL,01010100B	;初始化方式字
	OUT 43H,AL
	MOV AL,12H		;初值为12H
	OUT 41H,AL		

标签:汇编,定时器,初值,AL,接口,计数,计数器,定时,OUT
来源: https://blog.csdn.net/weixin_46068120/article/details/122771899