音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請問有誰做過CD-ROM控制

作者:lisongping 欄目:單片機
請問有誰做過CD-ROM控制
我現(xiàn)在要做一個CD-ROM空制器,是用s51通過APAPI協(xié)議來控制
不知道誰有APAPI的資料,我要的是那幾條命令(播放,開窗,上一曲,下一曲,停止,暫停)還有就是怎么知道我的CD里有多少歌曲。


2樓: >>參與討論
ymq8328
這個東西不是什么新技術(shù)了,資料多的是。
把你的問題好好描寫一下,我可以幫你。
S51好像不太可能。

3樓: >>參與討論
lisongping
CD-ROM.html">CD-ROM
你有CD-ROM的控制過程嗎
就是他的時序
做cd,用什么工作方式

4樓: >>參與討論
來與君
在什么地方見過
好象是
bbs.cdle.net
叫什么明浩的
樓主奔過去瞅瞅

5樓: >>參與討論
computer00
51控制CDROM。忘記在哪下載到的了,下載回來還沒看過呢。
#include <at89x51.h>

#define A0 P0_0
#define A1 P0_1
#define A2 P0_2
#define CS0 P0_3
#define CS1 P0_4
#define WR P0_5
#define RD P0_6
#define RST P0_7
#define CDCOM P0 //CDROM控制線
#define INTRQ P3_7 //INTRQ
#define DBM P2 //CDROM數(shù)據(jù)線高8位
#define DBL P1 //CDROM數(shù)據(jù)線低8位

//------------------------------------------//
//                                          //
// P0.0--------------------------------P0.7 //
// A0   A1   A2   CS0   CS1   WR   RD   RST //
//                                          //
//------------------------------------------//
//用變量設(shè)置P0的值,以方便對應(yīng)于各寄存器的地址值
#define REG_Data        0xE0
#define REG_Err         0xE1 //Features
#define REG_Features    0xE1
#define REG_Sector      0xE2
#define REG_CyLow       0xE4
#define REG_CyHig       0xE5
#define REG_DriveHead   0xE6
#define REG_Status      0xE7 //Command
#define REG_Command     0xE7
#define PLAYKey      P3_2
#define EJECTKey     P3_3
#define STOPKey      P3_5
#define NEXTKey      P3_4
#define PREVIOUSKey     P3_6
#define ERRLED      P3_7

unsigned CHAR code ReadSubP[]={0x42,0x02,0x40,0x01,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00}; //ReadSub命令信息包
unsigned CHAR code ReadTOCP[]={0x43,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00}; //ReadTOC命令信息包
unsigned CHAR code PlayMSFP[]={0x47,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //MSF播放命令信息包
unsigned CHAR data PacketTemp[24]; //信息包暫存RAM,用寫數(shù)據(jù)和讀數(shù)據(jù)的暫存

unsigned CHAR REGBL=0, REGBM=0; //用于暫存讀取寄存器的值
unsigned CHAR PacketSize; //用于保存CDROM定義的信息包長度,有12,16
unsigned CHAR bdata CDStatusREG; //可位尋址變量保存CDROM的狀態(tài)寄存器值
sbit ERR = CDStatusREG^0; //錯誤
sbit DRQ = CDStatusREG^3; //數(shù)據(jù)請求
sbit DRDY = CDStatusREG^6; //設(shè)備就緒
sbit BSY = CDStatusREG^7; //忙

unsigned CHAR bdata CDErr=0; //保存各種錯誤標識
sbit INITERR = CDErr^0; //初始化錯誤
sbit TESTERR = CDErr^1; //CDROM自身診斷錯誤
sbit UKERR = CDErr^2; //未知錯誤
sbit EJECTING = CDErr^3; //彈出
sbit CDOK = CDErr^4; //CD就緒
sbit PLAYING = CDErr^5;
sbit PAUSEING = CDErr^6;
sbit STOPING = CDErr^7;

unsigned CHAR DEV; //選擇驅(qū)動器時所用的參數(shù)
unsigned CHAR AudioStatus; //當前的播放狀態(tài)
unsigned CHAR StartTrackNum; //開始曲目
unsigned CHAR EndTrackNum; //結(jié)束曲目
unsigned CHAR CurrentTrackNum; //當前曲目
unsigned CHAR CurrentM, CurrentS, CurrentF; //當前MSF值
unsigned CHAR StartM, StartS, StartF; //開始的MSF值
unsigned CHAR EndM, EndS, EndF; //結(jié)束的MSF值

void dmsec(unsigned int msec);
void RedREG(unsigned CHAR REG);
void WriREG(unsigned CHAR LSB, unsigned CHAR MSB, unsigned CHAR REG);
void SendPacket(unsigned CHAR SkipDRQ);
void TestCD(void);
void ReadSub(void);
void ReadTOC(unsigned CHAR Track);
void ResData(unsigned CHAR Count);
void ReadStatus(void);
void InitCDROM(void);
void BSYWait(void);
//void INTRQWait(void);
void DRQWait(void);
void NDRQWait(void);
void LoadPacket(unsigned CHAR code *RT);
void TestUnitReady(void);
void PlayMSF(void);
void Eject(unsigned CHAR EJ);
void Pause(unsigned CHAR PR);
void Next(unsigned CHAR NP);
void Stop(void);

void main(void)
{
InitCDROM();

do
  {
   if (!PLAYKey) //play or pause 要求CD就緒才響應(yīng)
    {
     if (CDOK)
      {
       dmsec(20); //延時20ms防抖動
       if (!PLAYKey)
        {
         if (PLAYING) //CD正在播放中的處理
          {
           if (PAUSEING) //繼續(xù)播放
            {
             Pause(0);
             PAUSEING = 0;
            }
           else //暫停播放
            {
             Pause(1);
             PAUSEING = 1;
            }
          }
         else //CD就緒按play后播放
          {
           ReadTOC(CurrentTrackNum); //讀當前TOC
           ReadTOC(0xAA);
           PlayMSF(); //播放
           PLAYING = 1; //標識
          }
        }
      }
     dmsec(2000);
    }

   if (!STOPKey) //當CD在播放中
    {
     if (PLAYING)
      {
       dmsec(20);
       if (!STOPKey)
        {
         Pause(1); //暫停
         Stop();
         PLAYING = 0;
         PAUSEING = 0;
        }
      }
     dmsec(2000);
    }

   if (!NEXTKey)
    {
     if (PLAYING)
      {
       dmsec(20);
       if (!NEXTKey)
        {
         Next(1);
        }
      }
     dmsec(2000);
    }

 &nb
6樓: >>參與討論
computer00
想起來了,這里有一個:
http://www.cdle.net/alldata/mywz/04050701_1.htm

7樓: >>參與討論
lisongping
謝謝各位了!
 
參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
相傳,當年黃蓉破解“九宮陣”答案脫口而出,如今我的單片機
新手寫的C51程序,求教!
關(guān)于汽車熄火的檢測?
89C51_中斷問題
C51延時問題
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號