8253工作方式区别、计数初值及应用

本文详细介绍了8253计数器的六种工作方式,包括方式0到方式5的特点及计数初值计算。通过具体的应用例子,如CNT0的10ms负脉冲、CNT1的10KHz方波和CNT2的5ms定时中断,阐述了如何根据需求选择合适的工作方式和计算计数初值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8253工作方式

方式0:
不是连续波形,产生中断;计数期间为低电平,结束为高电平。
在这里插入图片描述
方式1:
周期性波形,计数期间为低电平,其余为高电平。
在这里插入图片描述
方式2:
连续波形产生负脉冲,在最后一个计数期间为低电平,其余为高电平。
在这里插入图片描述
方式3:
周期性方波(占空比1:1)。
在这里插入图片描述
方式4:
单次波形输出,计数结束后输出一个CLK周期的低电平,其余为高电平,不能自动循环。
在这里插入图片描述
方式5:
单次波形输出,波形特征同方式4,但重置初值和GATE上升沿之后可重新计时。
在这里插入图片描述

工作方式之间的关系及计数初值

方式0和方式1:

  • 方式0和方式1输出波形都是单次波形输出,输出低电平的宽度τ为时钟周期Tclx的整数倍。
  • 方式0是软件控制启动,也就是计数初值一旦写 入就开始减一计数,输出低电平的时间由计数初值决定,软件控制的单稳态触发器。
  • 方式1是硬件控制启动,也就是计数初值写入不是马上计数,需要门控信号GATE由0→1上升沿才开始减一计数,硬件控制的单稳态触发器。
  • 可以根据计数初值N得到低电平的宽度τ。已知输出低电平的宽度τ ,可以得到计数初值N,计算公式是:
    方式0:τ= (N+1)×Tclk
    方式1:τ =N×Tclk

方式2和方式3:

  • 方式2和方式3输出的波形都是周期性波形输出Tout,方式2输出周期性、宽度为窄脉冲信号,方式3输出周期性方波信号。
  • 二者的周期可以根据计数初值确定。已知输出周期,可以得到计数初值N,计算公式是:
    方式2:Tout=N×Tclk
    方式3:Tout=N×Tclk

方式4和方式5:

  • 方式4和方式5输出的波形都是单次波形输出,输出窄脉冲的宽度等于时钟周期Tclx。
  • 方式4和方式5分别是软件控制和硬件控制的单脉冲发生器。
  • 可以根据计数初值N来确定何时输出窄脉冲。反过来,已知何时输出窄脉冲,可以得到计数初值N,计算公式是:
    方式4: τ=N×Tclk
    方式5: τ =N×Tclk

8253应用举例

采用8253作定时/计数器,其接口地址为0120H~0123H。输入8253的时钟频率为2MH。要求:

  • CNT0每10ms输出一个CLK周期宽的负脉冲;
  • CNT1输出10KHz的连续方波信号;
  • CNT2在定时5ms后产生输出高电平。

解题:
(1)确定计算初值:
分析:
计数器0每10毫秒输出一个负脉冲,要输出负脉冲,且为连续的计数方式,即工作方式2
计数器1是方波信号,即工作方式3
计数器2是定时后输出高电平,即工作方式0的工作特性,一般是用来产生中断。
根据各个工作方式的公式计算初值
计算初值的方法
①计数初值=定时时间/时钟周期=T/Tclk
②计数初值=时钟频率/输出频率=fclk/f
CNT0:N=Tout/Tclk=10ms/(1/2MHz)=10ms/0.5μs=20000;
CNT1:N=Tout/Tclk=1/10KHz/(1/2MHz)=200
CNT2:N=T/Tclk=5ms/0.5μs=10000。
注:我想说一下,这里题目说的是定时时长,所以CNT2根据公式①可算得,CNT0,CNT1是根据上面部分内容里的公式计算的,但是我是疑惑了很久这个地方。
(2)确定控制字
计数值选择16位还是八位根据计数初值的大小确定,8位的边界为255
CNT0:方式2,16位计数值,00 11 010 0(34H)
CNT1:方式3,低8位计数值,01 01 011 0(56H)
CNT2:方式0,16位计数值,10 11 000 0(B0H)
(3)线路连接图
在这里插入图片描述
(4)初始化程序

CNT0:
MOV DX,0123H            ;初始化
MOV AL,34H
OUT DX,AL
MOV DX,0120H            ;写入计数初值
MOV AX,20000            ;使用AX寄存器,分为低8位和高8位,即AL和AH
OUT DX,AL
MOV AL,AH
OUT DX,AL
CNT1:
MOV DX,0123H            ;初始化
MOV AL,56H
OUT DX,AL
MOV DX,0121H            ;写入计数初值
MOV AX,200              ;这里AX可以直接写AL,200用八位寄存器就够   
OUT DX,AL
CNT2:
MOV DX,0123H            ;初始化
MOV AL,B0H
OUT DX,AL
MOV DX,0122H            ;写入计数初值
MOV AX,10000
OUT DX,AL
MOV AL,AH
OUT DX,AL

补充:
时间周期与频率互为倒数关系(频率常用符号f或u),表示即:f=1/T;
单位:1Hz表示1s
1THz = 10³GHz 1GHz = 10³MHz 1MHz = 10³KHz 1KHz = 10³Hz
1秒=10³毫秒(ms) 1毫秒=10³ 微秒(μs) 1微秒=10³ 纳秒(ns) 1 纳秒=10³皮秒(ps) 1皮秒=10³飞秒(fs)

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值