admin管理员组

文章数量:1532656

2024年6月25日发(作者:)

百度文库 - 让每个人平等地提升自我

光驱改装CD播放机(上篇)

作者:温正伟 原载:无线电杂志

本文的相关程序下载:

源码文件说明

C源码文件

keil项目文件

编译好的单片机HEX文件

CD播放机经过了多年的发展已是很普及的音响器材了,光盘也成为电脑媒体的重要载体之一,在多数的电脑爱好

者手中很多都会有二台或更多的光驱,也许你 和我一样新买了支持DVD光盘的光驱,旧的CDROM读盘能力下降,很少

再使用了,丢弃了也可惜。在这一期里借着介绍IDE接口的机会我们来尝试把 CDROM改装成CD播放机,旧光驱也可

以有新用途,当然这里介绍的改装不是指利用CDROM本身所带的播放键(大部分CDROM没有播放键)去改装,而 是通

过单片机对光驱的ATAPI接口进行对光驱的控制,从而学习一些IDE/ATAPI接口的相关知识和单片机的应用认识。

一、电路原理及编程思路

IDE 是 Integrated Drive Electronics 的缩写,是由 Compaq 和 Western Digital 公司开发,AT架构的计算

机出现后,新版的 IDE 命名为 ATA 即 AT bus Attachment,但在更多的时候人们会习惯叫回旧名"IDE",这种接口一

直被应用在硬盘的连接上。而ATAPI则是在ATA上扩展出来的, ATAPI是AT Attachment Packet Interface的缩写,

意思是AT计算机上附加设备的信息包接口。支持ATAPI的IDE接口可以像连接硬盘一样连接ATAPI设备。目前几乎所

有的 IDE接口都支持ATAPI,它被广泛应用于光驱,ZIP驱动器等设备上。所说的这三种设备界面都是使用如图1和

图2所示的40PIN连接件。像图1的连 接件是用于主机板和IDE设备上,是40PIN的针式接头,主板上有两个这样的

接口,可以用于连接4个IDE设备。图2则是用于连接主机和IDE设备的 40芯IDE线缆,现在也有80芯线缆用于连

接更新版的高速ATA。图3则是IDE接口连接件的引脚号定义图。

图1:光驱后面板的接口

1

百度文库 - 让每个人平等地提升自我

表一 制作元件表

2

图2:连接电缆

图3:引脚号定义图

元件名 数 量 说 明

AT89C51 1 可以用AT89C52,AT89S51等代换

电阻 1

3K电阻 1

10K排阻 1 8位

LED发光管 1

30pF瓷片电容 2

10uF电解电容 1

晶振 1 可以用6-12M

40Pin插针式插座 1

40芯IDE连接线 1 电脑的硬盘或光驱连线

小型按钮 5

+12V +5V开关电源 1 要求+5V+12V都要有以上电流

百度文库 - 让每个人平等地提升自我

Pin Name Dir Description Pin Name

复位

Dir Description

1 /RESET 输入

2 GND

3 DD7

4 DD8

5 DD6

6 DD9

7 DD5

8 DD10

9 DD4

10 DD11

11 DD3

12 DD12

13 DD2

14 DD13

15 DD1

16 DD14

17 DD0

18 DD15

19 GND

20 KEY

/

21 DMARQ 输出 DMQ请求

22 GND

24 GND

26 GND

28 CSEL

30 GND

31 IRQR

32 NC

33 DA1

35 DA0

36 DA2

37 /CS0

38 /CS1

40 GND

/

/

/

/

/

/

装置编号

输入

保留

自诊断标识

23 /DIOW 输入 写控制

25 /DIOR 输入 读控制

27 IORDY 输出 IO就绪指示

29 /DMACK /

输入/输出 Data 7

输入/输出 Data 8

输入/输出 Data 6

输入/输出 Data 9

输入/输出 Data 5

输入/输出 Data 10

输入/输出 Data 4

输入/输出 Data 11

输入/输出 Data 3

输入/输出 Data 12

输入/输出 Data 2

输入/输出 Data 13

输入/输出 Data 1

输入/输出 Data 14

输入/输出 Data 0

输入/输出 Data 15

/

/

Key

输出 中断请求

输入 寄存器地址A1

输入 寄存器地址A0

输入 寄存器地址A2

输入 寄存器选择

输入 寄存器选择

/ 地

34 /PDIAG /

39 /DASP 输入 装置活动指示

*注:在引脚名前有"/"的引脚为低电平有效

表2 ATAPI接口的引脚定义说明

图4是电路原理图,表1是元件列表,本实例中使用51单片机做为控制芯片,用它的P1,P2口组成16位的数据

输入输出口,连接IDE的D0-D15 数据线。P0口用于连接IDE的读写控制、复位和寄存器控制,由于P0口的驱动力

比较低,所以用10K的排阻对其上拉。晶振没有什么特别的要求,这里可以 选用或12M,加上上电复位电路组成典型

的单片机最小系统。P3口则用于播放,前进,后退,停止和开关托盘控制按键的输入,接一 个发光二极管是用于显

示光驱是否装载了CD光盘或是否出错了,出错或没有光盘时该LED会点亮。电路连接无误后烧录编译好的HEX文件到

51芯片上,就可 以正常工作了。本文提供的源码只实现这几种功能,在这个基础上可以加上LED数码管或LCD显示

曲目时间等信息,也可以加入遥控接收等功能。

3

百度文库 - 让每个人平等地提升自我

图4:原理图(点击看大图)

图5是笔者用于实验和调试的电路实物照片。调试时使用自制兼容F-MON51的仿真器和KEIL集成开发环境连接

可以方便的进行单步和断点调试,同时 也可以查看名RAM和变量的值,这样的查看对于类似这样的制作是很关键的,

因为在发送或读取设备的寄存器后,通常设备会有一些状态值返回,程序则要求根据 这些值做相应的处理,如果是直

接烧片调试则会使得程序的调试过程变得非常的困难。光驱需要的电流比较大,一般要一点几安培的电流,且要用到

+5V和+ 12V两个电压,在制作时可以使用开关电源模块或使用旧电脑上的AT电源(也是开关电源),如果用普通的

电压器加7805、7812则不能满足要求。还有 一点值得注意的是IDE连接电缆的红色线为一号线,其它则顺序排列到

40号,同时要把光驱后面板上的跳线设置为主盘(MASTER)。

像其它电脑接口或单片机应用制作一样,本实例的难点在于单片机控制程序的编写。ATAPI协议是在ATA协议发

展出来的,它的控制命令和返回的数据格 式十分繁复,用于光驱时对于不同形式的光盘,控制命令的使用方式也不太

一样,本文是把光驱改为CD播放器,所以编程的着重点在于CD音频光盘的控制命令如 何发送到光驱上的ATAPI接口。

ATAPI有许多寄存器,操作这些不同的寄存器便可以实现相应的功能,如读状态寄存器应先设置好CS和DA选定要操

作的 是状态寄存器,把DIOW拉低,这时就可以读ATAPI的数据线DD了,得到当前的设备状态,再把DIOW拉高完成

读取,在本文的源码中可以参看void ReadStatus(void)函数。在发送控制命令时,可以分为二类,分别为ATA Command

(ATA命令)和ATAPI Packet Command(ATAPI信息包命令),前者只要先选择要操作的是命令寄存器,再向数据口

发一命令字节就可以实现所要的功能,如先选择命令寄存器再发送 A1H到数据口,就可以执行识别光驱的自检命令,

命令完成后读数据口可以得到光驱的相关信息,如型号、序列号等,源码中可以参看void InitCDROM(void)中的相关

语句。后者的使用则相对复杂一些,发送信息包时,先要向传输字节计数寄存器写要发送的字节数,再送A0H信息命

令 字到命令寄存器通知设备要发送信息包,最后则是向数据寄存器发送信息包。一般信息包为12个字节,第一个字

节为命令字,代表不此信息包的功能,其后的是参 数,程序实现可以参看void SendPacket(unsigned char SkipDRQ)

函数。对于常用的寄存器和信息包命令的具体介绍可以看下篇。

大家也许知道,CDROM播放CD时有一系列的动作,先是上电复位、光盘托盘打开、放入光盘托盘关闭、读取曲目

播放。同样使用单片机对光驱进行CD播 放控制时也应要有这样的顺序,在本文源码中的主程序中先是调用初始化函

数,对光驱进行复位和识别,初始化成功后就会调用读取TOC函数读取曲目和相关值。 然后就是对按钮进行判断,做

出相应的控制。图6是播放CD时的基本顺序图。

4

百度文库 - 让每个人平等地提升自我

图5:实验电路

光驱改装CD播放机(下篇)

作者:温正伟 原载:无线电杂志

二、IDE(ATAPI)引脚定义

