【微机原理及接口技术】可编程计数器/定时器8253

【微机原理及接口技术】可编程计数器/定时器8253

文章目录

  • 【微机原理及接口技术】可编程计数器/定时器8253
  • 前言
  • 一、8253的内部结构和引脚
  • 二、8253的工作方式
  • 三、8253的编程
  • 总结


前言

本篇文章就8253芯片展开,详细介绍8253的内部结构和引脚,8253的工作方式以及8253的编程。


定时器和计数器

  • 定时控制在微机系统中极为重要
    定时器由数字电路中的计数电路构成,通过记录高精度晶振脉冲信号的个数,输出准确的时间间隔。
  • 计数电路如果记录外设提供的具有一定随机性的脉冲信号时,它主要反映脉冲的个数(进而获知外设的某种状态),常又称为计数器

定时功能的实现方法

  • 软件延时
    ——利用微处理器执行一个延时程序段实现

  • 不可编程的硬件定时
    ——采用分频器、单稳电路或简易定时电路控制定时时间

  • 可编程的硬件定时
    ——软件硬件相结合、用可编程定时器芯片构成一个方便灵活的定时电路

8253定时计数器

  • 3个独立的16位计数器通道
  • 每个计数器有6种工作方式
  • 按二进制或十进制(BCD码)计数

一、8253的内部结构和引脚

在这里插入图片描述
计数器结构示意图
在这里插入图片描述

  • 计数初值存于计数初值寄存器
  • 在计数过程中
    减1计数寄存器的值不断递减,
    而计数初值寄存器中的预置内容不变
  • 当前计数输出寄存器用于写入锁存命令时,
    锁定当前计数值。

计数器的3个引脚

CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1
GATE门控输入信号——控制计数器工作,可分成高电平触发和上升沿触发两种类型
OUT计数器输出信号——当一次计数过程结束(计数值减为0或1),OUT引脚上将产生一个输出信号


二、8253的工作方式

  • 方式0: 计数结束中断
    在这里插入图片描述

①写入控制字
②写入计数初值
④计数初值送减1计数寄存器
⑤计数过程
⑥计数结束

  • 方式1: 可重触发单稳态

在这里插入图片描述

①写入控制字
②写入计数初值
③硬件启动
④计数初值送减1计数寄存器
⑤计数过程
⑥计数结束

  • 方式2: 频率发生器(分频器)

在这里插入图片描述

  • 方式3: 方波发生器

在这里插入图片描述

  • 方式4: 软件触发选通信号
    在这里插入图片描述

  • 方式5: 硬件触发选通信号
    在这里插入图片描述


三、8253的编程

  • 8253加电后的工作方式不确定
  • 8253必须初始化编程,才能正常工作
  • 8253编程包括:
  • 初始化编程
    (1) 写入控制字
    (2) 写入计数值
    读取计数值
    (1) 锁存当前计数值
    (2) 读取当前计数值

1、写入方式控制字
控制字写入控制字端口地址(A1A0=11)
在这里插入图片描述

2、写入计数值
计数值写入计数器各自的端口地址

  • 选择二进制时
    计数值范围:0000H~FFFFH
    0000H是最大值,代表65536
  • 选择十进制(BCD码)
    计数值范围:0000~9999
    0000代表最大值10000

8253的端口地址
在这里插入图片描述
3、读取计数值
读取计数值,要注意读写格式和计数数制

  • 对8位数据线,读取16位计数值需分两次
  • 计数在不断进行,应该将当前计数值先行锁存,然后读取:
    向控制字端口地址:写入锁存命令
    从计数器端口地址:读取锁存的当前计数值

例1:要求计数器0工作于方式3,输出方波的频率为2KHz,计数脉冲的频率为2.5MHz,采用二进制计数,试写出初始化程序段。

  1. 8253的端口地址为:80H,81H,82H,83H。
  2. 计数初值计算:TC = 2.5MHz/2KHz=1250
  3. 8253的方式控制字为:00 11 011 0
  4. 初始化程序段:
    MOV AL,00110110B
    OUT 83H,AL
    MOV AX, 1250
    OUT 80H,AL
    MOV AL, AH
    OUT 80H,AL

例2:硬件如图所示,利用8253的通道0和通道1,设计并产生频率为1Hz的方波。设通道0的输入时钟频率为1MHz,8253所占端口为90H~93H。(写出计算过程,并初始化芯片)
在这里插入图片描述
通道0计数初值:1MHZ/100HZ=10000
通道1计数初值:100HZ/1HZ=100
MOV AL,00110100B
OUT 93H,AL
MOV AX,10000
OUT 90H,AL
MOV AL,AH
OUT 90H,AL
MOV AL,01010110B
OUT 93H,AL
MOV AL,100
OUT 91H,AL


总结

到这里这篇文章的内容就结束了,谢谢大家的观看,如果有好的建议可以留言喔,谢谢大家啦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/18934.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能初识

🌞欢迎来到人工智能基础的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年5月1…

618手把手教你捡漏服务器

618最全捡漏攻略 捡漏规则1、新人优惠⭐⭐⭐2、教育优惠⭐⭐3、回馈活动⭐️ ECS价格对比新人优惠💝京东云 50/年百度云 60.69/年阿里云 82/年腾讯云 99/年 回馈活动🎁阿里云 教育优惠🏫阿里云腾讯云 hi,好久不见各位,…

16 -java反射

