《微机接口原理》A+学习笔记系列--外设定时

一.硬件定时器

(一).定时类型

在PC微机中,有两类时钟脉冲,用于系统同步、定时:

内部定时是由cpu的晶振产生的工作时钟,其频率为处理机工作频率。

非处理器时序结构的时钟统称‘外部定时’。


在《计算机组成原理》中有过基本讨论:外设工作频率相较CPU不高,外部定时一般为ms级别,而处理机定时一般为ns级。


(二).定时方法

1.软件定时

由指令来实现延时等待功能:常见的方法有延时指令NOP,CPU停顿一个指令周期,还有循环控制:将BX内置0FFEH,减至0000H时运行结束。

NOP

MOV BX,0FFEH

DELAY: DEC BX

JNZ DELAY

软件定时实现方便,不需要冗余硬件参与,但是CPU在期间长期闲置,没办法进行正常工作,显然软件实现不是最优选择。

2.硬件定时


靠硬件部件实现定时控制。

二.可编程定时/计数器(以82c54A为例)

(一).管脚特性

如下图所示,为82c54A外部管脚逻辑示意:

D0-D7为8位双向数据线,用于与8086CPU进行数据双向交互(如计数初值送入、发送工作命令、计数结果返回等)但是应该注意:82c54A内计数器为16bit,而数据总线仅为8位,故初值应该分两次送入芯片。

~CS为使能信号,低电平时82c54A正常工作。

A0-A1为两位片内端口地址,共有00-11四个端口可供访问。

~RD、~WR为读写使能信号,面向8086CPU,由8086发送控制微指令。

gate0--gate2为计数器使能信号。

OUT0--OUT2为82c54A的计数输出。


(二).内部结构

8254内部共有三个计数器,一个命令寄存器,共四个寄存器,由两位地址线进行片选。

如上图为8254内部结构逻辑示意,其中counter0---counter2为三个16位互相独立的减计数器,地址为304H---306H,置数位均与数据总线相连,OUT0--2、GATE0--2管脚分别对应计数器0--2,

control Register为控制寄存器,与总线相连,8254命令字长为8位,一次性发送即可。其地址为307H。命令字由组合逻辑分析产生控制信号,其内部结构不详细展开。对16位计数器,其计数范围为FFFFH---0000H。

但是最大计数初值应该置0000H

因为,在硬件无符号模式下,0000H-0001H=FFFFH,即相当于从10000H-0000H计数。

(三).命令格式

8254A共有6种工作模式,其命令真值如下所示:

D7--D6为计数器选择,其中00、01、10为选择工作的计数器标号,11为读回状态指令,当该位为‘11’时,后续格式有所不同,详见后续。

D5--D4为读写工作选择,其方式详细如下:

D3--D1为工作方式选择:Type0--Type5为6种不同的工作方式。

D0为计数方式选择,8254A有两种计数方式:2进制计数模式和BCD码计数模式。

 读回命令格式如下所示:一条读回命令可以一次性锁存三个计数器的现态,以便判断硬件状态。

(四).功能逻辑

        8254A的启动方式分为软启动和硬启动,两者区别在于是否需要对应GATE管脚输入一次脉冲信号:硬件启动在收到初值后等待对应GATE管脚上的脉冲信号,故称‘硬件启动’。

        而软件启动在GATE电平满足条件的情况下,收到计数初值时即可开始计数,由计数初值启动,故称‘软件启动’。

1.方式0(软启动)

        最常用的工作方式:计数次数即为计数初值,计数结束时刻在对应OUT管脚产生高电平。可用于产生中断申请信号(这即为微机中实时钟中断的产生方式,在操作系统中要基于时钟中断进行时间片下进程调度)。

其启动方式将对应的GATE管脚置‘1’即可,其对应OUT输出在计数结束前恒为‘0’,计数结束后立刻跳为‘1’。

2.方式1(硬启动)

称为单稳态可编程触发器:在确认收到计数初值时,每次对应GATE管脚上输入一个窄上跳脉冲时,计数启动。计数过程中对应OUT管脚输出‘0’,计数结束时输出‘1’。

3.方式2(软启动)

当对应GATE输入为1时,收到计数初值即刻开始计数。计数器循环计数,当计数值为0001H时,输出一个时钟周期宽度的低电平窄脉冲

4.方式3(软启动)

称为“方波发生器”(或称“奇偶方波发生器”),其计数输出模式为:对偶数计数初值,按1/2时钟周期进行分频。而计数初值为奇数则多一拍分频

计数初值为n=2k+1,k\inN+时,初值n为奇数,低电平占\frac{n-1}{2}拍,高电平占\frac{n+1}{2}拍,占空比n-1:n+1几乎近似于1:1。当对应GATE管脚为‘1’时,收到计数初值即刻开始计数。

5.方式4(软启动)

称为“软件触发选通方式”。与方式二类似:计数值减至0000H时,产生一个时钟周期宽度的低电平窄脉冲。但是方式四不会自动循环,OUT将一直保持‘1’直至下次重新写入计数初值。

6.方式5(硬启动)

称为“硬件触发选通方式”。其工作输出与方式四完全一致,唯一区别是要硬件启动。在一次计数结束时,等待对应GATE管脚上的一次上跳脉冲,重新开始计数。

(五).工作初始化

在系统内的8254A芯片端口地址确定,304H--307H>FFH,只能使用寄存器间接寻址的方式。且计数初值要分两次传送,8086汇编逻辑结构如下:

MOV         DX    ,     307H    

MOV         AL     ,     xxxx_xxxxb                //先送工作命令字

OUT         DX     ,     AL

MOV         AX     ,     0A8FCH                     //送计数初值

MOV         DX    ,      30xH

OUT         DX     ,      AL                              //初值分两次送      

MOV         AL     ,      AH             

OUT         DX     ,      AL

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物质波波波

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值