从表一可以看到ATAPI各引脚的定义,下面是几个在实例中要使用的引脚具体说明:

1. DD(15:0)Device Data

DD占用3-18引脚,是一个8位或16位的双向数据线,在用于读写CDROM的寄存器时只使用低8位,而在

传送信息包或数据时使用全部16位。

2. CS(1:0)Chip Select

CS0,CS1是用于选择指令寄存器芯片的,为低电平有效,它和DA组合就可以选择所要操作的寄存器。

3. DA(2:0)Device Address

DA为三位的地址线,和CS组合选取要操作的寄存器。

5

百度文库 - 让每个人平等地提升自我

4. DIOR(Device I/O read)

DIOR为控制寄存器或数据口读的引脚,低电平有效。

5. DIOW(Device I/O write)

DIOW为控制寄存器或数据口写的引脚,低电平有效。

6. RESET

当此引脚为低电平时CDROM会被复位。

7. INTRQ (Device interrupt)

INTRQ为中断请求,当CDROM在读写数据等状态下会在此引脚输出信号以使控制器中断程序得以执行,本实例

中没有使用到这个方法。

8. IORDY (I/O channel ready)

这个引脚可判断CDROM的数据口是否就绪,等待数据的输入或输出。同样实例中没有使用到些引脚。

前6种引脚都在实例电路中一一连接在51单片机的IO引脚上,我们可以根据CDROM引脚所要求的电平去实现该

引脚的功能,如RESET引脚为低电平有效,连接于单片机的引脚上,用如下的51C语言就可以实现对CDROM实行复位

操作:

P0_7 = 0;

设备诊断(90H)

执行这个命令时,驱动器会运行自身诊断程序,诊断结束后会返回一个值到错误寄存器,读取错误寄存器值并和标准

值比较,当返回值不等于01H或81H时则说明CDROM自身诊断未通过(Device0)。

3.识别信息包功能IDENTIFY PACKET DEVICE(A1H)

这个命令执行后可以返回当前所选择的驱动器的信息包参数和其它相关的参数,如信息包的长度、驱动器的型号、驱

动器序列号等等。先向命令寄存器发A1H,然 后就可以在DATA寄存器中读取驱动器相关信息,每次可以读取两个字

节,应信息串的格式较长这里不再一一说明,可以参考文章结尾的网页地址中资料。

5. 信息包功能 PACKET(AOH)

执行这个命令后驱动器将准备发送信息包命令,在执行这个命令之前应先向 Cylinder Low/High寄存器写入将发送一

个值为命令信息包的长度除于2的数值,以让驱动器知道要接收多少次数据。

限于篇幅有限更加详细的说明可以参看"Information Technology AT Attachment with Packet Interface

Extension(ATA/ATAPI-4)"的第8章节或"ATA Packet Interface for CD-ROMs SFF-8020i"的第7章节。

五.信息包命令

6

百度文库 - 让每个人平等地提升自我

上面提到发送PACKET命令后就可以发送信息包命令,信息包的格式会是什么样的?信息包又有什么功能?带着这

样的问题我们来看看实例中的要用到的信息包命令。

ATAPI是在ATA发展过来的,最大的不同点就是有了针对CDROM等设备的信息包命令,实现两者的兼容。从上文

可以得知发送PACKET命令后就 可以发送信息包命令了,简单说来就是ATAPI设备在收到PACKET命令后就会进入信息

包的接收状态,如信息包正常发送完成后,设备就会执行这个信息包 命令。

信息包的格式一般由12字节组成,有些设备是16字节,对于这个值的确定可以用"识别信息包功能"读取信息值。

首字节是指令字,以后的字节就是参数。 这些字节的发送是这样实现的,选定DATA寄存器,把两个字节加在DD的十

六位数据线上,控制DIOW为低,完成写入,再拉高DIOW,后两个字节加上数 据线上……如此循环直到所有字节发送

完。

文中的实例是针对CDROM中的CD播放功能的,那下面举几个CD播放要用到的信息包命令。

1. READ SUBCHANNEL读次信道命令

这个命令执行后驱动器会返回CD中的次信道信息和播放状态等。这些信息如:当前的MSF地址,当前的音频播

放状态和当前的轨道数等。表5是它的格 式,表6则是它的返回数据格式。具体的实现可以参考实例程序中的void

ReadSub(void)函数。

ByteBit

0

1

2

3

4

5

6

7

8

9

10

