📄 cdrom_drv.lst
字号:
C51 COMPILER V7.50 CDROM_DRV 02/16/2009 09:59:53 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE CDROM_DRV
OBJECT MODULE PLACED IN cdrom_drv.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE lib_mcu\cdrom\cdrom_drv.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\cdrom_drv
-.lst) OBJECT(cdrom_drv.obj)
line level source
1 #include "config.h" /* system definition */
2 #include "cdrom_drv.h"
3 #include "lib_mcu\clock\clock.h"
4 #include "lib_mcu\lcd\lcd_drv.h"
5 #include "lib_mcu\ide\ide_drv.h"
6 #include "modules\display\disp_task.h"
7 #include "lib_mcu\kbd\key_drv.h" /* Keyboard driver definition */
8 #include <stdio.h>
9
10
11 INT8U CmdPack[12];
12
13
14 ////////////////////////////////////////////////////////////////////////
15 bit cd_getdata(INT8U *pData, INT8U u8Num)
16 {
17 1 INT8U i;
18 1 INT8U u8Status;
19 1
20 1 while(!CD_INTRQ);
21 1 u8Status = CDROM_FILE7;
22 1
23 1 if(u8Status & DRQMASK)
24 1 {
25 2 for(i=0; i<u8Num; i+=2)
26 2 {
27 3 *pData ++ = CDROM_FILE0;
28 3 *pData ++ = DAT16H;
29 3 }
30 2 }
31 1 //---------------------------------<<<<<still have data to sent
32 1 u8Status = CDROM_FILE7;
33 1 while(u8Status & DRQMASK)
34 1 {
35 2 i = CDROM_FILE0;
36 2 u8Status = CDROM_FILE7;
37 2 }
38 1
39 1 return 1;
40 1 }
41
42 ////////////////////////////////////////////////////////////////////////
43 void cd_setcommand(INT8U u8Command)
44 {
45 1 switch(u8Command)
46 1 {
47 2 case CMD_TESTUNITREADY://all set 0
48 2 break;
49 2
50 2 case CMD_READTOC:
51 2 CmdPack[0]=0x43;
52 2 CmdPack[1]=0x02;
53 2 CmdPack[6]=0xaa;
54 2 CmdPack[8]=0x0c;
C51 COMPILER V7.50 CDROM_DRV 02/16/2009 09:59:53 PAGE 2
55 2 break;
56 2
57 2 case CMD_MODESENSE:
58 2 CmdPack[0] = 0x5A; //Mode Sense Command
59 2 CmdPack[2] = 0x0E; //Audio Control Mode Page Format Current values 音频页当前值
60 2 CmdPack[7] = 0x00;
61 2 CmdPack[8] = 0x18; //参数长度
62 2 break;
63 2
64 2 case CMD_MODESELECT:
65 2 CmdPack[0] = 0x55; //Mode Select
66 2 CmdPack[1] = 0x10; //
67 2 CmdPack[7] = 0x00;
68 2 CmdPack[8] = 0x18; //参数长度
69 2 break;
70 2
71 2 case CMD_PAUSE:
72 2 CmdPack[0]=0x4b;
73 2 CmdPack[8]=0x00;
74 2 break;
75 2
76 2 case CMD_RESUME:
77 2 CmdPack[0]=0x4b;
78 2 CmdPack[8]=0x01;
79 2 break;
80 2
81 2 case CMD_OPEN:
82 2 CmdPack[0]=0x1b;
83 2 CmdPack[4]=0x02;
84 2 break;
85 2
86 2 case CMD_CLOSE:
87 2 CmdPack[0]=0x1b;
88 2 CmdPack[4]=0x03;
89 2 break;
90 2
91 2 case CMD_STOP:
92 2 CmdPack[0]=0x1b;
93 2 CmdPack[4]=0x00;
94 2 break;
95 2
96 2 case CMD_START:
97 2 CmdPack[0]=0x1b;
98 2 CmdPack[4]=0x01;
99 2 break;
100 2
101 2 case CMD_READSUBCH:
102 2 CmdPack[0]=0x42;
103 2 CmdPack[1]=0x02;
104 2 CmdPack[2]=0x40;
105 2 CmdPack[3]=0x01;
106 2 CmdPack[7]=0x01;
107 2 break;
108 2 }
109 1 }
110
111
112 ////////////////////////////////////////////////////////////////////////
113 void cd_command(INT8U u8Command)
114 {
115 1 INT8U i;
116 1
C51 COMPILER V7.50 CDROM_DRV 02/16/2009 09:59:53 PAGE 3
117 1 for(i=0; i<12; i++)
118 1 {
119 2 CmdPack[i] = 0;
120 2 }
121 1 cd_setcommand(u8Command);
122 1 do{ACC = CDROM_FILE7;}while(BSY | DRQ);
123 1 CDROM_FILE7 = 0xa0;
124 1 do{ACC = CDROM_FILE7;}while(BSY | (!DRQ));
125 1
126 1 for(i=0; i<12;)
127 1 {
128 2 DAT16H = CmdPack[i + 1];
129 2 CDROM_FILE0 = CmdPack[i];
130 2 i += 2;
131 2 }
132 1 }
133
134
135
136
137
138
139
140
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 383 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 12 3
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -