微机实验四操作参考

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. 2021入坑图像分割,我该从哪儿入手?
  2. C++操作windows注册列表
  3. SpringDataJpa框架单元测试实现增删改查
  4. cfd计算linux windows,CFD计算分析时常用的数值模拟方法 | 坐倚北风
  5. oracle 600 session,记一次ORA-600[4042]故障的处理
  6. PHPmyadmin 和 MySQL 的配置笔记
  7. PADS Layout 滴泪、敷铜和删除
  8. activiti学习之pvm篇
  9. 目光远大,不要被小许诺所牵绊,唯有自我提升是真理
  10. c# 数字转换为中文数字
  11. 解决删除chrome注册表残留问题
  12. Steering Behaviors
  13. [解决方案] Mendelay无法打开pdf文档:显示 unable to open this file
  14. dnf服务器合并信息,《龙与地下城OL》整体服务器合并计划
  15. 【CF891E】Lust 生成函数
  16. 盘点国内5大Java开源网店系统
  17. 统计学方法论2---------推断统计分析:通过样本推断总体
  18. 台湾赛微CW3002G识别快充方案|CW3002G产品资料|CW3002G设计资料
  19. 51nod 2534 最小旅行路线------------------------------dp
  20. 无盘服务器配置网众,三种网众无盘常见服务器配置推荐

热门文章

  1. git文件取消版本控制和撤销修改
  2. C++中的Thunk技术和它的使用场景
  3. N1 空间满了解决步骤
  4. redeclared with a different type
  5. 整合EasyExcel+Itext导出PDF和world
  6. 未安装c 的vs语言支持,microsoft visual c++2015安装时出现问题,显示已安装这个产品的另外一个版本。...
  7. Alarils PK 靶控注射泵各药物药代动力学模型参数
  8. HitPaw Photo Enhancer(图片无损放大软件)官方正式版V1.0.1.7 | 基于ai人工智能图片清晰算法的增强照片清晰度的软件
  9. Excel VBA 对话框选择文件或者文件夹函数实现源码
  10. 【程序员谈恋爱 三】培养自信