定时器编程.ppt

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定时器编程

通用发声程序 可编程时间间隔定时器8253/8254 计数器0:用于控制系统时钟正常运转,端口地址为40H。 计数器1:用于存储器刷新 ,端口地址为41H。 计数器2:用于控制扬声器发声,端口地址为42H。 公用的控制寄存器:端口地址为43H 计数器0的工作 系统时钟之所以能连续运转主要依靠定时器的通道1(计数器0)。 系统启动时设定其发出一个频率固定为18.2Hz的信号,这个信号直接送到系统中的“中断控制器”。每一个“Hz”都产生一个硬件中断,一般称这个硬中断为“IRQ0”,对应的中断类型号是08H。 也就是说,当计算机启动后,我们的机器看上去十分平静,但实际上CPU非常忙碌。在定时器的控制下每隔55毫秒就要执行一个08H号中断,这个中断的主要工作就是连续地计数。 在内存“0040H:006CH”处有四个字节的存储空间专门用于保存计数值,CPU每执行一次08H中断,这四字节的计数值就被加1,不难算出这个计数值每增加1091后时间恰好过了1分钟,每增加65454后时间恰好过了1小时。系统内部的时钟之所以能准确走时,靠的就是08H中断和这四字节的计数值。因此我们要想精确的定时,必须依靠时钟计数值才行。 通用发声程序 soundf proc near push ax push bx push cx push dx push di mov al,0b6h ;初始化计数器2 控制扬声器 out 43h,al mov di,220 ;音频 mov dx,12h mov ax,348ch ;dx:ax=输入频率1.1931817MHz div di ;ax=计数初值 out 42h,al mov al,ah out 42h,al in al,61h * 定时器8253/8254 补充材料 1、设定控制字:将控制字写入控制寄存器43H ;将计数器0设定为模式3,先写低字节接着写高字节 ,BCD码格式 MOV AL OUT 43H,AL 2、设定计数初值:控制计数频率(F(OUT)=F(CLK)/N =1193181.6 /N) ;将计数器0的计数初值设定为65536,则计数频率为18.2Hz(基准时钟) MOV AX ,0 OUT 40H ,AL MOV AL ,AH OUT 40H ,AL 计数器0初始化 8253/8254定时器作为发声源 计数器2 的G端与61H端口的bit0位相连,将61H端口的bit0位置成1,那么计数器2就被启动,此时将有一组信号从OUT端输出,信号的频率可以用程序控制(设初值);若61H端口bit0位为0,则定时器被关闭,OUT端就会恒定为1。 系统将定时器产生的方波信号同8255的端口B相与来控制扬声器发声,因此当PB1=1时,才能控制扬声器的音调。在系统中8255的B口地址为61H。 图 控制扬声器发声原理图 1、设定控制字:将控制字写入控制寄存器43H ;将计数器2设定为模式3,先读写低字后读写高字 ,二进制码格式 MOV AL ;0b6h称为幻数“ OUT 43H,AL 2、设定计数初值:控制发声频率(F(OUT)=F(CLK)/N =1193181.6 /N) ;将计数器2的计数初值设定为533H,则声音频率为896Hz(BEEP子程序) MOV AX ,0533H OUT 42H ,AL MOV AL ,AH OUT 42

文档评论(0)

有一二三 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档