📄 usb_user.lst
字号:
C51 COMPILER V6.12 USB_USER 06/09/2004 15:44:25 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE USB_USER
OBJECT MODULE PLACED IN USB_USER.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE USB_USER.C DB OE
stmt level source
1 /*
2 File Name : USB_USER.C
3
4 Description : Read and Write DSP memory by USB communication.
5
6 Programmer : Jack Song
7
8 Make Data : 2005.6.7
9
10 Change : xxxx...(Name) yyyy,mm.dd(Date)
11
12 Version : 1.00
13 */
14 #include <c8051f320.h>
15 #include "USB_REGISTER.h"
16
17 #define c_cUSER
18 #include <USB_USER.h>
19
20
21
22 void Fun_Pro_Main()
23 {
24 1 g_ucFStatus = FS_CMD;
25 1 g_ucHostCmd = CMD_OTHERS;
26 1 while(1)
27 1 {
28 2 switch (g_ucFStatus)
29 2 {
30 3 case FS_CMD:
31 3 if(g_ucUsbFlag)
32 3 { g_ucUsbFlag = 0;
33 4 g_ucHostCmd = g_ucUsbGData[0];
34 4 switch (g_ucHostCmd)
35 4 {
36 5 case CMD_TEST:
37 5 Fun_Pro_Test();
38 5 POLL_WRITE_BYTE(INDEX, 1); // Set index to endpoint 1 registers
39 5 Fun_Fifo_Write(FIFO_EP1, 2, &g_ucUsbSData);
40 5 POLL_WRITE_BYTE(EINCSR1, rbInINPRDY);
41 5 break;
42 5 case CMD_READ_EINIT:
43 5 Fun_Pro_ReadEinit();
44 5 break;
45 5 case CMD_WRITE_EINIT:
46 5 Fun_Pro_WriteEInit();
47 5 POLL_WRITE_BYTE(INDEX, 1); // Set index to endpoint 1 registers
48 5 Fun_Fifo_Write(FIFO_EP1, 2, &g_ucUsbSData);
49 5 POLL_WRITE_BYTE(EINCSR1, rbInINPRDY);
50 5 break;
51 5 case CMD_READ_CODE:
52 5 Fun_Pro_ReadCode();
53 5 break;
54 5 case CMD_WRITE_CODE:
55 5 g_ulDestAdd = g_ucUsbGData[1] + g_ucUsbGData[2]*256 + g_ucUsbGData[3]*256*256 + g_ucUsbGData[4]*2
C51 COMPILER V6.12 USB_USER 06/09/2004 15:44:25 PAGE 2
-56*256*256;
56 5 g_uiCodeLength = g_ucUsbGData[5] + g_ucUsbGData[6]*256;
57 5 g_ucFStatus = FS_DATA;
58 5 // Fun_Pro_WriteCode();
59 5 break;
60 5 default: break;
61 5 }
62 4 }
63 3 break;
64 3 case FS_DATA:
65 3 if(g_ucUsbFlag)
66 3 {
67 4 // Fun_Pro_WriteCode();
68 4 Hpi_Write_Section(g_ulDestAdd,g_ucUsbGData,g_ucCount); //write data to 6201 memory
69 4 g_ulDestAdd = g_ulDestAdd + g_ucCount/4;
70 4 g_uiCodeLength -= g_ucCount/4;
71 4
72 4 if(g_ucCount < 64) g_ucFStatus = FS_CMD;
73 4
74 4 if((g_ucCount <64) & (g_uiCodeLength = 0)) g_ucUsbSData[1] = 0;
75 4 else g_ucUsbSData[1] = ERROR_DATA;
76 4
77 4 g_ucUsbSData[0] = CMD_WRITE_CODE;
78 4 POLL_WRITE_BYTE(INDEX, 1); // Set index to endpoint 1 registers
79 4 Fun_Fifo_Write(FIFO_EP1, 2, &g_ucUsbSData);
80 4 POLL_WRITE_BYTE(EINCSR1, rbInINPRDY);
81 4 g_ucUsbFlag = 0;
82 4 }
83 3 break;
84 3 default: break;
85 3
86 3 }
87 2 }
88 1 }
89
90 void Fun_Pro_Test()
91 {
92 1 g_ucUsbSData[0] = g_ucHostCmd;
93 1 g_ucUsbSData[1] = 0x00;
94 1 }
95
96 void Fun_Pro_ReadEinit()
97 {
98 1
99 1 }
100
101 void Fun_Pro_WriteEInit()
102 {
103 1 unsigned long ulData;
104 1 ulData = g_ucUsbGData[1] + g_ucUsbGData[2]*256 + g_ucUsbGData[3]*256*256 + g_ucUsbGData[4]*256*256*256;
105 1 Hpi_Write_Word(ulData,EMIF_GLOBAL_CONTORL); //write emif registers
106 1 ulData = g_ucUsbGData[5] + g_ucUsbGData[6]*256 + g_ucUsbGData[7]*256*256 + g_ucUsbGData[8]*256*256*256;
107 1 Hpi_Write_Word(ulData,EMIF_CE1_CONTORL); //write emif registers
108 1 ulData = g_ucUsbGData[9] + g_ucUsbGData[10]*256 + g_ucUsbGData[11]*256*256 + g_ucUsbGData[12]*256*256*256
-;
109 1 Hpi_Write_Word(ulData,EMIF_CE0_CONTORL); //write emif registers
110 1 ulData = g_ucUsbGData[13] + g_ucUsbGData[14]*256 + g_ucUsbGData[15]*256*256 + g_ucUsbGData[16]*256*256*25
-6;
111 1 Hpi_Write_Word(ulData,EMIF_CE2_CONTORL); //write emif registers
112 1 ulData = g_ucUsbGData[17] + g_ucUsbGData[18]*256 + g_ucUsbGData[19]*256*256 + g_ucUsbGData[20]*256*256*25
-6;
113 1 Hpi_Write_Word(ulData,EMIF_CE3_CONTORL); //write emif registers
C51 COMPILER V6.12 USB_USER 06/09/2004 15:44:25 PAGE 3
114 1 ulData = g_ucUsbGData[21] + g_ucUsbGData[22]*256 + g_ucUsbGData[23]*256*256 + g_ucUsbGData[24]*256*256*25
-6;
115 1 Hpi_Write_Word(ulData,EMIF_SDRAM_CONTORL); //write emif registers
116 1 ulData = g_ucUsbGData[25] + g_ucUsbGData[26]*256 + g_ucUsbGData[27]*256*256 + g_ucUsbGData[28]*256*256*25
-6;
117 1 Hpi_Write_Word(ulData,EMIF_SDRAM_REFRESH); //write emif registers
118 1
119 1 g_ucUsbSData[0] = g_ucHostCmd;
120 1 g_ucUsbSData[1] = 0x00;
121 1
122 1 }
123
124 void Fun_Pro_ReadCode()
125 {}
126
127 void Fun_Pro_WriteCode()
128 {
129 1
130 1 }
131 /************************************************/
132 /* Name: Hpi_Write_Section() */
133 /* In: delay */
134 /* Out: None */
135 /* Description: main delay functions */
136 /************************************************/
137 void Hpi_WakeUp_DSP()
138 {
139 1 /*write HPIC with HWOB = 1,1st halfword transferred is least significant*/
140 1 /* HCNTRL1 HCNTRL0 HHWIL */
141 1 HPIC0(0x0003); // 0 0 0
142 1 HPIC1(0x0003); // 0 0 1
143 1 }
144 /************************************************/
145 /* Name: Hpi_Write_Word() */
146 /* In: delay */
147 /* Out: None */
148 /* Description: main delay functions */
149 /************************************************/
150 void Hpi_Write_Word(unsigned long ulSourceWord,unsigned long ulDestAdd)
151 {
152 1 /*write HPIC with HWOB = 1,1st halfword transferred is least significant*/
153 1 /* HCNTRL1 HCNTRL0 HHWIL */
154 1 HPIC0(0x0001); // 0 0 0
155 1 HPIC1(0x0001); // 0 0 1
156 1 /*write destinaation address to HPIA,1st halfword is least significan */
157 1 /* HCNTRL1 HCNTRL0 HHWIL */
158 1 HPIA0((uint)(ulDestAdd & 0x0ffff)); // 0 1 0
159 1 HPIA1((uint)((ulDestAdd >> 16) & 0x0ffff)); // 0 1 1
160 1 /*write source word to HPID,1st halfword is least significan */
161 1 /* HCNTRL1 HCNTRL0 HHWIL */
162 1 HPID0((uint)(ulSourceWord & 0x0ffff)); // 1 1 0
163 1 HPID1((uint)((ulSourceWord >> 16) & 0x0ffff)); // 1 1 1
164 1 }
165 /************************************************/
166 /* Name: Hpi_Write_Section() */
167 /* In: delay */
168 /* Out: None */
169 /* Description: main delay functions */
170 /************************************************/
171 void Hpi_Write_Section(unsigned long ulDestAdd,unsigned char *uiSource,unsigned int uiLength)
172 {
173 1 uint y;
C51 COMPILER V6.12 USB_USER 06/09/2004 15:44:25 PAGE 4
174 1 /*write HPIC with HWOB = 1,1st halfword transferred is least significant*/
175 1 /* HCNTRL1 HCNTRL0 HHWIL */
176 1 HPIC0(0x0001); // 0 0 0
177 1 HPIC1(0x0001); // 0 0 1
178 1 /*write destinaation address to HPIA,1st halfword is least significan */
179 1 /* HCNTRL1 HCNTRL0 HHWIL */
180 1 HPIA0((uint)(ulDestAdd & 0x0ffff)); // 0 1 0
181 1 HPIA1((uint)((ulDestAdd >> 16) & 0x0ffff)); // 0 1 1
182 1 /*write source section to HPID,1st halfword is least significan */
183 1 /* HCNTRL1 HCNTRL0 HHWIL */
184 1 for(y = 0; y < uiLength; y++)
185 1 {
186 2 HPID0_SECTION(uiSource); // 1 0 0
187 2 HPID1_SECTION(uiSource); // 1 0 1
188 2 }
189 1 }
190 void Fun_Fifo_Write(BYTE addr, unsigned int uNumBytes, BYTE * pData)
191 {
192 1 int i;
193 1
194 1 // If >0 bytes requested,
195 1 if (uNumBytes)
196 1 {
197 2 while(USB0ADR & 0x80); // Wait for BUSY->'0'
198 2 // (register available)
199 2 USB0ADR = (addr); // Set address (mask out bits7-6)
200 2
201 2 // Write <NumBytes> to the selected FIFO
202 2 for(i=0;i<uNumBytes;i++)
203 2 {
204 3 USB0DAT = pData[i];
205 3 while(USB0ADR & 0x80); // Wait for BUSY->'0' (data ready)
206 3 }
207 2 }
208 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1020 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 128 ----
PDATA SIZE = ---- ----
DATA SIZE = 10 26
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 + -