汇编实验--音乐播放程序.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第三节音乐播放程序

TOC\o"1-2"\h\z\u1硬件编程2

1.1硬件开发的通用思路2

1.28253的功能与作用2

1.38253工作原理3

1.48253编程方法4

2音乐程序编写6

2.1扬声器驱动原理6

2.2音符频率确实定6

2.3定时器8253编程7

2.4并口8255A编程7

3实验步骤10

4Turboc2的安装与使用11

4.1turboc2的安装11

4.2集成环境介绍11

4.3turboc2的配置13

4.4根本编程操作14

1硬件编程

1.1硬件开发的通用思路

在学习的过程中,往往表达一个人的学习能力,并不是一个人在某一方面具体知识和技能掌握的如何,而是他是否掌握了有效的学习方法,是否能够建立起一个夯实的知识框架。

在本次实验中,通过大家学习本次实验,完成实验任务只是一个浅层次的目的,更重要的目的,也是通过实验,让大家亲身体验下硬件编程,掌握硬件编程的方法。

其实不光是在硬件开发上,对于其他的任何事物和问题,解决问题的方法也是一样的。以下我们以8253定时器的开发,来简要介绍下我们的学习思路和方法,也可作为本小节内容组织的一个缩影。

是什么?

是什么?

为什么?

怎么做?

8253的功能和作用

8253的工作原理

如何编程控制8253

图1.1

1.28253的功能与作用

8253是可编程的定时器与计数器。为外设与CPU之间或外设与外设之间配合工作时,提供有效的时间配合条件。

8253有三个独立的16位计数器。

每个计数器均可按二进制或者BCD码计数。

各个计数器有6种不同的工作方式。

1.38253工作原理

8253内部结构

图1.28253内部结构框图

8253内部有六个模块,结构框图如图1.2所示。

数据总线缓冲器:

数据总线缓冲器:

数据总线缓冲器通过引脚D0~D7与系统数据总线的D0~D7相连,来实现CPU和8253的数据传输的。数据包括8253的计数值,和工作方式命令字。传输的方式为读和写。

读写控制逻辑:

读写控制逻辑:

读写控制逻辑由CPU发出的读写控制信号和地址信号,选择读出或写入的存放器,并确定数据传输的方向:读/写。

控制字存放器:

控制字存放器:

控制字存放器接收CPU发来的控制字。控制字用于设定8253的硬件状态,如计数器的选择与工作方式等。

计数器n:

计数器n:

计数器是8253中真正的“劳动者”,8253的计数和定时功能是由计数器实际执行完成的。

8253内部有3个独立的计数器。对于每一个独立的计数器,其都有三个引脚:CLKn、GATEn、OUTn。也可以简单的将这三个引脚的关系理解为输入〔CLKn〕、输出〔OUTn〕和控制〔GATEn〕。

8253计数原理

计数器的输入为CLK时钟信号,为计数器工作提供计数的基准参考。在8253工作时,每输入一个时钟信号CLK,便使定时或计数值减1。

当计数器工作时,定时或计数值减为0时,就在OUT线上输出OUT信号,以指示定时或计数已到。

GATE门选通信号用于控制计数器工作,主要用来禁止、允许或开始计数。

1.48253编程方法

端口与存放器

图1.38253读写操作及端口地址

8253的读写操作主要是由控制逻辑模块来实现的,A0、A1地址信号用来选择计数器,而由图。1.3可以看出,更确切的说A0、A1地址信号的作用是在选择端口。端口其实就是存放器,端口地址就是存放器的地址。当我们写数据到某个端口时,总要有个存储单元来接收存储我们的数据吧,否那么数据还没被送给CPU就不见了。当我们读取某个端口,那么一定也有一个存储单元存储着我们想要的数据吧,否那么我们的数据从哪里来呢?这样应该好理解吧,所以端口其实就是存放器。

读写信号控制着数据的流向,数据是输入还是输出。

这里大家可能会有疑问了。那我在编程控制8253的时候,读写信号、地址信号是不是都要我在编程的时候直接进行设定呢?答案是否认的。其实我们在编程的时候要方便的多。硬件接口中每个端口都有特定的功能,编程时通过读写相应端口来对硬件接口进行控制和数据传输。

8253端口:

8253端口:

40H——计数器0数据口。 写该端口,可设置计数器1的初值。读同之。

41H——计数器1数据口。

42H——计数器2数据口

43H——8253控制口 写该端口,选定计数器及其工作方式等。

当我们要设置8253的工作状态时,我们要将工作方式命令字写入43H端口即可,当我们要对计数器2设置计数初值时,将计数初值写入42H端口即可。

读写操作由汇编指令IN、OUT来完成,C语言中由inportb〔〕和outportb()函数完成。因此,在我们编程时,我们只需要使用端口IO命令

文档评论(0)

199****4744 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7002121022000045

1亿VIP精品文档

相关文档