定时器编程综述._第1页
定时器编程综述._第2页
定时器编程综述._第3页
定时器编程综述._第4页
定时器编程综述._第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、定时器定时器8253/82548253/82542022-3-20通用发声程序通用发声程序 补充材料补充材料定时器定时器8253/82548253/82542022-3-20可编程时间间隔定时器可编程时间间隔定时器8253/82548253/8254n计数器计数器0:用于控制系统时钟正常运转,端口地址为用于控制系统时钟正常运转,端口地址为40H。 n计数器计数器1:用于存储器刷新用于存储器刷新 ,端口地址为,端口地址为41H。 n计数器计数器2:用于控制扬声器发声,端口地址为用于控制扬声器发声,端口地址为42H。 n公用的控制寄存器:公用的控制寄存器:端口地址为端口地址为43H定时器定时器82

2、53/82548253/82542022-3-20计数器计数器0 0的工作的工作 系统时钟之所以能连续运转主要依靠定时器的通道系统时钟之所以能连续运转主要依靠定时器的通道1(计数器(计数器0)。)。 系统启动时设定其发出一个频率固定为系统启动时设定其发出一个频率固定为18.2Hz的信号,这个信的信号,这个信号直接送到系统中的号直接送到系统中的“中断控制器中断控制器”。每一个。每一个“Hz”都产生一个硬件中断,都产生一个硬件中断,一般称这个硬中断为一般称这个硬中断为“IRQ0”,对应的中断类型号是,对应的中断类型号是08H。 也就是说,当计算机启动后,我们的机器看上去十分平静,但实也就是说,当计

3、算机启动后,我们的机器看上去十分平静,但实际上际上CPU非常忙碌。在定时器的控制下每隔非常忙碌。在定时器的控制下每隔55毫秒就要执行一个毫秒就要执行一个08H号中断,这个中断的主要工作就是连续地计数。号中断,这个中断的主要工作就是连续地计数。 在内存在内存“0040H:006CH”处有四个字节的存储空间专门用于保存计数值,处有四个字节的存储空间专门用于保存计数值,CPU每执行每执行一次一次08H中断,这四字节的计数值就被加中断,这四字节的计数值就被加1,不难算出这个计数值每增,不难算出这个计数值每增加加1091后时间恰好过了后时间恰好过了1分钟,每增加分钟,每增加65454后时间恰好过了后时间

4、恰好过了1小时。小时。系统内部的时钟之所以能准确走时,靠的就是系统内部的时钟之所以能准确走时,靠的就是08H中断和这四字节的中断和这四字节的计数值。因此我们要想精确的定时,必须依靠时钟计数值才行。计数值。因此我们要想精确的定时,必须依靠时钟计数值才行。 定时器定时器8253/82548253/82542022-3-201、设定控制字:设定控制字:将控制字写入控制寄存器将控制字写入控制寄存器43H;将计数器将计数器0设定为模式设定为模式3,先写低字节接着写高字节,先写低字节接着写高字节 ,BCD码格式码格式 MOV AL,00110111B OUT 43H,AL2、设定计数初值:设定计数初值:控

5、制计数频率控制计数频率(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 0初始化初始化定时器定时器8253/82548253/82542022-3-208253/8254定时器作为发声源计数器计数器2 的的G端与端与61H端口的端口的bit0位相连,将位相连,将61H端口的端口的bit0位置成位置成1,那么计数器,那么计数器2就被启动,此时将有一组信号从

6、就被启动,此时将有一组信号从OUT端输出,信号的频率可以用程序控制端输出,信号的频率可以用程序控制(设初设初值值);若;若61H端口端口bit0位为位为0,则定时器被关闭,则定时器被关闭,OUT端就会恒定为端就会恒定为1。 系统系统定时器定时器8253/82548253/82542022-3-201、设定控制字:设定控制字:将控制字写入控制寄存器将控制字写入控制寄存器43H;将计数器将计数器2设定为模式设定为模式3,先读写低字后读写高字,先读写低字后读写高字 ,二进制码格式,二进制码格式 MOV AL,10110110B ;0b6h称为称为幻数幻数“ OUT 43H,AL2、设定计数初值:设定

7、计数初值:控制发声频率控制发声频率(F(OUT)=F(CLK)/N =1193181.6 /N);将计数器将计数器2的计数初值设定为的计数初值设定为533H,则声音频率为,则声音频率为896Hz(BEEP子程序)子程序) MOV AX ,0533H OUT 42H ,AL MOV AL ,AH OUT 42H ,AL计数器计数器2 2初始化初始化定时器定时器8253/82548253/82542022-3-20扬声器驱动扬声器驱动 与门用在这里相当一个与门用在这里相当一个“可控开关可控开关”,如果将,如果将61H端口的端口的bit0、bit1位都位都置成置成1,则相当于既打开了定时器又打开了开

8、关,这时候定时器产生的声音,则相当于既打开了定时器又打开了开关,这时候定时器产生的声音信号就会送到放大器推动喇叭发声;称为信号就会送到放大器推动喇叭发声;称为 定时器触发方式定时器触发方式 若将若将bit0位置位置0,则定时器关闭,此时,则定时器关闭,此时OUT端为端为1,这时候如果连续改变,这时候如果连续改变bit1位的状态,也可以从喇叭中听到声音,这就是位的状态,也可以从喇叭中听到声音,这就是位触发方式位触发方式;若将;若将bit1位位置置0,则开关关闭,此时即使打开定时器也不能听到声音。,则开关关闭,此时即使打开定时器也不能听到声音。 IN AL , 61H ;读状态读状态 MOV AH

9、 , AL ;保存原状态,保存原状态,push ax OR AL , 00000011B ;置置bit0,bit为为1 OUT 61H , AL . MOV AL , AH ;恢复原状态恢复原状态, pop ax OUT 61H , AL定时器定时器8253/82548253/82542022-3-20通用发声程序通用发声程序 soundf proc near push axpushbxpushcxpushdxpushdimov al,0b6h ;初始化计数器初始化计数器2 控控制扬声器制扬声器out43h,almov di,220 ;音频音频mov dx,12hmov ax,348ch ;d

10、x:ax=输入频率输入频率1.1931817MHzdivdi ;ax=计数初值计数初值out42h,almov al,ahout42h,alinal,61h mov ah,aloral, 3 ;打开扬声器打开扬声器out61h,al mov bx,1000 ;控制控制10秒响铃秒响铃wait1: mov cx,633 call waitf ;调用延时调用延时10ms dec bx jnz wait1 mov al,ah out 61h,al ;恢复恢复原状态原状态pop dipop dxpop cxpop bxpop axretsoundf endp定时器定时器8253/82548253/82542022-3-20利用硬件产生延迟的方法,与处理器无关利用硬件产生延迟的方法,与处理器无关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论