戏说BIOS之Beep

本文介绍了BIOS报警声的来源和原理,探讨了8253/8254定时器在控制扬声器发声中的作用。通过设置8253计数器和操作61h端口,实现了Beep音的音调和时长控制,从而模拟出如内存错误时的“一长三短”报警声。
摘要由CSDN通过智能技术生成

戏说BIOSBeep

 

1. Introduction

 

     大凡用过电脑的朋友都应该听到过BIOS的报警声,有时 PC开机的时候就会听到嘀的一声,有过修理PC经验的话就更清楚了“一短内存刷新失败,二短内存校验错误,一长三短内存错误,一长八短显示错误”等等诸如此类,可能各家的BIOS定的规则不同,但目的都是通过报警音获悉系统运行状况,找出病灶对症下药(有点像中医诊断中“望闻问切”中的闻:))。

 

2. 8253/8254

 

     Beep声我们都听过,但是有没有想过这是怎么实现的呢?带着疑惑随我开始探索之旅。提到这个Beep,它可算是历史悠久了,追溯到IBM的第一台PC, 那时工程师们可能觉得pc功能太过单调枯燥,于是他们就祈求上帝给我点声音吧,于是声音就有了J。他们将一个简单的扬声器加入了最初的pc硬件之中。光有speaker肯定是不足以产生音乐的,因为音乐得有音调和节奏才能组成。虽然我不懂音乐,但是我知道一点就是声音的高低和频率有关,所以还要有能制造频率的东东这就是8253/8254。既然提到我就大概的讲一讲8253/8254,8253/8254是可编程的定时器,8254是8253的增强版本差异主要在可以外接clock频率不同,其实使用上无差了。8253有三个独立工作16位的计数器t0、t1、t2分别使用40h、41h、42h port去操纵,除此之外还有一个43h port用于设定控制字。三个计数器分别编程,但是在使用之前必须先配置控制字,控制字主要用于选定哪一个计数器,选择计数器的工作模式等。控制字的格式如下表1所示:

 

Bit 0

计数值格式 0表示binary;1表bcd

Bit1~3

模式选择

Bit4~5

读写指示

Bit6~7

选择计数器

                                           表 1

 

其实这三个计数器在PC内部已经规划好了功能,基本上不需要用户参与了J

t0:用于系统时钟提供定时基准,它的输出端与中断控制器的IRQ0相连。

t1:用于DRAM更新的信号,每隔15.2us刷新一次。

t2:用于控制扬声器发声,作为speaker的音频频率。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值