微机实验四操作参考

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个不同的音,可以配合简谱“弹”一首《两只老虎》哦,大家快来感受一下吧~

其他参考程序不再列举,到此本次实验全部结束,也是整个微机实验的全部结束,后会有期!

错别字已改,程序已更新,欢迎参考~

微机实验课-实验四扬声器程序设计相关推荐

  1. 汇编实验四——扬声器程序设计

    一.实验要求 通过8253和8255使扬声器发声 编写电子琴程序,要求程序能响应三个键,每个键对应不同频率的声音,按下发声,松开静音. 二.实现原理 8255的地址为:60H~63H;PB端口地址为6 ...

  2. 华中科技大学操作系统实验课 实验四

    一.实验目的 (1)理解设备是文件的概念. (2)掌握Linux模块.驱动的概念和编程流程 (3)Windows /Linux下掌握文件读写基本操作 二.实验内容 (1)编写一个Linux内核模块,并 ...

  3. 实验课第四次随堂测试

    选择题 请问所有的异常类皆继承哪一个类?A A java.lang.Throwable B java.lang.Exception C java.lang.Error D java.io.Except ...

  4. 《数据挖掘导论》实验课——实验一、数据处理之Numpy

    实验一.数据处理之Numpy 一.实验目的 1. 了解numpy库的基本功能 2. 掌握Numpy库的对数组的操作与运算 二.实验工具: 1. Anaconda 2. Numpy 三.Numpy简介 ...

  5. 如何用matlab画nyqist,机械控制工程基础实验课实验报告

    试验一数学模型的Matlab描述 一.实验目的 ①掌握Malab中数学模型的三种表现形式 ②掌握三种模型之间的转换方法 ③掌握复杂传递函数的求取方法 ④了解复杂系统表现形式及建模方法 二.实验要求 ① ...

  6. 吉林大学单片机实验课实验五——重量测量

    主要数模转换和点阵液晶屏显示屏,距离上次更新时间有点久,今天把所有的实验全部更新完,实话说啊,这种不加注释的代码,虽然每个命令都是我亲手写的,但是隔了这么久,第一眼看我也是有点懵的,所以从这篇教程开始 ...

  7. 华中科技大学操作系统实验课 实验三

    一.实验目的 (1)理解页面淘汰算法原理,编写程序演示页面淘汰算法. (2)验证Linux虚拟地址转化为物理地址的机制 (3)理解和验证程序运行局部性的原理. (4)理解和验证缺页处理的流程. 二.实 ...

  8. 扬声器程序设计(微机原理实验四)

    实验四 扬声器程序设计 实验目的: 1.掌握8253的工作原理及其应用编程. 2.掌握8255的工作原理及其应用编程. 实验步骤与任务: 扬声器控制原理(预习) 8255的地址为:60H~63H;PB ...

  9. C语言找出4个最大和4个最小数,济南大学C语言程序设计教案:C语言实验课程第四课.doc...

    济南大学C语言程序设计教案:C语言实验课程第四课 C语言实验课程第四课 实验一 数组与函数.数组与指针 一.实验目的 1 掌握数组名作为函数参数的含义.使用方法. 2 掌握多维数组作为函数参数的使用方 ...

最新文章

  1. java 风格的正则表达式 vs Perl风格的正则表达式
  2. 【转】Java基础知识整理
  3. python在工厂中的运用_在python中使用元类实现工厂设计模式
  4. python 插值_有序点列的样条插值
  5. 为什么要使用 React-Redux?
  6. ffmpeg和SDL教程 04:创建线程
  7. SVN的学习和使用(七)——SVN提交操作
  8. pr2020lut导入_PS PR AE怎么批量导入LUTS调色预设
  9. DeepinXP Lite 完美精简版 |5.2|5.3|5.4|5.5|5.6|5.7|5.8|5.9|5.10||6.1New| 迅雷下载
  10. npm create vite@latest 失败
  11. 键盘(键盘基础,按键消息)
  12. 华三STP、RSTP、MSTP的详解
  13. tableau各种精典示例经验总结01
  14. 计算机网络常见名词及其解释
  15. 升级版的冒泡排序Java
  16. 大学物理·第3章动量守恒定律和能量守恒定律
  17. JS学习日记--面向对象
  18. 西门子S7-1200PLC程序 3轴伺服PTO,脉冲加方向控制
  19. 一级计算机b和c哪个更,B1级、B级和C级阻燃板有什么不同?哪个好?
  20. 电脑显示远程计算机或设备将不接受连接的解决办法,已解决

热门文章

  1. Android aar 包修改源代码和布局资源id
  2. 富翁的17种思考方式
  3. Python继承初始化问题
  4. U8根据采购订单制单人匹配存货档案中存在采购员的物料
  5. codewar Narcissistic Number水仙花数
  6. Android开发之无线遥控器
  7. java邮件会议邀请_javamail+ical4j发送会议邀请
  8. 基于均值漂移的视频目标跟踪算法的研究
  9. 黑群晖Docker 安装Jellyfin 家庭影院
  10. 基于梳状(陷波)IIR 滤波进行基频跟踪附matlab代码