




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、产生警报声程序设计目录 TOC o 1-5 h z HYPERLINK l bookmark1 o Current Document 产生警报声程序设计1 HYPERLINK l bookmark4 o Current Document 目录1 HYPERLINK l bookmark7 o Current Document 1绪论2 HYPERLINK l bookmark10 o Current Document 1.1设计目的和意义2 HYPERLINK l bookmark13 o Current Document 1.2背景知识交代2 HYPERLINK l bookmark16 o
2、 Current Document 1.3设计内容2 HYPERLINK l bookmark19 o Current Document 1.4程序设计说明3 HYPERLINK l bookmark22 o Current Document 2程序设计3 HYPERLINK l bookmark25 o Current Document 2.1程序设计原理3 HYPERLINK l bookmark28 o Current Document 2.2设计环境与工具3 HYPERLINK l bookmark43 o Current Document 2.3发声程序设计主要步骤32.4程序流程图
3、4 HYPERLINK l bookmark52 o Current Document 3程序运行与调试53.1程序源码5 HYPERLINK l bookmark58 o Current Document 3.2截图12 HYPERLINK l bookmark61 o Current Document 结语13 HYPERLINK l bookmark64 o Current Document 参考文献131绪论1.1设计目的和意义在广泛使用的微型机系统中,外部设备是以实现人际交换和机间通信为目的的一些机 电设备。计算机系统通过硬件接口以及I/O控制程序对外部设备进行控制,使其能协调地、
4、有效地完成输入输出工作。在对外部设备的控制过程中,主机不可避免地,有时甚至要很 频繁地对设备接口进行联络和控制,因此,能直接控制硬件的汇编语言就成了编写高性能 I/O程序最有效的程序设计语言。本实验通过编写一个控制主板蜂鸣器发声的程序来掌握 编写I/O程序的基本思想与方法。1.2背景知识交代I/O接口部件中一般有三种寄存器:一是用作数据缓冲的数据寄存器;二是用作保存 设备和接口的状态信息,提供CPU对外设进行测试的状态寄存器;三是用来保存CPU发 出的命令以控制接口和设备的操作的命令寄存器,这些寄存器都分配有各自的端口号,CPU 就是通过不同的端口号来选择各种外部设备的。在自然中,各种声音都是
5、通过振动产生的。人耳能听到的频率大概在20Hz20KHz范 围内。查阅相关资料,可以得到如下常见警报声的频率表:车型音调名称音响频率(Hz)重复变调周期(s)警车紧急调频调6000 5015000+500.333 0.385双音转换调fl: 80050 f2: 1000500.455 0.556消防车连续调频调6000 5015000+503.0005.000救护车慢速双音转换调f 1: 80050 f2: 1000501.667 2.500工程抢险车单音断鸣高800 500.455 0.5561.3设计内容产生急速上滑报警音响,要求变化率可控,由键盘输入控制值。按“Q”键退出。1.4程序设计
6、说明根据1.2中所述,常见警报声的频率基本是固定的,分别作不同的用途,因此本程序 中规定警报声的频率从20Hz1500Hz。变化率的改变则是通过每次选择不同的频率增量来 实现。而不同的频率增量已经提前存储在程序中,提供给用户的是选择几种比较感性的选 项:非常慢,慢速,常速,快速以及非常快。2程序设计2.1程序设计原理计算机的发声原理:在计算机内部有一个可编程时间间隔定时器8253/54 (Programmable internal timer, PIT),它能根据程序提供的计数值和工作模式,产生各种形状 和各种频率的计数/定时脉冲,提供给系统的各个部件使用。例如,提供计时信号给系统日 时期,提
7、供刷新定时信号给动态存储器,对分时系统产生时间片等。它还可以产生不同频 率的脉冲作为扬声器的声源。2.2设计环境与工具DOS操作系统编辑工具EDIT.EXE汇编工具 MASM.EXE(5.0)连接工具LINK.EXE调试工具DEBUG.EXE2.3发声程序设计主要步骤在8253/54中的43端口送一个控制字0B6H(10110110B),该控制字对定时器2进行 初始化,使定时器2准备接收计数初值。在8253/54中的42H端口(Timer2)装入一个16位的计数值(533H*896/频率),以建立 要产生的声音频率。把输出端口 61H的0、1两位置1,发出声音。2.4程序流程图3程序运行与调试
8、3.1程序源码;* /;Programmer:孔祥振;Date:2010/1/3-2010/1-6;Function:Togeneratealarmsoundthatcan;decontrolled.;PressQtoexit*datassegmentmessinfo1dbPleaseinput15,whichrepresentsthechanginglevelofthealarm, 一,$messveryslowdb|1.veryslow|,$messslowdb|2.slow|,$messnormaldb|3.normal|,$messfastdb|4.fast|,$messveryfas
9、tdb|5.veryfast|,$messQdb|Q.Exit|,$messinfo2db-,$messinputdbPleaseinputanumber(15),$messerrordbERRORINPUT!INPUTAGAIN!,$messlistendbPleaselistencarefully,$enterdb13,10,$usr_inputdb?;该程序中警报声的频率下限和频率上限是确定的,因此不同的控制速率会导致警报声的时间不同incvsdw2;分别存有变化的速率 TOC o 1-5 h z incsdw5incndw8incfdw10incvfdw12maxfdw1500minf
10、dw20datasends* /.*w*wwwwwwwww* /stacksegmentdb200dup(stack)stackends;* /;* /codessegment;mainprocfarassume ds:datas,cs:codes,ss:stackstart:pushdssubax,axpushaxmovax,datas movds,ax;显示消息的宏dispmacromessagepushaxpushdx leadx,message movah,09 int21h popdxpopaxendmcallmessshowinput:;输入选择movbx,minfdispmess
11、inputdispentersubax,axmov ah,1;从键盘输入一个字符int 21hdispenterjudge:cmpal,0dhjeinputcmp al,51h;是否为 Qjeexitcmpal,71hjeexitleabx,usr_inputsubal,30h;ASCII码转化为数字movbx,al;usr_input 存该数字cmpal,01h;是否为 1je soundcmpal,02h;是否为 2jesoundcmpal,03h;是否为 3jesoundcmpal,04h;是否为 4jesoundcmpal,05h;是否为 5jesounddispmesserrordi
12、spenterjmpinputexit:movax,4c00hint21h;sound:disp messlistendisp enterrotate:moval,0b6h;writertimemodereg.out43h,almovdx,12hdivbx;发声频率存在bx中,已经初始化bx值为最小频率值out42h,al;writertimer2countlowbytemoval,ahout42h,al;writertimer2counthighbyteinal,61hmov ah,aloral,03hout61h,al;turnthespeakeroncall delaymoval,ah;
13、turnthespeakeroffout61h,alcmpusr_input,1jeinc_vscmpusr_input,2jeinc_scmpusr_input,3jeinc_ncmpusr_input,4jeinc_fcmpusr_input,5jeinc_vfinc_vs:addbx,incvsjmpcmpareinc s:addbx,incsjmpcmpareinc_n:addbx,incnjmpcmpareinc_f:addbx,incfjmpcmpareinc_vf:addbx,incvfjmpcmparecmpare:cmpbx,maxfjberotatejmpinput/mai
14、nendp;fmessshowprocneardispenterdispenterdispmessinfo1dispenter dispmessveryslowdispenter dispmessslow dispenter dispmessnormal dispenter dispmessfast dispenter dispmessveryfast dispenter dispmessQ dispenter dispmessinfo2 dispenter dispenter retmessshowendp;fdelayprocnearmov cx,0a000hloopl:push cxmov cx,100hloop2:loop loop2pop cxretdelayendpcodesends*/endstart3.2截图1.编译、连接过程截图2.运行过程截图结语该程序的开发是作为汇编语言课程设计的内容,经过此次实践,我增长了不少知识, 获益匪浅。通过该程序的设计,我掌握了 I/O程序设计的基本原理思想以及方法,而且对 汇编语言中宏定义,子过程设计有了进一步的认识。汇编语言跳转语句比较多,为了避免 程序成为“意大利面条”,应该适当的采用结构化编程的方法,例如利用子程序设计。此 外,应当注意合理地对变量进行命名可以提高程序的可读性以及可维
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文书模板-分包合同已按已支付金额已结算剩余金额无需支付的情况说明报告
- 江苏职教考试题库及答案
- 排涝泵站设备选型与安装方案
- 轻型钢结构工程后期维护与保养方案
- 建筑营改增考试题及答案
- 供水人员考试试题及答案
- 基于云平台的展厅管理系统
- 九年级化学学期教学心得分享
- 工厂数字化展厅数字化转型路径规划方案
- 2025年锡林郭勒护理单招考试题库及答案
- 2.1岩石圈的组成及物质循环 课件高中地理鲁教版(2019)选择性必修1
- 戥称的介绍讲解
- 2025年全国海洋知识竞赛题库及答案(共200题)
- 《红星照耀中国》中考题集(含答案解析)
- 应聘妇女主任的简历
- 河北农业大学分子生物学题库(带答案)
- 公共管理学:理论、实践与方法 课件全套 汪大海 第1-18章 公共管理与公共管理学- 公共管理的变革
- 瑞幸咖啡副店长认证考试题库
- 某校水、电、气、暖安全管理制度(4篇)
- 【MOOC】食物营养与食品安全-中南大学 中国大学慕课MOOC答案
- 【课件】第21课《小圣施威降大圣》课件2024-2025学年统编版语文七年级上册
评论
0/150
提交评论