欢迎来到天天文库
浏览记录
ID:13538450
大小:166.00 KB
页数:10页
时间:2018-07-23
《发声系统程序设计(微机原理实验设计)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、一、实验目的 :利用不同的方法设计一个声音发声系统二、实验内容:1.8253定时器作为发声源将定时器产生的方波信号同8255的端口B相与来控制扬声器发声的(如图1所示),因此当PB1=1时,才能控制扬声器的音调。在系统中8255的B口地址为61H,控制扬声器发声原理图指令:INAL,61HORAL,3OUT61H,AL发声子程序如下:BEEPPROCNEARMOVAL,10110110BOUT43H,ALMOVAX,533HOUT42H,ALMOVAL,AHOUT42H,ALINAL,PORT_BMOVAH,ALORAL,03OUTPORT
2、_B,ALSUBCX,CXG7:LOOPG7DECBLJNZG7MOVAL,AHOUTPORT_B,ALRETBEEPENDP2.8255端口B(如PB1位)作为发声源使8255端口B(或相应的等效电路)最低位D0=0,关闭定时器声源的输出,OUT2为常高电位(方式3所致)。又通过使8255端口B(或相应等效电路)的D1位置1或置0(按指定的频率来编程),便能让“与”门输出一周期性变化的方波,使扬声器发声。3.利用中断调用实现发声利用计算机内部的计数器和扬声器实现三、实验内容及程序1.扬声器发声通用子程序PUBLICGENSOUNDCODE
3、SEGMENTPARA‘CODE’ASSUMECS:CODEGENSOUNDPROCFARPUSHAX;保存将要用到的寄存器PUSHBXPUSHCXPUSHDXPUSHDIMOVAL,0B6H;向8253-5/8254-2计数器2写控制字OUT43H,AL;方式3、双字节写和二进制计数方式写到控制口MOVDX,12H;设置被除数MOVAX,533H*896DIVDI;其商(AX)为预置值OUT42H,AL;先送LSBMOVAL,AHOUT42H,AL;后送MSBINAL,61H;读8255端口B(61H)原值MOVAH,AL;保存端口原值O
4、RAL,3OUT61H,AL;接通扬声器WAIT1:MOVCX,8FF0H;在80486/DX2/66中取DELAY:LOOPDELAY;循环次数为8FF0HDECBX;循环持续BX次JNZWAIT1MOVAL,AH;写回61H口原值,关闭扬声OUT61H,ALPOPDI;恢复寄存器POPDXPOPCXPOPBXPOPAXRET;子程序结束返回GENSOUNDENDPCODEENDSEND2.演奏乐曲程序2..以乐谱“玛丽有只小羊羔”为例编写演奏程序程序如下:TITLEMUSIC–乐曲“玛丽有只小羊羔”;汇编过程:MASMMUSIC.ASM
5、连接过程;LINKMUSIC+GENLOUNDEXTRNGENSOUND:FAR;定义外部调用程序STACKSEGMENTPARASTACK‘STACK’DB64DUP(‘STACK’)STACKENDSDATASEGMENTPARA‘DATA’MUS_FREQDW330,294,262,294,3DUP(330);为演奏的乐曲定义一个DW3DUP(294),330,392,392;频率表DW330,294,262,294,4DUP(330)DW294,294,330,294,262,-1MUS_TIMEDW6DUP(25*8),50*8;
6、为演奏的乐曲定义一个DW2DUP(25*8,25*8,50*8);节拍时间表DW12DUP(25*8),100*8DATAENDS;CODESEGMENTPARA‘CODE’ASSUMECS:CODE,SS:STACKASSUMEDS:DATAMUSICPROCFARPUSHDSSUBAX,AXPUSHAXMOVAX,DATA;指向数据指针MOVDS,AXLEASI,MUS_FREQ;将频率表的偏移地址送入SILEABP,DS:MUS_TIME;将节拍时间表的偏移地址送入BPFREQ:MOVDI,[SI];取音符频率CMPDI,-1;结束?
7、JEEND_MUS;是,退出MOVBX,DS:[BP];取音符持续时间CALLGENSOUND;调用GENSOUND发音子程序ADDSI,2;频率表指针增2ADDBP,2;时间表指针增2JMPFREQ;继续演奏END_MUS:RET;返回DOSMUSICENDP;CODEENDSENDMUSIC3.定时报警程序TITLEALARM——定时报警程序利用INT1AH中断实现定时报警,本程序在执行后,若设置成功则首先显示;字符串“Setupallright”并使扬声器发声,这表明设置成功;1分钟(为定时时间,;读者也可自己设定)后屏幕显示“!”并
8、发声,以示报警。;汇编过程:MASM:ALARM.ASM;连接过程:LINK:ALARM+GENSOUNDEXTRNGENSOUND:FAR;定义外部调用程序STACKSEGME
此文档下载收益归作者所有