搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
凡人多烦事01
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
仓颉——申请内测、环境搭建、编译测试
2
日志敏感数据扫描和脱敏最佳实践
3
Android RadioGroup和RadioButton案例及详解
4
学习 Rust GUI iced_iced rust
5
数据库Part1:关系数据库标准语言SQL(完整版)_sql语言
6
ubuntu boot空间不足_Ubuntu系统的安装
7
数据库的查询操作(多表查询)_数据库多表查询能多数据库查询吗
8
hnu 数字电路 实验1.2 实现3-8译码器_38译码器仿真波形图分析
9
用聆思CSK6大模型开发板接入知识库做企业制度问答/项目管理_csk6 tts
10
葡萄酒逻辑回归分类(scala实现)_逻辑回归实现葡萄酒分类
当前位置:
article
> 正文
《深入x86的内存寻址》I/O 外设硬件开发举例一_硬件开发pit
作者:凡人多烦事01 | 2024-06-16 04:50:07
赞
踩
硬件开发pit
本文是原文《
深入x86的内存寻址
》I/O 寻址的充部分,提供PC主机蜂鸣器的细节及乐声编程,代码可以作为第三方软件包作二次开发,任君耍玩,紧接的色条就是文字内,可以拷贝使用。代码附件下载:
PC/XT 8253计数器PIT 芯片乐音开发应用
硬件开发举例一IBM PC/XT系统中8253的计数器是一种 Programmable Interval Timer (PIT) 芯片,改进型号为8254。它使用5v电源,有3个16位的独立计数器,有6种工作方式,已经作为PC标准的外设集成在系统中,即称为系统定时器 System Timer。它支持二进制或十进制 BCD 计数,计数频率为2MHz,改进型可高达10MHz,所有引脚电平和晶体管-晶体管集成电路 Transistor-Transistor Logic (TTL) 兼容。在现代的计算机主板上已经看不到 8254 这样小的芯片了,因集成电路高速发展,像 8253 这样的小集成电路已经统一整合成为计算机主板上桥接芯片中,但它的功能被保持了下来。芯片在计算机系统中主要有几个方面的作用: 计数器0作为系统计时器,用于产生时钟信号,用它完成日时钟计数。CLK 0 输人为 1.1931816MHz 方波,工作于方式3,计数初值为 0,输出信号 OUT 0 接到中断控制器 8259A 的 IRQ0 作为中断请求输入线。OUT 0 输出的方波脉冲分频后频率为 F0=1.1931816/216MHz=18.2Hz。即计数器0中断频率为每秒18.2次,计满1h需要中断次数 18.2*60*60=65520,24h需中断次 1573040次(0x001800BO),计满后双字复位清0,重新计数。 计数器1作为动态存储器定时刷新控制,CLK 1 接 1.1931816MHz的方波脉冲,工作于方式2,计数初值为18(0012H),OUTl输出的负脉冲脉宽为 1÷1.1931816MHz=838ns,其周期为18÷1.1931816MHz= 15.08 us,即每隔15.08us产生一个正脉冲,作为DMAC8237A的0通道的请求信号DREQ0,定时地对系统的动态存储器芯片进行一次刷新操作。 计数器2作为蜂鸣器音频发生器,工作在 MODE 3 为系统机箱内的蜂鸣器提供方波音频信号,经过 75477 放大后驱动蜂鸣器,作为机器的报警信号或伴音信号。GATE2接并行通信芯片8255的PB0,用它控制计数器2的计数过程。输出OUT2经过一个与门,这个与门受PB1控制,所以,扬声器由并行通信芯片来控制发声。 另外,通过编程还可对计数器2重新进行初始化,用于乐曲演奏等。由硬件连接电路可以看出,要使8253的片选信号CS有效,应使系统地址总线的A9A8A7A6A5=00010B,由于A4A3A2未参与译码,因此8253的端口基址为0x40,若取A4A3A2=000,则8253计数器0、计数器1、计数器2以及控制寄存器的端口地址分别为0x40、0x41、0x42和0x43。通过系统信息也可以得到此 PIT 设备的端口号为 0x0040 - 0x0043,对应计数器0~2还有控制寄存器,其实这些端口的定义都是传统约定而成的。 芯片的工作脉冲逻辑可以查找 Datasheet 文件,这是介绍其 6 种工作模式,各模式下的 GATE 信号作用如表所示。因为电路连接关系,要使用 MODE 0 要求使用计数器 0 来进行计数;MODE 1 和 MODE 2 等要求使用计数器2。 模式 低电平 低跳变 正跳变 高电平 0 停止计数 ○ 开始计数 1 ○ 初始化计数及 下一个时钟重置输出 ○ 2 停止计数 输出高电平 初始化计数及 重新装入计数器 开始计数 3 停止计数 同上 开始计数 4 停止计数 ○ 开始计数 5 ○ 初始化计数 ○ GATE 信号在各模式下的作用 MODE 0 计数结束中断模式 Interupt on Terminal Count 写入控制字初始化 OUT0 输出低电平,设置好 16-bit 计数初始值后开始计数,直到计数溢出即计满时产生高电平引发中断夜静请求。写入初始计数值低 8-bit 时会打断正在进行的计数,写入高 8-bit 数据时开始计数。 MODE 1 可编程单脉冲模式 Programmable One-Shot 写入计数初始值,然后通过 GATE 输入脉冲的上升沿 Rising Edge 来激发计数,直到计数结束时输出端产生高电平。计数过程中可以通过 GATE 的来重新激发计数而不会影响输出,读取数据也是。因此计数过程中,写入数据是无效的。 MODE 2 分频器模式 Rate Generator 输 入方波与设置值
声明:
本文内容由网友自发贡献,转载请注明出处:
【wpsshop博客】
推荐阅读
article
ODPS
SQL
优化总结...
ODPS
(Open Data Processing Service)是一个海量数据处理平台,基于阿里巴巴自主研发的分布式...
赞
踩
article
微信
开发者
工具
下载及小
程序
项目
的创建与调试(完整图文教程)_
微信
开发
工具
...
本文将介绍
微信
开发者
工具
下载及小
程序
项目
结构与
工具
的详细讲解,涵盖了
微信
小
程序
开发的许多关键方面,从
工具
的下载、安装,到...
赞
踩
article
算法
设计(
贪婪
算法
、
漏桶
算法
、
令牌桶
算法
、
计数器
)
_
沙堆
最小
价值
算法
...
一
、
贪心
算法
也叫
贪婪
算法
,是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,它所做出...
赞
踩
article
HBase
Region分区、数据压缩及与
Sqoop
集成操作_
sqoop
hbase
报错: hbas...
目录一、
HBase
表region预分区的几种方式二、
HBase
表数据的压缩配置三、
HBase
与
Sqoop
集成一、HBas...
赞
踩
article
解开
Kafka
神秘的面纱(三):
kafka
单机
部署和
集群
部署_
kafka
bootstrap
-ser...
文章目录一、前言二、
kafka
单机
安装三、
kafka
集群
安装3.1 zookeeper安装3.2
kafka
的安装一、前...
赞
踩
article
云科
通明
湖
:
金融业务
可持续性
能力建设,少不了这块“拼图”!_
通明
湖
sslo
...
在
云科
通明
湖
系列应用交付产品的帮助下,该银行实现了高效、安全、可靠的负载均衡功能,充分利用了硬件资源,保证了网银、手机银...
赞
踩
article
微信小
程序
中
的
加载
更
多
(即列表
分页
)
_
小
程序
分页
加载
更
多
...
app.json
中
:"window": { "enablePullDownRefresh": true //是...
赞
踩
article
Django
UpdateView
视图...
UpdateView
是
Django
中的一个通用视图,用于处理对象的更新操作。它允许用户更新一个已经存在的对象。Updat...
赞
踩
article
每天一点进步:
hbase
预
分区
和
压缩
_
hbase
shell
操作
:
分区
压缩
头歌...
rowkey是
hbase
的key-value存储中的key,通常使用用户要查询的字段作为rowkey,查询结果作为val...
赞
踩
article
Spark
原理篇之
Spark
SQL
Join
分析
_
spark
桶
join
原理图...
1
Join
背景
Join
是数据库查询永远绕不开的话题,传统查询SQL技术可以分为简单操作(过滤操作-where、排序...
赞
踩
article
他们都来
全球
边缘
计算
大会
了
,
就差你了
!
...
全球
边缘
计算
大会
是
边缘
计算
领域综合性盛会
,
也是大型网友线下交流会
!
在
全球
边缘
计算
大会
·上海站你可能会遇到谁?据不完全统计...
赞
踩
article
如何知道自己的
邮件
有没有被
标记
为
垃圾
邮件
_怎么
检查
域名
是否
反饭
垃圾
邮件
标记
...
如果你怀疑你的
邮件
被错误地
标记
为
垃圾
邮件
,应该
检查
并优化
邮件
的内容和结构,并确保技术设置(如SPF和DKIM记录)是正确...
赞
踩
article
流量
控制算法
-----
令牌
桶------
CBS
---CIR_
cir
和
cbs
...
当前用的最多的
流量
控制算法
时
令牌
桶限速,今天就简单讲一下
令牌
桶限速的几种实现方式。主题思想:通过速度可知的
令牌
控制速度不...
赞
踩
article
8254
定时/
计数器
实验
_
8254
实验
代码
...
实验
步骤
代码
清单 ;T
8254
-1.asm;查看端口资源分配情况,记录
实验
系统I/O端口始地址INTR_IVADD ...
赞
踩
article
Java
实现
Excel
导入
和
导出
,看这一篇就够了(珍藏版)_
java
导出
excel
...
前言最近抽了两天时间,把
Java
实现表格的相关操作进行了封装,本次封装是基于POI的二次开发,最终使用只需要调用一个工具...
赞
踩
article
python
小游戏
开心
消消
乐制作10完结篇-
搜索
两个元素之间的
连接
路径
_
python
开心
消消
乐。...
在上一章中,介绍了在
消消
乐中
连接
路径
如何判定,什么是广度优先
搜索
算法,它的作用。在本章中我们将会将使用广度优先
搜索
算法来...
赞
踩
article
小
程序
列表
下
拉
刷新
和
加载
更多_
小
程序
下
拉
加载
...
在
小
程序
的app.json中,检查window项目中是否已经加入了"enablePullDownRefresh": tr...
赞
踩
article
Repo
之解决GnuTLS
recv
error
(-9): Error
decoding
the
...
1.解决# git config --global http.sslverify false_
error
decodin...
赞
踩
article
JMeter
WebSocket
接口
测试
详解_
jmeter
模拟
websocket
连接...
2023最新自动化
测试
自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_b...
赞
踩
article
verilog
学习——
gate
/
switch
modeling
门/开关
建模
_
pmos
开关
建模
v...
标准的
verilog
的原语,可能并不能容易的或并不足以表示复杂的逻辑。称为UDP的、或自定义的原语能够对组合逻辑或顺序逻...
赞
踩
相关标签
大数据
编程语言
hadoop
数据库
python
小程序
notepad++
算法
动态规划
概率论
big data
spark
负载均衡
云原生
架构
django
后端
SparkSQL join分析
人工智能
myeclipse
物联网
微软
firefox
网络