📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 11/03/2008 13:08:49 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c OPTIMIZE(9,SPEED) BROWSE INCDIR(D:\IDE_demo_code\INCLUDE\) DEBUG OBJ
-ECTEXTEND PRINT(.\LST\Main.lst)
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 "include\AT89C51SND.h"
9 #include "include\typedef.h"
10 #include "include\config.h"
11 #include "include\constant.h"
12 #include "include\global.h"
13 #include "include\gpio.h"
14 #include "include\macro.h"
15 #include "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();
52 1 printf("hd_initial_ok\n");
53 1
54 1 while(1)
C51 COMPILER V7.50 MAIN 11/03/2008 13:08:49 PAGE 2
55 1 {
56 2
57 2 usb_task();
58 2 if(GetCBW()) continue;
59 2 status=ufiCommandDecoder();
60 2 SendCSW(status);
61 2 gState=0;
62 2
63 2 }
64 1
65 1 }
66
67 /**************************************************************************
68 * Function Name:
69 *
70 * Descriptions:
71 *
72 * Arguments:
73 *
74 * Returns: None
75 **************************************************************************/
76 UINT8 GetCBW(void)
77 {
78 1 UINT8 i;
79 1 union {
80 1 UINT32 u32value;
81 1 UINT8 u8byte[4];
82 1 } s;
83 1
84 1 Usb_sel_ep(2);
85 1 if(Usb_receive_out_data())
86 1 {
87 2
88 2 //dCBWSignature 43425355
89 2 s.u8byte[3]=Usb_read_byte();
90 2 s.u8byte[2]=Usb_read_byte();
91 2 s.u8byte[1]=Usb_read_byte();
92 2 s.u8byte[0]=Usb_read_byte();
93 2 if ( (s.u8byte[3]!=0x55)||(s.u8byte[2]!=0x53)||(s.u8byte[1]!=0x42)||(s.u8byte[0]!=0x43) )
94 2 {
95 3
96 3 return 1;
97 3 }
98 2
99 2 //dCBWTag
100 2 s.u8byte[3]=Usb_read_byte();
101 2 s.u8byte[2]=Usb_read_byte();
102 2 s.u8byte[1]=Usb_read_byte();
103 2 s.u8byte[0]=Usb_read_byte();
104 2 gCBWTag=s.u32value;
105 2
106 2 //dCBWDataTransferLength
107 2 s.u8byte[3]=Usb_read_byte();
108 2 s.u8byte[2]=Usb_read_byte();
109 2 s.u8byte[1]=Usb_read_byte();
110 2 s.u8byte[0]=Usb_read_byte();
111 2
112 2 gCBWDataLen=s.u32value;
113 2 gOrgCBWDataLen=gCBWDataLen;
114 2
115 2 //bCBWFlag(ignore)
116 2 gCBWFlags=(Usb_read_byte())&0x80;
C51 COMPILER V7.50 MAIN 11/03/2008 13:08:49 PAGE 3
117 2
118 2 //bCBWLUN
119 2 gCmdBlock.CB[1]=Usb_read_byte()& 0x0F; //(J)get LUN from CBW
120 2
121 2 //bCBWCBLength(ignore)
122 2 i=Usb_read_byte();
123 2 //CBWCB
124 2 for (i=0;i<12;i++)
125 2 gCmdBlock.CB[i]=Usb_read_byte();
126 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]);
127 2 Usb_clear_RXOUT_PP(); // usb read acknowledgement
128 2 gActiveCard=gCmdBlock.CB1.LUN; //(J)give active LUN
129 2 return 0;
130 2 }
131 1 else return 1;
132 1
133 1 }
134
135 /**************************************************************************
136 * Function Name:
137 *
138 * Descriptions:
139 *
140 * Arguments:
141 *
142 * Returns: None
143 **************************************************************************/
144
145 void SendCSW(UINT8 u8Status)
146 {
147 1 union {
148 1 UINT32 u32value;
149 1 UINT8 u8byte[4];
150 1 } s;
151 1
152 1 Usb_sel_ep(1);
153 1 //dCSWSignature
154 1 Usb_write_byte(0x55);
155 1 Usb_write_byte(0x53);
156 1 Usb_write_byte(0x42);
157 1 Usb_write_byte(0x53);
158 1
159 1 //dCSWTag
160 1 s.u32value=gCBWTag;
161 1 UEPDATX=s.u8byte[3];
162 1 UEPDATX=s.u8byte[2];
163 1 UEPDATX=s.u8byte[1];
164 1 UEPDATX=s.u8byte[0];
165 1 //dCSWDataResidue
166 1 s.u32value=gCBWDataLen;
167 1 UEPDATX=s.u8byte[3];
168 1 UEPDATX=s.u8byte[2];
169 1 UEPDATX=s.u8byte[1];
170 1 UEPDATX=s.u8byte[0];
171 1 //bCSWStatus
172 1 UEPDATX=u8Status;
173 1 Usb_set_TXRDY_bit();
174 1 while (!(Usb_tx_complete_bit()));
175 1 Usb_clear_TXCMPL_bit();
176 1 //printf("u8Status:%#x\n",u8Status);
177 1
C51 COMPILER V7.50 MAIN 11/03/2008 13:08:49 PAGE 4
178 1 }
179
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 278 ----
CONSTANT SIZE = 30 ----
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 + -