?? main.lst
字號:
C51 COMPILER V8.05a MAIN 05/22/2009 15:28:37 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c BROWSE INCDIR(.\INCLUDE;D:\ch9\include\) DEBUG OBJECTEXTEND
line level source
1 /**************************************************************************
2 * H E A D E R F I L E S
3 *************************************************************************/
4 #define GLOBAL_H
5 #include <reg51.h>
6 #include <intrins.h>
7 #include <stdio.h>
8 #include "AT89C51SND.h"
9 #include "typedef.h"
10 #include "config.h"
11 #include "constant.h"
12 #include "global.h"
13 #include "gpio.h"
14 #include "macro.h"
15 #include "external.h"
16 /**************************************************************************
17 * C O N S T A N T S
18 *************************************************************************/
19
20 /**************************************************************************
21 * M A C R O S
22 *************************************************************************/
23
24 /**************************************************************************
25 * D A T A T Y P E S
26 *************************************************************************/
27
28 /**************************************************************************
29 * G L O B A L D A T A
30 *************************************************************************/
31
32
33 UINT8 COUNT=0;
34 /**************************************************************************
35 * Function Name:
36 *
37 * Descriptions:
38 *
39 * Arguments:
40 *
41 * Returns: None
42 **************************************************************************/
43 void main(void){
44 1
45 1 UINT8 status;
46 1 P1_0=1;
47 1 MCU_Init();
48 1 usb_init();
49 1 EA=1;
50 1 printf(" program start\n");
51 1 stInit(1);
52 1 printf("hd_initial_ok\n");
53 1 while(1)
54 1 {
55 2
C51 COMPILER V8.05a MAIN 05/22/2009 15:28:37 PAGE 2
56 2 usb_task();
57 2 if(GetCBW()) continue;
58 2 status=ufiCommandDecoder();
59 2 SendCSW(status);
60 2 gState=0;
61 2
62 2 }//while
63 1
64 1 }
65
66 /**************************************************************************
67 * Function Name:
68 *
69 * Descriptions:
70 *
71 * Arguments:
72 *
73 * Returns: None
74 **************************************************************************/
75 UINT8 GetCBW(void)
76 {
77 1 UINT8 i;
78 1 union {
79 1 UINT32 u32value;
80 1 UINT8 u8byte[4];
81 1 } s;
82 1
83 1 Usb_sel_ep(2);
84 1 if(Usb_receive_out_data())
85 1 {
86 2
87 2 //dCBWSignature 43425355
88 2 s.u8byte[3]=Usb_read_byte();
89 2 s.u8byte[2]=Usb_read_byte();
90 2 s.u8byte[1]=Usb_read_byte();
91 2 s.u8byte[0]=Usb_read_byte();
92 2 if ( (s.u8byte[3]!=0x55)||(s.u8byte[2]!=0x53)||(s.u8byte[1]!=0x42)||(s.u8byte[0]!=0x43) )
93 2 {
94 3
95 3 return 1;
96 3 }
97 2
98 2 //dCBWTag
99 2 s.u8byte[3]=Usb_read_byte();
100 2 s.u8byte[2]=Usb_read_byte();
101 2 s.u8byte[1]=Usb_read_byte();
102 2 s.u8byte[0]=Usb_read_byte();
103 2 gCBWTag=s.u32value;
104 2
105 2 //dCBWDataTransferLength
106 2 s.u8byte[3]=Usb_read_byte();
107 2 s.u8byte[2]=Usb_read_byte();
108 2 s.u8byte[1]=Usb_read_byte();
109 2 s.u8byte[0]=Usb_read_byte();
110 2
111 2 gCBWDataLen=s.u32value;
112 2 gOrgCBWDataLen=gCBWDataLen;
113 2
114 2 //bCBWFlag(ignore)
115 2 gCBWFlags=(Usb_read_byte())&0x80;
116 2
117 2 //bCBWLUN
C51 COMPILER V8.05a MAIN 05/22/2009 15:28:37 PAGE 3
118 2 gCmdBlock.CB[1]=Usb_read_byte()& 0x0F; //(J)get LUN from CBW
119 2
120 2 //bCBWCBLength(ignore)
121 2 i=Usb_read_byte();
122 2 //CBWCB
123 2 for (i=0;i<12;i++)
124 2 gCmdBlock.CB[i]=Usb_read_byte();
125 2 //printf("cbw:%#2x:%#2x:%#2x:%#2x:%#2x:%#2x:%#2x\n",gCmdBlock.CB[0],gCmdBlock.CB[1],gCmdBlock.CB[2],gCmd
-Block.CB[3],gCmdBlock.CB[4],gCmdBlock.CB[5],gCmdBlock.CB[6]);
126 2 Usb_clear_RXOUT_PP(); // usb read acknowledgement
127 2 gActiveCard=gCmdBlock.CB1.LUN; //(J)give active LUN
128 2 return 0;
129 2 }
130 1 else return 1;
131 1
132 1 }
133
134 /**************************************************************************
135 * Function Name:
136 *
137 * Descriptions:
138 *
139 * Arguments:
140 *
141 * Returns: None
142 **************************************************************************/
143
144 void SendCSW(UINT8 u8Status)
145 {
146 1 union {
147 1 UINT32 u32value;
148 1 UINT8 u8byte[4];
149 1 } s;
150 1
151 1 Usb_sel_ep(1);
152 1 //dCSWSignature
153 1 Usb_write_byte(0x55);
154 1 Usb_write_byte(0x53);
155 1 Usb_write_byte(0x42);
156 1 Usb_write_byte(0x53);
157 1
158 1 //dCSWTag
159 1 s.u32value=gCBWTag;
160 1 UEPDATX=s.u8byte[3];
161 1 UEPDATX=s.u8byte[2];
162 1 UEPDATX=s.u8byte[1];
163 1 UEPDATX=s.u8byte[0];
164 1 //dCSWDataResidue
165 1 s.u32value=gCBWDataLen;
166 1 UEPDATX=s.u8byte[3];
167 1 UEPDATX=s.u8byte[2];
168 1 UEPDATX=s.u8byte[1];
169 1 UEPDATX=s.u8byte[0];
170 1 //bCSWStatus
171 1 UEPDATX=u8Status;
172 1 Usb_set_TXRDY_bit();
173 1 while (!(Usb_tx_complete_bit()));
174 1 Usb_clear_TXCMPL_bit();
175 1 //printf("u8Status:%#x\n",u8Status);
176 1
177 1 }
178
C51 COMPILER V8.05a MAIN 05/22/2009 15:28:37 PAGE 4
179
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 308 ----
CONSTANT SIZE = 31 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 20 9
IDATA SIZE = 6 ----
BIT SIZE = 8 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -