当前位置: 首页 > article >正文

微机原理——定时器8253(8254)学习2应用与设计

目录

简要说明

 用户扩展的定时计数器应用举例

1 8254作测量脉冲宽度

2 8254作定时

3 8254作分频

4 8254同时用作计数与定时

硬件设计

​编辑软件设计

微机系统中定时计数器应用举例

5 计时器设计

硬件设计

软件设计

6 发生器设计

硬件设计

软件设计


简要说明

定时器应用有两种,一种是根据系统分配的定时/计数资源来开发,一种是利用用户扩展的定时/计数器来开发。这两种端口地址不同,前一个是系统指定的,后一个是由用户指定;前一个的工作方式和计数器通道的具体用途是由系统的初始化确定的固定不变,后一个由用户在设计时安排。

(由系统分配的端口地址)根据表3.1:系统分配给8253的端口地址:0号计数器40H,1号计数器41H,2号计数器42H,方式命令寄存器43H,时钟脉冲频率1.19318MHz。

(用户扩展的定时器应用)根据表3.3:0号计数器地址304H,1号计数器305H,2号计数器306H,方式命令寄存器307H,时钟脉冲频率1.19318MHz。

三个计数器通道的初始化汇编语言:

 用户扩展的定时计数器应用举例

1 8254作测量脉冲宽度

系统提供的输入时钟CLK = 1MHz,采用二进制计数,软启时门控信号GATE的作用是允许或禁止计数,所以可以用GATE进行脉冲宽度测量,(GATE=1允许计数,GATE=0禁止计数)。

把被测量的脉冲作为门信号连到某个计数器通道(如通道1)的GATE端,GATE为低电平时,装计数初值,GATE变为高电平时开始计数,直到被测脉冲信号变为低电平停止计数,并锁存,然后读出通道1的当前值n,最后脉冲宽度就是(65536-n)us。

选择计数器通道1,工作在0方式,将计数初值设为最大值0000H,设时钟脉冲为1MHz(所得脉冲宽度的单位是us),所以能测最大脉冲宽度是65536us。

2 8254作定时

三种命令格式和六种工作方式:微机原理——定时器学习1-CSDN博客

要求每隔5ms发出一个扫描负脉冲,系统提供CLK为20kHz,使用十进制计数。

每隔5ms一次的连续负脉冲,选择方式2,所以用计数器通道2,将OUT2作为定时脉冲输出。

周期T = 1/20kHz = 0.05ms,定时常数Tc = 5ms / 0.05ms = 100。

3 8254作分频

产生频率为1000Hz的方波,系统提供CLK=1.19318Hz,二进制计数。

产生方波:方式3,采用技术通道0,OUT0作为方波输出。

定时常数Tc = CLK0 / OUT0 = 1.19318MHz / 1000Hz = 1193 = 4A9H。。

4 8254同时用作计数与定时

硬件设计

流水线的工作过程:向通道0写入计数初值时,即开始对流水线上的罐头进行计数,计满24个罐头,计数器输出波形OUT0的上升沿,触发通道1开始定时,定时器输出波形OUT1的下降沿使工作台暂停,经5s后OUT1的上升沿启动工作台,流水线又开始工作,通道0开始计数。(通道0和1都采用十进制计数) 

软件设计

通道0:00 01 010 1    15H    24=18H

通道1:01 11 001 1    73H    定时常数为5 * 100 = 500 = 1F4H(由上一节,作定时器需要换算)

(书上可能错了,时钟频率是100Hz,书上乘的是200。。。)

微机系统中定时计数器应用举例

5 计时器设计

设计一个计一天时间的日计时器——日时钟。

利用8254的计数器0,工作在方式3(输出一系列方波,方波的周期是准确的,可以用做定时单位),计数初值设置为最大65536,当输入CLK0 = 1.1931816MHz时:

输出方波的频率 Fout0 = 1.1931816MHz / 65536 = 18.2Hz

输出方波的周期 Tout0 = 1 / 18.21000ms = 54.945ms      可以用这个54.945作计时单位。

一天 = 2460601000ms / 54.945 = 1573040个计时单位,十六进制为001800B0H个。

(计满1573040个计时单位就是一天,计满65543个计时单位就是一小时,计满1092个计时单位就是一分钟,计满18.2个计时单位就是一秒)

硬件设计

软件设计

6 发生器设计

硬件设计

软件设计

=================================================================


http://www.kler.cn/a/158097.html

相关文章:

  • RAG落地实践、AI游戏开发、上海·深圳·广州线下工坊启动!星河社区重磅周
  • 企业微信HOOK开发接口调用,发送语音消息
  • 如何在Linux环境搭建本地SVN服务器并结合cpolar实现公网访问
  • 协议栈的内部结构
  • jQuery选择器、操作DOM、事件处理机制、动画、ADJX操作知识点梳理
  • 数实融合!低代码推动工业数字化转型走“深”向“实”
  • Python爬虫技术:如何利用ip地址爬取动态网页
  • 梯度上升和随机梯度上升
  • 如何删除mac苹果电脑上面的流氓软件?
  • 【工作生活】汽车电子嵌入式开发简介
  • Stable diffusion ai图像生成本地部署教程
  • 蓝桥杯 动态规划
  • 实用攻略——SD-WAN网络配置步骤详解
  • state_dict使用详解
  • W2311294-万宾科技可燃气体监测仪怎么进行数据监测
  • Android : 篮球记分器app _简单应用
  • 9-MapReduce开发技术
  • A-B 数对
  • pip命令的使用-超详细使用方法
  • Linux中项目部署步骤