11

7

保 留

保 留

保 留

轨道数

MSB 分配长度

LSB

保 留

保 留

保 留

SubQ 保 留

次信道数据格式

6 5 4 3 2 1

MSF

0

保 留

指令字(42H)

表5 READ SUBCHANNEL读次信道命令

次信道数据格式字节可以设定返回数据的数式,一般使用01H,这样将返回CDROM当前位置上的次信道数据。返

回的数据格式如表六。

ByteBit 7 6 5 4 3 2 1 0

次信道数据报头

0

1

2

3

4

5

6

7

保 留

音频状态

MSB 次信道数据长度

LSB

次信道数据格式字(01H)

ADR

当前曲目号

Control

CDROM当前位置次信道数据区块

百度文库 - 让每个人平等地提升自我

7

8

9

10

11

12

13

14

15

当前索引号

MSB 绝对地址

LSB

MSB 轨道相对地址

LSB

表6 次信道返回数据格式

2.READ TOC Command 读轨道TOC命令

TOC是指光盘中轨道的开始地址及其它相关信息,这些信息存在于Q sub-channel(Q子信道)中。当指定要播

放一条曲目,就要先知道曲目所在轨道的开始地址和结束地址。这就需要用这个命令去读取光盘中轨道信息, 它还将

返回CD光盘的曲目数等。

ByteBit

0

1

2

3

4

5

6

7

8

9

10

11

7 6 5 4 3 2 1 0

指令字(43H)

保 留

保 留

保 留

保 留

保 留

曲目号

MSB 分配长度

LSB

返回数据格式 保 留

保 留

保 留

MSF

返回数据格式

保 留

表7 读TOC命令

MSF位是要求返地址格式为MSF地址格式,这个位一般要置1。MSF地址格式是指光盘中的数据实际被写入的位置,

最小单位是F,75个F字段则为一 个S字段,而60个字段则为一个M字段。F字段的有效值范围为0-74,S字段的

有效值范围为0-59,M字段的有效值范围为0-99。MSF地址的数据 格式由4个字节组成,第一字节为保留字节,第

二字节为M字段,第三字节为S字段,第四字节为F字段。

返回数据格式在第二字节和第九字节中,设它为的数值返回的数据形式也不同,在CD光盘播放中一般置零就可以了。

曲目号是指定要返回TOC数据的曲目号,它的有效值为00H-63H,也就是0-99号,当曲目号为AAH时则返回整张

光盘的结束MSF地址。具体编程方法可以参看void ReadTOC(unsigned char Track)函数的写法。表八则是返回数据

的格式。

ByteBit

0

7 6 5 4 3 2 1 0

MSB TOC数据长度

8

百度文库 - 让每个人平等地提升自我

1

2

3

TOC轨道描述

4

5

6

7

8

9

10

11

LSB

开始曲目号

结束曲目号

保 留

ADR

当前曲目号

保 留

MSB 绝对地址

(MSF地址格式)

LSB

Control

表8 读TOC命令返回数据格式(format字段为00H)

AUDIO MSF Command播放命令

当用读TOC命令得知曲目的MSF开始和结束地址数据后,就可以用播放命令去插放该曲目的音乐了。要播放单

个曲子可以先读它的开始MSF地址做为开 始地址,再读下一曲子的MSF地址做为结束地址。而播放整个光盘则可以先

读首曲目的MSF地址做为开始地址,再用AAH去读最后的结束地址做为结束地址。 播放命令的信息包格式如表九。

ByteBit

0

1

2

3

4

5

6

7

8

9

10

11

7 6 5 4 3 2 1 0

指令字(47H)

保 留

保 留

开始M字段

开始S字段

开始F字段

结束M字段

结束S字段

结束F字段

保 留

保 留

保 留

表9 PLAY AUDIO MSF Command播放命令

在这里透过简单的制作实例只能简单介绍这几个命令,而ATAPI所拥有的命令是非常丰富的,它里面还包括了

CDRW,CDR,CDDA,CDROM等光盘的读写操作命令和设备的操作命令。

光驱改装CD播放机(下篇)

作者:温正伟 原载:无线电杂志

二、IDE(ATAPI)引脚定义

9

百度文库 - 让每个人平等地提升自我

从表一可以看到ATAPI各引脚的定义,下面是几个在实例中要使用的引脚具体说明:

1. DD(15:0)Device Data

DD占用3-18引脚,是一个8位或16位的双向数据线,在用于读写CDROM的寄存器时

