微机课程设计(论文)-通用微机发声程序的汇编设计

微机课程设计(论文)-通用微机发声程序的汇编设计

ID:6788906

大小:154.00 KB

页数:37页

时间:2018-01-25

微机课程设计(论文)-通用微机发声程序的汇编设计_第1页
微机课程设计(论文)-通用微机发声程序的汇编设计_第2页
微机课程设计(论文)-通用微机发声程序的汇编设计_第3页
微机课程设计(论文)-通用微机发声程序的汇编设计_第4页
微机课程设计(论文)-通用微机发声程序的汇编设计_第5页
资源描述:

《微机课程设计(论文)-通用微机发声程序的汇编设计》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、微型计算机课程设计———通用微机发声程序的汇编设计广东工业大学2002届工业工程2班伍健柱2摘要:本文讲述了在微型计算机中利用可编程时间间隔定时器的通用发声程序设计,重点讲述了程序的发声原理,节拍的产生,按节拍改变的动画程序原理,并以设计一个简单的乐曲评分程序为引子,分析程序设计的细节。关键字:微机8253通用发声程序动画技术直接写屏1.可编程时间间隔定时器8253在通用个人计算机中,有一个可编程时间间隔定时器8253,它能够根据程序提供的计数值和工作方式,产生各种形状和各种频率的计数/定时脉冲,提供给系统各个部件使用。本设计是利用计算机

2、控制发声的原理,编写演奏乐曲的程序。在8253/54定时器内部有3个独立工作的计数器:计数器0,计数器1和计数器2,每个计数器都分配有一个断口地址,分别为40H,41H和42H.8253/54内部还有一个公用的控制寄存器,端地址为43H.端口地址输入到8253/54的CS,AL,A0端,分别对3个计数器和控制器寻址.对8353/54编程时,先要设定控制字,以选择计数器,确定工作方式和计数值的格式.每计数器由三个引脚与外部联系,见教材第320页图9-1.CLK为时钟输入端,GATE为门控信号输入端,OUT为计数/定时信号输入端.每个计数器中

3、包含一个16位计数寄存器,这个计数器时以倒计数的方式计数的,也就是说,从计数初值逐次减1,直到减为0为止.8253/54的三个计数器是分别编程的,在对任一个计数器编程时,必须首先讲控制字节写入控制寄存器.控制字的作用是告诉8253/54选择哪个计数器工作,要求输出什么样的脉冲波形.另外,对8253/54的初始化工作还包括,向选定的计数器输入一个计数初值,因为这个计数值可以是8为的,也可以是16为的,而8253/5的数据总线是8位的,所以要用两条输出指令来写入初值.下面给出8253/54初始化程序段的一个例子,将计数器2设定为方式3,(关于

4、计数器的工作方式参阅教材第325—330页)计数初值为65536.MOVAL,B;选择计数器2,按方式3工作,计数值是二进制格式OUT43H,AL;j将控制字送入控制寄存器MOVAL,0;计数初值为0OUT42H,AL;将计数初值的低字节送入计数器2OUT42H,AL;将计数初值的高字节送入计数器2在IBMPC中8253/54的三个时钟端CLK0,CLK1和CLK2的输入频率都是1.MHZ.PC机上的大多数I/O都是由主板上的8255(或8255A)可编程序外围接口芯片(PPI)管理的.关于8255A的结构和工作原理及应用举例参阅教材第3

5、40—373页.教材第364页的”PC/XT机中的扬声器接口电路”一节介绍了扬声器的驱动原理,并给出了通用发声程序.本设计正是基于这个原理,通过编程,控制加到扬声器上的信号的频率,奏出乐曲的.2.发声程序的设计下面是能产生频率为f的通用发声程序:MOVAL,B;8253控制字:通道2,先写低字节,后写高字节;方式3,二进制计数OUT43H,AL;写入控制字MOVDX,0012H;被除数高位MOVAX,35DEH;被除数低位DIVID;求计数初值n,结果在AX中OUT42H,AL;送出低8位MOVAL,AHOUT42H,AL;送出高8位IN

6、AL,61H;读入8255A端口B的内容MOVAH,AL;保护B口的原状态ORAL,03H;使B口后两位置1,其余位保留OUT61H,AL;接通扬声器,使它发声3.80x86的时间延迟利用CPU循环执行一条或几条指令来产生延迟时间是最常用的一种方法,但对8088/86,80286,80386,80486以及pentiumIV来说,由于它们的工作频率不同及有些指令执行周期的差异,执行同样的延迟程序,产生的延迟时间都不一样。为了建立一个与处理器无关的时间延迟,1BM采用了一种利用硬件产生时间延迟的方法,即通过监视端口61H的PB4,使PB4每

7、15.08us触发一次,以产生一个固定不变的时间基准,。下面的WAITF程序就是一个产生Nx15.08us时间延迟的程序。调用WALTF子程序时,CX寄存器必须装入15.08us的倍数N。CX=15.08us的倍数WAITFPROCNEARPUSHAXWALTF1:INAL,61HANDAL,10H;检测PB4的状态CMPAL,AH;是否发生变化JEWAITF1;等待变化MOVAH,AL;存入新的PB4的状态LOOPWAITF1;循环,直到CX=0为止POPAXRETWAITFENDP当CX中的计数值N=663时,调用WAITF子程序,可

8、延迟10ms,若要延迟1s,可调用WAITF子程序100次,若要延迟0.5s,可调用WAITF子程序50次,依从类推,只要设置WAITF子程序的调用次数,就可获得所需的延迟时间。本程序还使用了

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。