微机实验课-实验四扬声器程序设计
微机实验四操作参考
2018年11月 William
〇、实验准备
本次实验是设计汇编程序,控制8253和8255的工作原理及其应用编程。8253为微机系统中使用的定时/计数器,8255为并行接口,即提供可用的I/O接口。
本实验的扬声器控制原理如下。
8255的地址为:60H~63H;PB端口地址为61H,控制口为63H;
8253的地址为:40H~43H;通道2地址42H,控制口地址43H。
PC的扬声器以计数器2为核心。计数器8255的CLK2的输入频率为1.193182 MHz,工作于方式3,改变计数器初值可以由得到不同频率的方波输出。
fCLK2频率:1.1931816*1000000=12 34DE H
若要使扬声器输出600Hz频率信号,则8253计数初值为1988(整数商)。
对于600 Hz,N=计数初值=1193182/600=1988。
对于1000 Hz,N=计数初值=1193182/1000=1193。
改变8253的输出频率,即可改变扬声器输出声频信号频率。
(1) 给定8253的OUT2输出频率,获取对应计数初值:
对于1000 Hz, 这里可以用除法实现计算:(DX,AX)=0012 34DE, (DI)=1000
(DX,AX)/DI
MOV DX,12H
MOV AX,34DEH
MOV DI, 1000
DIV DI
这样,计数初值就在AX中。
(2) 初始化8253
MOV AL, 10110110B ;初始化,8253计数器2,模式3,初值16位,二进制
OUT 43H, AL ;8253的控制口地址43H
MOV AX, 1983 ;计数初值=1.19 MHz, 600 Hz=1983
OUT 42H, AL ;送计数初值低位字节,8253的计数器2的地址42H
MOV AL, AH
OUT 42H, AL ;送计数初值高位字节
扬声器受8255A芯片B口的两个输出端线控制,PB0=1,即GATE2=1,计数器2正常计数; PB1=1,打开输出控制门,扬声器工作。8255工作于方式0输出。
一、任务一操作介绍
任务一要求是,观察并记录61H(即8255的PB端口)和42H(即8253的通道2端口)端口变化,产生的影响。即当我们改变61H和42H端口输出时,扬声器是否发声、发声是否变化呢。
实验指导书中,已将程序完全给出,并进行了详细注释,在此不再赘述分析,见程序如下图。
将程序完整复制到txt文本中,并重命名为“shiyan4.asm”,建立好汇编文件,如前实验一致,直接进入debug模式。如下图,直接全速运行[-g],进入 wait1 等待键值循环中。
通过阅读、分析程序可知:
1)按下 a 键时:对8253定时器初始化,设置通道2,方式3;然后用该计数器,计数当输出1000Hz时的计数次数,以产生1000Hz频率的方波,并从42H(OUT2)端口输出。即该子程序功能为:初始化定时器,设置计数初值,并输出1KHz频率信号。
2)按下 b 键时:使PB1=1,输出高电平,驱动扬声器,以开启扬声器。
3)按下 c 键时:使PB1=0,关闭扬声器的驱动,使扬声器无法工作。
4)按下 d 键时:使PB0=1,输出高电平,驱动8253定时器,以开启定时器。
5)按下 e 键时:使PB0=0,关闭定时器驱动电压,使定时器无法工作。
6)按下 ESC 键时:退出整个程序,回到DOS。
因此,要扬声器发声,按键顺序为:a->b->d,即可发生。如下图,此时就能听到1000Hz频率的蜂鸣声了!
然后可使用,e 或 c键关闭;使用 c 和 d 开启。
61H(即8255的PB端口)端口变化: PB0(b和c键控制)和 PB1(d和e键控制)要同时为1,才能开启扬声器,否则,喇叭无声音。
42H(即8253的通道2端口)端口变化:可以为扬声器设置不同频率的方波,频率不同,喇叭音调不同。(在keya子程序中,[MOV DI,1000;将频率转换为计数初值],“1000”即为设置/更改频率的地方)。
到此,完成任务一的要求。
任务二:
编写电子琴程序要求程序能响应三个键,每个键对应不同频率的声音,按下发声,松开静音。
1、下面程序是实现:按下x键,每次以100Hz间隔升调发声。程序如下图所示,在任务一的程序上,添加了 keyx 子程序,红框中为添加的程序。
直接debug测试如下,开启abd后,按x可不断升调发声。
2、实现了一个7个音阶(频率)的电子琴,并且实现按下发声,松开静音(感谢x同学的建议)。程序如下图。
测试结果如下图,按下ESC时,退出程序;按下q时,关闭声音。程序实现了按键 1,2,3,4,5,6,7 时,发出7个不同的音,可以配合简谱“弹”一首《两只老虎》哦,大家快来感受一下吧~
其他参考程序不再列举,到此本次实验全部结束,也是整个微机实验的全部结束,后会有期!
错别字已改,程序已更新,欢迎参考~
微机实验课-实验四扬声器程序设计相关推荐
- 汇编实验四——扬声器程序设计
一.实验要求 通过8253和8255使扬声器发声 编写电子琴程序,要求程序能响应三个键,每个键对应不同频率的声音,按下发声,松开静音. 二.实现原理 8255的地址为:60H~63H;PB端口地址为6 ...
- 华中科技大学操作系统实验课 实验四
一.实验目的 (1)理解设备是文件的概念. (2)掌握Linux模块.驱动的概念和编程流程 (3)Windows /Linux下掌握文件读写基本操作 二.实验内容 (1)编写一个Linux内核模块,并 ...
- 实验课第四次随堂测试
选择题 请问所有的异常类皆继承哪一个类?A A java.lang.Throwable B java.lang.Exception C java.lang.Error D java.io.Except ...
- 《数据挖掘导论》实验课——实验一、数据处理之Numpy
实验一.数据处理之Numpy 一.实验目的 1. 了解numpy库的基本功能 2. 掌握Numpy库的对数组的操作与运算 二.实验工具: 1. Anaconda 2. Numpy 三.Numpy简介 ...
- 如何用matlab画nyqist,机械控制工程基础实验课实验报告
试验一数学模型的Matlab描述 一.实验目的 ①掌握Malab中数学模型的三种表现形式 ②掌握三种模型之间的转换方法 ③掌握复杂传递函数的求取方法 ④了解复杂系统表现形式及建模方法 二.实验要求 ① ...
- 吉林大学单片机实验课实验五——重量测量
主要数模转换和点阵液晶屏显示屏,距离上次更新时间有点久,今天把所有的实验全部更新完,实话说啊,这种不加注释的代码,虽然每个命令都是我亲手写的,但是隔了这么久,第一眼看我也是有点懵的,所以从这篇教程开始 ...
- 华中科技大学操作系统实验课 实验三
一.实验目的 (1)理解页面淘汰算法原理,编写程序演示页面淘汰算法. (2)验证Linux虚拟地址转化为物理地址的机制 (3)理解和验证程序运行局部性的原理. (4)理解和验证缺页处理的流程. 二.实 ...
- 扬声器程序设计(微机原理实验四)
实验四 扬声器程序设计 实验目的: 1.掌握8253的工作原理及其应用编程. 2.掌握8255的工作原理及其应用编程. 实验步骤与任务: 扬声器控制原理(预习) 8255的地址为:60H~63H;PB ...
- C语言找出4个最大和4个最小数,济南大学C语言程序设计教案:C语言实验课程第四课.doc...
济南大学C语言程序设计教案:C语言实验课程第四课 C语言实验课程第四课 实验一 数组与函数.数组与指针 一.实验目的 1 掌握数组名作为函数参数的含义.使用方法. 2 掌握多维数组作为函数参数的使用方 ...
最新文章
- 2021入坑图像分割,我该从哪儿入手?
- C++操作windows注册列表
- SpringDataJpa框架单元测试实现增删改查
- cfd计算linux windows,CFD计算分析时常用的数值模拟方法 | 坐倚北风
- oracle 600 session,记一次ORA-600[4042]故障的处理
- PHPmyadmin 和 MySQL 的配置笔记
- PADS Layout 滴泪、敷铜和删除
- activiti学习之pvm篇
- 目光远大,不要被小许诺所牵绊,唯有自我提升是真理
- c# 数字转换为中文数字
- 解决删除chrome注册表残留问题
- Steering Behaviors
- [解决方案] Mendelay无法打开pdf文档:显示 unable to open this file
- dnf服务器合并信息,《龙与地下城OL》整体服务器合并计划
- 【CF891E】Lust 生成函数
- 盘点国内5大Java开源网店系统
- 统计学方法论2---------推断统计分析:通过样本推断总体
- 台湾赛微CW3002G识别快充方案|CW3002G产品资料|CW3002G设计资料
- 51nod 2534 最小旅行路线------------------------------dp
- 无盘服务器配置网众,三种网众无盘常见服务器配置推荐
热门文章
- git文件取消版本控制和撤销修改
- C++中的Thunk技术和它的使用场景
- N1 空间满了解决步骤
- redeclared with a different type
- 整合EasyExcel+Itext导出PDF和world
- 未安装c 的vs语言支持,microsoft visual c++2015安装时出现问题,显示已安装这个产品的另外一个版本。...
- Alarils PK 靶控注射泵各药物药代动力学模型参数
- HitPaw Photo Enhancer(图片无损放大软件)官方正式版V1.0.1.7 | 基于ai人工智能图片清晰算法的增强照片清晰度的软件
- Excel VBA 对话框选择文件或者文件夹函数实现源码
- 【程序员谈恋爱 三】培养自信