只使用低8位,而在传送信息包或数据时使用全部16位。

2. CS(1:0)Chip Select

CS0,CS1是用于选择指令寄存器芯片的,为低电平有效,它和DA组合就可以选择所要

操作的寄存器。

3. DA(2:0)Device Address

DA为三位的地址线,和CS组合选取要操作的寄存器。

4. DIOR(Device I/O read)

DIOR为控制寄存器或数据口读的引脚,低电平有效。

5. DIOW(Device I/O write)

DIOW为控制寄存器或数据口写的引脚,低电平有效。

6. RESET

当此引脚为低电平时CDROM会被复位。

7. INTRQ (Device interrupt)

INTRQ为中断请求,当CDROM在读写数据等状态下会在此引脚输出信号以使控制器中

断程序得以执行,本实例中没有使用到这个方法。

8. IORDY (I/O channel ready)

这个引脚可判断CDROM的数据口是否就绪,等待数据的输入或输出。同样实例中没有

使用到些引脚。

前6种引脚都在实例电路中一一连接在51单片机的IO引脚上,我们可以根据CDROM引脚

所要求的电平去实现该引脚的功能,如RESET引脚为低电平有效,连接于单片机的引脚上,

用如下的51C语言就可以实现对CDROM实行复位操作:

P0_7 = 0;

10

百度文库 - 让每个人平等地提升自我

设备诊断(90H)

执行这个命令时,驱动器会运行自身诊断程序,诊断结束后会返回一个值到错误寄存器,读

取错误寄存器值并和标准值比较,当返回值不等于01H或81H时则说明CDROM自身诊断未通过

(Device0)。

3.识别信息包功能IDENTIFY PACKET DEVICE(A1H)

这个命令执行后可以返回当前所选择的驱动器的信息包参数和其它相关的参数,如信息包的

长度、驱动器的型号、驱动器序列号等等。先向命令寄存器发A1H,然后就可以在DATA寄存

器中读取驱动器相关信息,每次可以读取两个字节,应信息串的格式较长这里不再一一说明,

可以参考文章结尾的网页地址中资料。

5. 信息包功能 PACKET(AOH)

执行这个命令后驱动器将准备发送信息包命令,在执行这个命令之前应先向 Cylinder

Low/High寄存器写入将发送一个值为命令信息包的长度除于2的数值,以让驱动器知道要接

收多少次数据。

限于篇幅有限更加详细的说明可以参看"Information Technology AT Attachment with

Packet Interface Extension(ATA/ATAPI-4)"的第8章节或"ATA Packet Interface for

CD-ROMs SFF-8020i"的第7章节。

五.信息包命令

上面提到发送PACKET命令后就可以发送信息包命令,信息包的格式会是什么样的?信息

包又有什么功能?带着这样的问题我们来看看实例中的要用到的信息包命令。

ATAPI是在ATA发展过来的,最大的不同点就是有了针对CDROM等设备的信息包命令,

实现两者的兼容。从上文可以得知发送PACKET命令后就可以发送信息包命令了,简单说来就

是ATAPI设备在收到PACKET命令后就会进入信息包的接收状态,如信息包正常发送完成后,

设备就会执行这个信息包命令。

信息包的格式一般由12字节组成,有些设备是16字节,对于这个值的确定可以用"识别信

息包功能"读取信息值。首字节是指令字,以后的字节就是参数。这些字节的发送是这样实现

的,选定DATA寄存器,把两个字节加在DD的十六位数据线上,控制DIOW为低,完成写入,

11

百度文库 - 让每个人平等地提升自我

再拉高DIOW,后两个字节加上数据线上……如此循环直到所有字节发送完。

文中的实例是针对CDROM中的CD播放功能的,那下面举几个CD播放要用到的信息包命

令。

1. READ SUBCHANNEL读次信道命令

这个命令执行后驱动器会返回CD中的次信道信息和播放状态等。这些信息如:当前的

MSF地址,当前的音频播放状态和当前的轨道数等。表5是它的格式,表6则是它的返回数据

格式。具体的实现可以参考实例程序中的void ReadSub(void)函数。

7

0

1

2

3

4

5

6

7

8

9

10

11

保 留

保 留

保 留

SubQ 保 留

次信道数据格式

保 留

保 留

轨道数

MSB 分配长度

LSB

保 留

指令字(42H)

MSF 保 留

6 5 4 3 2 1 0

