微机原理与接口技术——可编定时器,计数芯片8253.8254

一、概述

8253 和 8254 是 Intel 公司生产的可编程定时器 / 计数器芯片,它们在微机系统中广泛应用于定时控制、计数操作以及脉冲信号产生等功能。8254 是 8253 的改进型号,其功能基本兼容 8253,但在性能上有所提升,例如具有更高的计数频率等。

二、内部结构

1、数据总线缓冲器

用于与 CPU 的数据总线相连,实现 CPU 与 8253/8254 之间的数据传输,包括写入控制字、计数初值以及读取计数值等操作。

2、读 / 写逻辑电路

接收 CPU 的读写控制信号(如 I O R ‾ \overline{IOR} IOR I O W ‾ \overline{IOW} IOW C S ‾ \overline{CS} CS、A1、A0等),以确定数据传输的方向(读或写)以及访问的端口(计数器或控制字寄存器)。

3、控制字寄存器

用于存放由 CPU 写入的控制字,控制字决定了计数器的工作方式、计数格式(二进制或 BCD 码)等重要参数。

4、计数器 0 - 2

8253/8254 内部包含三个独立的计数器通道,每个通道都有自己的 16 位计数初值寄存器、减 1 计数器和输出锁存器。计数器可以工作在不同的模式下,根据设置实现定时或计数功能。

三、引脚功能

1、D7 - D0(数据总线引脚)

双向三态数据线,与系统数据总线相连,用于传输数据和控制信息。

2、 C S ‾ \overline{CS} CS(片选信号)

低电平有效,当为低电平时,芯片被选中,CPU 可以对其进行读写操作。

3、A1、A0(地址线)

用于选择芯片内部的不同端口,如计数器 0 - 2、控制字寄存器等。通过不同的地址组合,可以确定 CPU 访问的具体对象。

4、 I O R ‾ \overline{IOR} IOR(读信号)

低电平有效,用于从 8253/8254 中读取数据(如计数值)。

5、 I O W ‾ \overline{IOW} IOW(写信号)

低电平有效,用于向 8253/8254 写入数据(如控制字、计数初值)。

6、CLK(时钟输入引脚)

计数器的时钟脉冲输入信号,用于控制计数操作的节奏。在定时模式下,根据时钟脉冲的频率和计数初值来确定定时时间;在计数模式下,对输入的脉冲进行计数。

7、GATE(门控信号)

用于控制计数器的工作状态。其作用与计数器的工作方式有关,例如在某些工作方式下,信号为高电平时计数器才开始工作或计数,信号为低电平时暂停计数等。

8、OUT(输出信号)

计数器的输出信号引脚,其输出波形取决于计数器的工作方式和计数值。在定时或计数完成时,引脚会产生相应的电平变化(如从高电平变为低电平或产生一个脉冲信号等),可以用于触发外部设备或作为中断请求信号等。

四、工作方式

1、方式 0(计数结束中断方式)

写入控制字和计数初值后,计数器开始对CLK脉冲进行减 1 计数。当计数值减为 0 时,OUT引脚输出变为高电平,并且一直保持到重新写入新的计数初值或对计数器进行复位操作。此方式常用于产生定时中断信号。

2、方式 1(硬件可重触发单稳态方式)

当写入控制字和计数初值后,OUT引脚输出初始化为高电平。只有在GATE信号上升沿触发时,计数器才开始对CLK脉冲进行减 1 计数,计数值减为 0 时,OUT引脚输出一个宽度为计数初值乘以CLK脉冲周期的负脉冲。在计数过程中,如果再次出现GATE信号上升沿,则计数器重新开始计数,OUT引脚输出的负脉冲宽度也相应改变,这就是 “硬件可重触发” 的含义。这种方式常用于产生具有一定宽度的脉冲信号,且脉冲宽度可以通过改变计数初值和CLK频率来调整。

3、方式 2(速率发生器方式)

写入控制字和计数初值后,计数器开始对CLK脉冲进行减 1 计数。当计数值减为 1 时,OUT引脚输出变为低电平,持续一个CLK脉冲周期后,计数值自动重新装入初始值,OUT引脚输出恢复为高电平,并继续计数。这样就可以产生一个周期性的负脉冲信号,其周期为计数初值乘以CLK脉冲周期,脉冲宽度为一个CLK脉冲周期。此方式常用于产生时钟信号或定时脉冲信号,其输出频率等于CLK频率除以计数初值。