目录 第16章 反射 16.1 反射的概念 16.2反射的作用 16.3 java.lang.Class类 16.3.1 哪些类型可以获取Class对象 16.3.2 获取Class对象的四种方式 16.4 反射的基本应用 16.4.1 获取类型的详细信息 16.4.2 创建任意引用类型的对象 16.4.3 操作任意类型的属性 16.4.4 调…

【JS基础知识07】函数

一:函数是什么以及函数作用 1 函数是什么 函数是经过封装、调用后,能够完成特定任务的代码块 2 函数的作用 仅需“函数名(实参)”就可以调用函数,起到精简代码,提高开发效率的作用 二:函数使用 1 语法规则&#…

光耦的工作原理

一、光电耦合器简介 光电耦合器主要是一种围绕光作为媒介的光电转换元器件,能够实现光到电、电到光之间的自由转换。我们又可以称之为光电隔离器,之所以这么称呼,主要是因为光电耦合器能够很好的对电路中的电信号起到隔离的作用。有效的保护…

如何使用 .htaccess 删除文件扩展名

本周有一个客户,购买Hostease的虚拟主机,询问我们的在线客服,如何使用 .htaccess 删除文件扩展名?我们为用户提供相关教程,用户很快解决了遇到的问题。在此,我们分享这个操作教程,希望可以对您有…

如何在中国网上发布文章

随着互联网的迅猛发展,网上发布文章已经成为一种重要的传播方式。而在中国,作为世界上最大的互联网市场,如何在中国网上发布文章成为了许多人关注的焦点。媒介多多网发稿平台作为一个专业的发稿平台,为广大作者提供了很好的发布文…

计算机系统基础实验三(解了但尽量理解)

一.准备阶段 1、下载好32位的实验代码后,将文件解压缩并且通过共享文件夹操作将文件添加到虚拟机中,双击查看bomb.c代码,将c代码完整看了一遍,发现看这里的c代码是无从下手的,代码中只含有主函数,触发炸弹…

AI 画图真刺激,手把手教你如何用 ComfyUI 来画出刺激的图

目前 AI 绘画领域的产品非常多,比如 Midjourney、Dalle3、Stability AI 等等,这些产品大体上可以分为两类: 模型与产品深度融合:比如 Midjourney、Dalle3 等等。模型与产品分离:比如 SD Web UI、ComfyUI 等等。 对于…

宏基因组分析流程(Metagenomic workflow)202405|持续更新

Logs 增加R包pctax内的一些帮助上游分析的小脚本(2024.03.03)增加Mmseqs2用于去冗余,基因聚类的速度非常快,且随序列量线性增长(2024.03.12)更新全文细节(2024.05.29) 注意&#x…

LeetCode2336无限集中的最小数字

题目描述 现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, …] 。实现 SmallestInfiniteSet 类:SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。int popSmallest() 移除 并返回该无限集中的最小整数。void addBack(int num) 如果正整数 …

mac m1安装homebrew管理工具(brew命令)完整流程

背景 因为mac上的brew很久没用了,版本非常旧,随着mac os的更新,本机的homebrew大部分的功能都无法使用,幸好过去通过brew安装的工具比较少,于是决定重新安装一遍brew。 卸载旧版brew 法一:通过使用线上…

力扣:104. 二叉树的最大深度

104. 二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入&#xff1a…

C++语言·list链表(下)

还是之前说的,因为要写模板,为了避免链接出现问题,我们将所有内容都写到一个文件中去。首先就是画出链表的框架 链表本身只需要一个头节点就足以找到整条链表,而需要它拼接的节点我们再写一个模板。而我们知道list是一个带头双向循…

Verilog HDL基础知识(一)

引言:本文我们介绍Verilog HDL的基础知识,重点对Verilog HDL的基本语法及其应用要点进行介绍。 1. Verilog HDL概述 什么是Verilog?Verilog是IEEE标准的硬件描述语言,一种基于文本的语言,用于描述最终将在硬件中实现…

数据库设计实例---学习数据库最重要的应用之一

一、引言【可忽略】 在学习“数据库系统概述”这门课程时,我一直很好奇,这样一门必修课,究竟教会了我什么呢? 由于下课后,,没有拓展自己的眼界,上课时又局限于课堂上老师的讲课水平,…

探索数组处理:奇数的筛选与替换

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、数组中的奇数筛选 二、将奇数替换为负一 总结 一、数组中的奇数筛选 在处理数组数据时…

【Qt】初识

一、使用Label显示Hello World 1.ui设计 可以在Qt Designer中拖拽方式进行创建 2.代码方式 在myqwidget.cpp文件中添加下列代码 二、对象树 我们在堆上创建了QLabel类的对象。但是我们没有去delete,这样会产生内存泄漏吗? 答案是不会。label对象会在…

ChatGPT的基本原理是什么?又该如何提高其准确性?

在深入探索如何提升ChatGPT的准确性之前,让我们先来了解一下它的工作原理吧。ChatGPT是一种基于深度学习的自然语言生成模型,它通过预训练和微调两个关键步骤来学习和理解自然语言。 在预训练阶段,ChatGPT会接触到大规模的文本数据集&#x…

输入输出(1)——C++的输入输出概述

目录 一、C的输入输出 (一) C的输入输出 (二)C语言的scanf和printf 二、C的输入输出流 (一) iostream类库中有关的类 (二) iostream.h头文件的流对象和重载运算符 一、C的输入输出 (一) C的输入输出 之前用到的输入输出,都是以终端…