表5 READ SUBCHANNEL读次信道命令

次信道数

据格式字节可

以设定返回数

据的数式,一

般使用01H,这

样将返回

CDROM当前位

置上的次信道

数据。返回的

数据格式如表

六。

12

7 6 5 4 3 2 1 0

百度文库 - 让每个人平等地提升自我

次信道数据报头

0

1

2

3

CDROM当前位置次信道数据区块

4

5

6

7

8

9

10

11

12

13

14

15

MSB 轨道相对地址

LSB

MSB 绝对地址

LSB

ADR

当前曲目号

当前索引号

次信道数据格式字(01H)

Control

保 留

音频状态

MSB 次信道数据长度

LSB

表6 次信道返回数据格式

2.READ

TOC Command

读轨道TOC命

令 TOC

是指光盘中轨

道的开始地址

及其它相关信

息,这些信息

存在于Q

sub-channel

(Q子信道)

中。当指定要

播放一条曲

目,就要先知

13

7 6 5 4 3 2 1 0

百度文库 - 让每个人平等地提升自我

道曲目所在轨

道的开始地址

和结束地址。

这就需要用这

个命令去读取

光盘中轨道信

息,它还将返

回CD光盘的曲

目数等。

0

1

2

3

4

5

6

7

8

9

10

11

指令字(43H)

保 留

保 留

保 留

保 留

保 留

曲目号

MSB 分配长度

LSB

返回数据格式

保 留

保 留

保 留

MSF 保 留

返回数据格式

表7 读TOC命令

MSF位

是要求

返地址

格式为

MSF地

址格

式,这

个位一

般要置

14

7 6 5 4 3 2 1 0

百度文库 - 让每个人平等地提升自我

1。MSF

地址格

式是指

光盘中

的数据

实际被

写入的

位置,

最小单

位是F,

75个F

字段则

为一个

S字段,

而60个

字段则

为一个

M字段。

F字段

的有效

值范围

为0-

74,S字

段的有

效值范

围为0

-59,M

字段的

有效值

范围为

0-99。

MSF地

址的数

15

百度文库 - 让每个人平等地提升自我

据格式

由4个

字节组

成,第

一字节

为保留

字节,

第二字

节为M

字段,

第三字

节为S

字段,

第四字

节为F

字段。

返回数

据格式

在第二

字节和

第九字

节中,

设它为

的数值

返回的

数据形

式也不

同,在

CD光盘

播放中

一般置

零就可

以了。

16

百度文库 - 让每个人平等地提升自我

曲目号

是指定

要返回

TOC数

据的曲

目号,

它的有

效值为

00H-63

H,也就

是0-99

号,当

曲目号

为AAH

时则返

回整张

光盘的

结束

MSF地

址。具

体编程

方法可

以参看

void

ReadTO

C(unsi

gned

char

Track)

函数的

写法。

表八则

是返回

17

百度文库 - 让每个人平等地提升自我

数据的

格式。

0

1

2

3

开始曲目号

结束曲目号

TOC轨道描述

4

5

6

7

8

MSB 绝对地址

9

(MSF地址格式)

10

LSB

11

ADR

当前曲目号

保 留

保 留

Control

MSB TOC数据长度

LSB

表8 读TOC命令返回数据格式(format字段为00H)

AUDIO

MSF Command播

放命令

当用读TOC命

令得知曲目的

MSF开始和结

束地址数据

后,就可以用

播放命令去插

放该曲目的音

乐了。要播放

单个曲子可以

先读它的开始

MSF地址做为

18

7 6 5 4 3 2 1 0

百度文库 - 让每个人平等地提升自我

开始地址,再

读下一曲子的

MSF地址做为

结束地址。而

播放整个光盘

则可以先读首

曲目的MSF地

址做为开始地

址,再用AAH

去读最后的结

束地址做为结

束地址。播放

命令的信息包

格式如表九。

0

1

2

3

4

5

6

7

8

9

10

11

指令字(47H)

保 留

保 留

开始M字段

开始S字段

开始F字段

结束M字段

结束S字段

结束F字段

保 留

保 留

保 留

表9 PLAY AUDIO MSF Command播放命令

在这里透过简单的制作实例只能简单介绍这几个命令,而ATAPI所拥有的命令是非常丰

富的,它里面还包括了CDRW,CDR,CDDA,CDROM等光盘的读写操作命令和设备的操作命令。

19

本文标签: 命令信息寄存器数据地址