4、方式 3(方波发生器方式)

与方式 2 类似,也是产生周期性信号,但方式 3 产生的是方波信号。写入控制字和计数初值后,计数器开始对CLK脉冲进行减 1 计数。当计数值减为 0 时,OUT引脚输出电平发生翻转(如果初始为高电平,则变为低电平;如果初始为低电平,则变为高电平),同时计数值自动重新装入初始值,然后继续计数,如此循环,就产生了一个占空比为 1:1 或近似 1:1(取决于计数初值是偶数还是奇数)的方波信号。其周期同样为计数初值乘以CLK脉冲周期,这种方式常用于需要产生稳定方波信号的场合,如音频信号发生器等。

5、方式 4(软件触发选通方式)

写入控制字和计数初值后,计数器开始对CLK脉冲进行减 1 计数。当计数值减为 0 时,OUT引脚输出一个宽度为一个CLK脉冲周期的负脉冲,然后停止计数。只有再次写入计数初值后,计数器才会重新开始计数。此方式需要软件(即 CPU 写入计数初值)来触发计数操作,常用于实现精确的定时选通信号。

6、方式 5(硬件触发选通方式)

与方式 4 类似,但计数触发方式不同。在方式 5 中,写入控制字和计数初值后,计数器并不立即计数,而是要等待GATA信号上升沿触发才开始对CLK脉冲进行减 1 计数。当计数值减为 0 时,OUT引脚输出一个宽度为一个CLK脉冲周期的负脉冲,然后停止计数。直到下一次GATE信号上升沿触发,计数器才会再次开始计数。这种方式通过硬件(GATE信号)触发计数,常用于需要与外部事件精确同步的定时选通操作。

五、编程控制

1、写入控制字

控制字的格式决定了计数器的工作方式、计数格式(二进制或 BCD 码)以及读写格式等重要参数。控制字的最高两位用于选择计数器通道(SC1、SC0),RW1、RW0用于指定读写格式(如只写低字节、只写高字节、先写低字节后写高字节等),M2、M1、M0用于选择工作方式,BCD位用于选择计数格式(二进制或 BCD 码)。
例如,若要将 8253/8254 的计数器 0 设置为方式 3(方波发生器方式),采用二进制计数格式,先写低字节后写高字节的读写格式,则控制字应为00110110B(或36H)。写入控制字时,通过A1、A0选择控制字寄存器地址(通常为A1A0=11),然后使用 I O W ‾ \overline{IOW} IOW信号将控制字写入芯片。

2、写入计数初值

根据控制字中指定的读写格式,将计数初值写入相应的计数器通道。如果是二进制计数格式,计数初值范围为0000H-FFFFH;如果是 BCD 码计数格式,计数初值范围为0000-9999(实际写入时用 BCD 码表示,例如十进制数100应写成0100H)。
例如,若要设置计数器 0 的计数初值为1000(二进制),且控制字已设置为先写低字节后写高字节的读写格式,则先将低字节00001111B(0FH)写入计数器 0 端口地址(由A1A0确定,假设为00),然后将高字节(00000011B)写入同一端口地址。

3、读取计数值

当需要读取计数器当前计数值时,需要先向控制字寄存器写入锁存命令(控制字的RW1RW0=00),将当前计数值锁存到输出锁存器中,然后再根据控制字中指定的读写格式读取计数值。读取计数值的过程与写入计数初值类似,通过选择相应的计数器端口地址(A1A0确定),使用 I O R ‾ \overline{IOR} IOR信号读取数据。
例如,若要读取计数器 1 的当前计数值,先向控制字寄存器写入锁存命令(假设为01000000B,选择计数器 1 且为锁存命令),然后从计数器 1 端口地址(假设为01)读取计数值(根据读写格式读取低字节和高字节)。

六、应用实例

1、定时中断产生

在微机系统中,可利用 8253/8254 的方式 0 来产生定时中断信号,用于系统定时任务处理,如实时时钟更新、任务调度等。例如,设置计数器 0 工作在方式 0,时钟输入频率为(脉冲周期为),计数初值为,则当计数值减为 0 时,经过,引脚输出变为高电平,产生中断请求信号,通知 CPU 进行相应的定时处理操作(如更新时间显示、执行定时任务等)。

