




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、实验目的:利用不同的方法设计一个声音发声系统二、实验内容:18253定时器作为发声源将定时器产生的方波信号同8255的端口B相与来控制扬声器发声的(如图1所示),因此当PB1=1时,才能控制扬声器的音调。在系统中8255的B口地址为61H, 控制扬声器发声原理图指令: INAL,61HORAL,3OUT61H,AL发声子程序如下:BEEPPROC NEAR MOVAL,10110110BOUT43H,AL MOVAX,533HOUT42H,AL MOVAL,AH OUT42H,AL INAL,PORT_B MOVAH,ALORAL,03OUTPORT_B,ALSUBCX,CXG7:LOOPG7DECBLJNZG7MOVAL,AHOUTPORT_B,ALRET BEEPENDP28255端口B(如PB1位)作为发声源使8255端口B(或相应的等效电路)最低位D0=0,关闭定时器声源的输出,OUT2为常高电位(方式3所致)。又通过使8255端口B(或相应等效电路)的D1位置1或置0(按指定的频率来编程),便能让“与”门输出一周期性变化的方波,使扬声器发声。3利用中断调用实现发声利用计算机内部的计数器和扬声器实现 三、实验内容及程序1扬声器发声通用子程序PUBLICGENSOUNDCODESEGMENT PARA CODEASSUME CS:CODEGENSOUNDPROCFARPUSHAX;保存将要用到的寄存器PUSHBXPUSH CX PUSH DXPUSH DIMOV AL,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;保存端口原值ORAL,3 OUT61H,AL;接通扬声器WAIT1:MOV CX,8FF0H;在80486/DX2/66中取DELAY:LOOP DELAY;循环次数为8FF0HDECBX;循环持续BX次JNZWAIT1MOVAL,AH;写回61H口原值,关闭扬声OUT61H,ALPOPDI;恢复寄存器POPDX POPCXPOPBX POPAXRET;子程序结束返回GENSOUNDENDPCODEENDSEND2演奏乐曲程序2.以乐谱“玛丽有只小羊羔”为例编写演奏程序程序如下:TITLE MUSIC 乐曲“玛丽有只小羊羔”;汇编过程: MASM MUSIC.ASM 连接过程;LINK MUSIC+GENLOUNDEXTRN GENSOUND:FAR;定义外部调用程序STACKSEGMENT PARA STACK STACKDB 64 DUP(STACK)STACKENDSDATA SEGMENT PARA DATAMUS_FREQ DW 330,294,262,294,3 DUP(330);为演奏的乐曲定义一个DW3 DUP(294),330,392,392;频率表DW330,294,262,294,4 DUP(330)DW294,294,330,294,262,-1MUS_TIME DW6 DUP(25*8),50*8;为演奏的乐曲定义一个DW2 DUP(25*8,25*8,50*8);节拍时间表DW12 DUP(25*8),100*8 DATA ENDS; CODESEGMENTPARA CODEASSUME CS:CODE,SS:STACKASSUME DS:DATAMUSICPROC FARPUSHDS SUBAX,AXPUSHAXMOVAX,DATA;指向数据指针MOVDS,AXLEASI,MUS_FREQ;将频率表的偏移地址送入SILEABP,DS:MUS_TIME;将节拍时间表的偏移地址送入BPFREQ:MOV DI,SI;取音符频率CMPDI,-1;结束?JEEND_MUS;是,退出MOVBX,DS:BP;取音符持续时间CALLGENSOUND;调用GENSOUND发音子程序ADDSI,2;频率表指针增2ADDBP,2;时间表指针增2JMPFREQ;继续演奏END_MUS:RET;返回DOSMUSICENDP;CODEENDSENDMUSIC3定时报警程序TITLE ALARM定时报警程序利用INT 1AH中断实现定时报警,本程序在执行后,若设置成功则首先显示;字符串“Set up all right ”并使扬声器发声,这表明设置成功;1分钟(为定时时间,;读者也可自己设定)后屏幕显示“!”并发声,以示报警。;汇编过程:MASM:ALARM.ASM;连接过程:LINK :ALARM+GENSOUNDEXTRN GENSOUND:FAR;定义外部调用程序STACKSEGMENT PARA STACK STACKDB 64 DUP(STACKSTACKENDS;DATASEGMENT PARA PUBLIC DATABJDB Set up all right .DB 13,10,$DATA ENDS; CODE SEGMENT PARA PUBLIC CODEASSUME CS:CODE,SS:STACK,DS:DATAENTRYPROC FARPUSHDS;保存旧的数据段SUBAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVAL,4AH;读取INT 4AH中断向量MOVAH,35H INT 21HPUSHES;入栈保护 PUSHBXSTEP1:MOV AH,7;清除实时钟报警INT1AHJCSTEP1;进位位为1则转移(成功则转移); MOVAL,4AH;设置新的INT 4AH中断向量MOVDX,SEG ALARMMOVDS,DX LEADX,ALARM MOVAH,25HINT21H CLI;关中断STEP2:MOV AH,2;利用INT 1AH读当前实时钟时间INT1AH;时、分、秒分别置入CH、CL、DHJCSTEP2;不成功再读MOVAL,CLADDAL,1;增1分钟DAA;调整为BCD码格式CMPAL,60H;是60分吗(BCD数)?JLSTEP3;不是,则转移MOVAL,00H;是,改为0分STEP3:MOV CL,AL;得到报警时刻的分值MOVAH,6;CH、DH仍为原值INT1AH;设置报警时刻JCSTEP2;不成功重做STI;开中断MOVCX,12SETUP:MOV AH,2;设置成功发出“嘟嘟”声MOV DL,07H;07H是振铃控制码INT21H;用INT 21H 的2号功能实现LOOPSETUP;循环发声MOVAX,DATAMOVDS,AXMOVDX,OFFSET BJ;显示“Set up all right .”字符串MOVAH,9INT21H MOV DX,32000MAINP1:MOV CX,25500;延时程序段,等待报警MAINP2:LOOP MAINP2DECDXJNEMAINP1RES:POPDX;恢复INT 4AH 原中断向量POPDSMOVAL,4AHMOVAH,35H INT21H RET ENTRYENDP;ALARMPROC;报警中断服务程序 PUSHAX PUAHBXPUSHDI STIMOV AH,2;显示字符!MOV DL,!INT21HMOVDI,300;发音频率MOVBX,1400;发音延迟时间CALLGENSOUND;调用通用发声子程序POPDI POPBXPOPAX IRETALARMENDPCODEENDSENDENTRY;程序结束4.用软中断INT 60H、发声中断服务程序INT 61H以及软中断INT 62H、 INT 63H ,实现字符串“intel 80486 DX2/66 CPU”显示、扬声器发声和变色三角形的显示功能,定时器ICH中断作为计数器使用。DATASEGMENT PARA DATA;数据段D1DB 0DH,intel 80486 DX2/66 CPU $D3DW 0D20DB ? DATAENDS;STACSEGMENT PARA STACK STAC;堆栈段STA1DW 100 DUP(?)STACENDS;CODESEGMENT PARA CODE;代码段ASSUME CS:CODE,DS:DATAASSUME SS:STAC,ES:DATASTARPROCFAR;主程序开始PUSHDS XOR AX,AXPUSHAX MOV AX,DATAMOVDS,AX MOVES,AXCLI;关中断MOVAL,1CH;保存定时器时钟中断向量MOVAH,35HINT21HPUSHESPUSHBX PUSHDSMOVDX,OFFSET RING;设置定时器时钟中断向量MOVAX,SEG RINGMOVDS,AXMOVAL,1CH MOVAH,25HINT21HPOPDS INAL,21H;读IMR中的屏蔽码ANDAL,1111110B;开放中断0并保留中断屏蔽设置OUT21H,AL;将新屏蔽码写入IMR中PUSHDS;入栈保护DS寄存器MOVDX,OFFSET I60;取I60的偏移地址MOVAX,SEG I60;取I60的段基地址MOVDS,AXMOVAH,25HMOVAL,60HINT21HLEADX,I61;设置61H软中断向量MOVAX,SEG I61MOVDS,AXMOVAH, 25HMOVAL,61HINT21HLEADX,I62;设置62H软中断向量MOVAX,SEG I62MOVDS,AXMOVAH,25H MOV AL,62HINT21HLEADX,I63;设置63H软中断向量MOVAX,SEG I63 MOVDS,AXMOVAH,25H MOVAL,63HINT21H POPDS;DS出栈STI;开中断MOVDI,8000DELAY:MOVSI,150INT60H;调用60H中断,使程序进入DELAY1:DECSI;循环状态JNZDELAY1 DECDIJNZDELAYPOPDX;恢复定时器控制(ICH)中断向量POPDS MOVAL,1CHMOVAH,25H INT21HMOVAH, 0;显示器恢复文本状态MIVAL,3 INT 10HRET STARENDP;RINGPROCFAR;定时器中断服务程序PUSHDS PUSHAXMOVAX,DATAMOVDS,AX STIINCD20;计数单元加1B11:POP AXPOPDSIRET;中断服务结束返回RINGENDP;I60PROCFAR;60H中断服务程序完成对PUSHAX;61H和62H中断的调用PUSHDXLEADX,D1;显示intel 80486 DXMOVAH,9INT21HCMPD20,2;中断延时到否?JNEC11;到,则转置C11MOVD20,0;否则使D20清0INT61H;用发声中断INT 61HINT62H;用延时绘图中断INT 62HC11:POPDXPOPAXIRET;中断服务结束返回I60ENDP;I61PROCFAR;声中断:INT 61HPUSHAX PUSHCXPUSHDXMOVDX,140H;置发音持续时间INAL,61H;8255A PB 口内容到ALANDAL,11111100B;AL的D1D0位置0L1:XORAL,00000010B;L的D1取反OUT61H,AL;L送PB口,控制扬声器发声MOVCX,0F600H;置方波信号频率变换时间常数L2:LOOPL2 DECDXJNZL1 POPDX;恢复现场POPCX POPAXIRETI61ENDP;I62PROCFAR;延时调用绘图中断INT 63HPUSHCX PUSH DX MOVDX,40HK1:MOVCX,440HK2:LOOPK2 DECDXJNZK1INT63H;调用软中断63HPOPDX POPCX IRETI62ENDP;I63PROCFAR;绘图中断程序INT 63HPUSHAX PUSHBXPUSHCX PUSHDXPUSHDS MOVAH,0MOVAL,12H;设置显示模式4(图形方式320*200)INT10NMOVAL,1;设图形色号A0:MOVDX,1;设置图形起点行坐标DX=10MOVD3,1;设图形第一行点数D3=1MOVCX,320;设图形起点列坐标CX=160A1:PUSHCX;入栈保护CXPUSHD3A2:MOVAH,12PUSHAXINT10H;写点(12号功能调用)POPAXINTCX;修改写点列坐标CX=CX+1SUBD3,1;修改写点计数D3=D3-1JNZA2;判断D3=0?非
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 自动控制系统【直流】课设指导书-野莹莹要点
- 设备费用核算管理
- 财务会计综合考试试卷 (一)
- 2024年中考押题预测卷02(武汉卷)-道德与法治(考试版)A3
- 2024-2025学年下学期高一生物沪科版期末必刷常考题之有性生殖中的遗传信息传递
- 建筑施工特种作业-高处作业吊篮安装拆卸工真题库-1
- 山东社区招聘题目及答案
- 剖切面的种类与剖切方法2
- 2023-2024学年山东省青岛市胶州市高二下学期期末学业水平检测数学试题(解析版)
- 2023-2024学年湖北省新高考联考协作体高二下学期7月期末考试数学试题(解析版)
- 消费者态度的形成与改变
- 大学生人际交往调查报告课件
- 湖南省长沙市望城区2020-2021学年八年级下学期期末考试历史试卷
- 教学质量检测质量分析表
- 10kv线路巡视检查表
- 施工单通用范本
- 六合散-春脚集卷二-方剂加减变化汇总
- 庆阳市北部城区控制性详细规划—说明书
- 趣味英语(课堂PPT)
- 五年级语文下学期课文内容填空专项习题含答案
- 食品质量安全溯源系统技术方案
评论
0/150
提交评论