2、脉冲信号产生

利用方式 1、方式 2、方式 3 等可以产生不同频率和宽度的脉冲信号。例如,要产生一个宽度为的脉冲信号,可设置计数器 1 工作在方式 1,时钟输入频率为1MHZ,计数初值为10000。当GATE信号上升沿触发后,计数器开始计数,经过100个CLK脉冲周期(即100μs),OUT引脚输出一个宽度为100μs的负脉冲。

3、计数操作

在一些需要对外部事件进行计数的应用中,可使用 8253/8254 的计数功能。例如,对生产线上产品的数量进行计数,将产品通过传感器产生的脉冲信号连接到 8253/8254 的CLK引脚,设置计数器工作在合适的方式(如方式 0 或方式 4 等),每当有一个产品通过传感器,产生一个脉冲信号,计数器就进行减 1 计数。通过读取计数值,就可以知道已经通过的产品数量。

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

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

相关文章

《操作系统 - 清华大学》5 -2:覆盖技术

文章目录 1. 目标2. 覆盖的基本原理3. 覆盖技术的不足 1. 目标 覆盖技术产生于上世纪80年代和90年代初的时候,在那时候操作系统能力是很弱的,所以说当初目标是要在能够比较小的可用内存中运行比较大的程序,这个比较小,比较大的相对…

使用 Nginx 在 Ubuntu 22.04 上安装 LibreNMS 开源网络监控系统

#LibreNMS 是一个功能强大的开源网络监控系统,它能够为你的网络性能和设备提供全面的监控。本文将引导你通过一系列步骤,在 Ubuntu 22.04 服务器上安装和配置 LibreNMS,使用 Nginx 作为 Web 服务器。 简介 LibreNMS 提供了对网络设备和性能…

Spring注入Map学习

Spring注入Map学习 在Spring中 在策略模式中, 会经常用到 根据Bean名称获取Bean的实例 有2个方法很好用 1. 使用Autowired注入 2. 使用构造方法注入 但是奇怪的一点是: 日志打印并没有看到结果, 第一行的 Autowired的结果 是个null 那是因为 注入时机 的问题 注入时机&…

【Redis_Day5】String类型

【Redis_Day5】String类型 String操作String的命令set和get:设置、获取键值对mset和mget:批量设置、获取键值对setnx/setex/psetexincr和incrby:对字符串进行加操作decr/decrby:对字符串进行减操作incrbyfloat:浮点数加…

谷歌云无法ssh登录(修改sshd_config也不行)

sudo -i vi /etc/ssh/sshd_config passwd root /etc/init.d/ssh restart service sshd restart 这是网站大部分教程讲的,但是我实际试了还是连不上 参考https://linux.do/t/topic/260732/15 原来/etc/ssh/sshd_config.d/下面有个60开头的文件,也需…

【FPGA-MicroBlaze】串口收发以及相关函数讲解

前言 工具:Vivado2018.3及其所对应的SDK版本 目前网上有许多MicroBlaze 的入门教程,比如下面的这个参考文章,用串口打印一个hello world。 【FPGA】Xilinx MicroBlaze软核使用第一节:Hello World!_fpga软核microblaze-CSDN博客 个…

【君正T31开发记录】8.了解rtsp协议及设计模式

前边搞定了驱动,先不着急直接上手撸应用层的代码,先了解一下大致要用到的东西。 设计PC端先用vlc rtsp暂时H264编码(vlc好像不支持h265,这个后边我试试)的视频流,先需要支持上rtsp server,了解rtsp协议是必…

渗透测试---shell(7)for循环2与while循环

声明:学习素材来自b站up【泷羽Sec】,侵删,若阅读过程中有相关方面的不足,还请指正,本文只做相关技术分享,切莫从事违法等相关行为,本人与泷羽sec团队一律不承担一切后果 视频地址:泷羽--shell&a…

CLIP-Adapter: Better Vision-Language Models with Feature Adapters 论文解读

abstract 大规模对比视觉-语言预训练在视觉表示学习方面取得了显著进展。与传统的通过固定一组离散标签训练的视觉系统不同,(Radford et al., 2021) 引入了一种新范式,该范式在开放词汇环境中直接学习将图像与原始文本对齐。在下游任务中,通…

C++初阶(十五)--STL--list 的深度解析与全面应用

文章目录 一、头文件与基本概念 二、构造函数和析构函数 1.构造函数 2.析构函数 三、元素访问 front back 四、迭代器相关函数 begin end rebegin(反向迭代器) rend(反向迭代器) 五、容量相关函数 empty size max…

一个关于 CSS Modules 的陷阱

我在引用 less 文件样式的时候&#xff0c;发现 index.less .drag_upload {width: 100%;height: 90vh;padding: 20px; }index.jsx import React, { useState, useEffect } from react; import styles from ./index.less;export default ({ }) > {return (<div classNa…

基于STM32的智能家居电器控制系统

目录 引言环境准备 2.1 硬件准备 2.2 软件准备智能家居电器控制系统基础 3.1 控制系统架构 3.2 功能描述代码实现&#xff1a;实现智能家居电器控制系统 4.1 数据采集模块 4.2 控制逻辑与设备管理 4.3 通信与远程控制实现 4.4 用户界面与数据可视化应用场景&#xff1a;家庭自…

视觉经典神经网络与复现:深入解析与实践指南

目录 引言 经典视觉神经网络模型详解 1. LeNet-5&#xff1a;卷积神经网络的先驱 LeNet-5的关键特点&#xff1a; 2. AlexNet&#xff1a;深度学习的突破 AlexNet的关键特点&#xff1a; 3. VGGNet&#xff1a;深度与简洁的平衡 VGGNet的关键特点&#xff1a; 4. ResNe…

vue3【实战】响应式的登录界面

效果预览 WEB 端效果 移动端效果 技术方案 vue3 vite Element Plus VueRouter UnoCSS TS vueUse AutoImport 技术要点 响应式设计 移动端&#xff1a;图片切换为绝对定位&#xff0c;下移一层&#xff0c;成为背景图片 <el-imageclass"w-screen h-screen lt-md…

c语言的qsort函数理解与使用

介绍&#xff1a;qsort 函数是 C 标准库中用于排序的快速排序算法函数。它的用法非常灵活&#xff0c;可以对任意类型的元素进行排序&#xff0c;只要提供了比较函数即可。 qsort 函数原型及参数解释&#xff1a; void qsort ( void* base, //指向要排序的数组的首元素…

AIGC学习笔记(6)——AI大模型开发工程师

文章目录 AI大模型开发工程师005 OpenAI大模型案例实践1 AI 翻译助手需求分析项目起源市场价格和市场前景基于大模型的翻译软件核心功能设计 2 AI 翻译助手架构设计架构设计代码结构设计 3 AI 翻译助手核心功能文档解析文档操作PDF文档操作表格操作图片操作 Prompt封装 4 AI 翻…

《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part1

资料来自李宏毅老师《生成式 AI》课程&#xff0c;如有侵权请通知下线 Introduction to Generative AI 2024 Spring 该文档主要介绍了国立台湾大学&#xff08;NTU&#xff09;2024 年春季 “生成式人工智能&#xff08;GenAI&#xff09;” 课程的作业 5&#xff08;GenAI HW…

cangjie (仓颉) vscode环境搭建

sdk下载 下载中心-仓颉编程语言官网 可选择半年更新版&#xff0c;不用申请。目前版本&#xff1a;0.53.13 &#xff0c;选择不同平台压缩包下载解压到任意位置即可 补充下载&#xff0c;vscode插件解压后&#xff0c;在vscode扩展中选择从vsix安装&#xff0c;安装后新增名为…

微信小程序全局配置:导航栏、下拉刷新与上拉触底设置教程

微信小程序全局配置:导航栏、下拉刷新与上拉触底设置教程 引言 微信小程序作为一种新兴的轻量级应用,凭借其便捷性和丰富的功能受到了广泛的欢迎。在开发小程序的过程中,合理配置全局属性是提升用户体验的关键。本文将深入探讨小程序的全局配置中的window选项,重点介绍导…

CPU命名那些事

一、Intel CPU命名 1. 命名结构 Intel CPU 的命名通常包含以下几个部分&#xff1a; 品牌 产品线 系列 代数 具体型号 后缀 例如&#xff1a;Intel Core i7-13700K 2. 各部分含义 品牌 Intel&#xff1a;表示厂商&#xff08;几乎所有命名中都有&#xff09;。不同品…