?? kmain.lst
字號:
102 1 ET0 = 1; /* IE.1*/
103 1 TR0 = 1; /* TCON.4 start timer */
104 1 PT0 = 1;
105 1
106 1 //EA = 1;
107 1 }
108
109
110 void init_port()
111 {
112 1 P0 = 0xFF;
113 1 P1 = 0xFF;
114 1 P2 = 0xFF;
115 1 P3 = 0xFF;
116 1 MCU_D12CS = 0x0; //D12 Select
117 1 D12SUSPD = 0; //D12 not in Suspend
118 1 }
119
120 /*Serial Port */
121 /*Mode = 1 /8-bit UART
122 Serial Port Interrupt = Disabled */
123 /*Receive = Enabled */
124 /*Auto Addressing = Disabled */
125 void init_serial(void)
C51 COMPILER V6.20c KMAIN 10/31/2002 21:55:46 PAGE 16
126 {
127 1 SCON = 0X52; /* SCON: SM0|SM1|SM2|REN|TB8|RB8|TI|RI */
128 1 PCON = 0X80 | PCON; /* PCON: SMOD | - | - | - | GF1|GF0|PD |IDL| */
129 1 TMOD = 0X20; /* TMOD: GATE|C/T|M1|M0|GATE|C/T|M1|M0 */
130 1 TCON = 0x69; /* TCON: TF1|TR1|TF0|TR0|IE1|IT1|IE0|IT0 */
131 1 TH1 = 0xF3; /*TH1=0xF3: */
132 1 }
133 //----------------------------
134 /*
135 void help_devreq(unsigned char typ, unsigned char req)
136 {
137 typ >>= 5;
138
139 if(typ == USB_STANDARD_REQUEST) {
140 }
141 else {
142 if(bEPPflags.bits.verbose)
143 printf("Request Type = %s, bRequest = 0x%bx.\n", _NAME_USB_REQUEST_TYPE[typ],
144 req);
145 }
146 }
147 */
148
149 //=================================================================
150 void disconnect_USB(void)
151 {
152 1 // Initialize D12 configuration
153 1 D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_12M);
154 1 }
155
156 void connect_USB(void)
157 {
158 1 // reset event flags
159 1
160 1 DISABLE;
161 1 bEPPflags.value = 0;
162 1 ENABLE;
163 1
164 1 // V2.1 enable normal+sof interrupt
165 1 D12_SetDMA(D12_ENDP4INTENABLE | D12_ENDP5INTENABLE);
166 1
167 1 // Initialize D12 configuration
168 1
169 1 //D12_SetMode(D12_NOLAZYCLOCK ,D12_SETTOONE | D12_CLOCK_12M );
170 1 D12_SetMode(D12_NOLAZYCLOCK | D12_SOFTCONNECT,D12_SETTOONE | D12_CLOCK_12M );
171 1
172 1 }
173
174
175 void reconnect_USB(void)
176 {
177 1 unsigned long clk_cnt;
178 1
179 1 MCU_LED0 = 0;
180 1 MCU_LED1 = 0;
181 1
182 1 // Pull-down D12's SUSPEND pin
183 1 // Disable 74HCT123 pulse generation before disconnect
184 1 // Release D12's SUSPEND pin after receiving bus reset from host
185 1 D12SUSPD = 0;
186 1 disconnect_USB();
187 1
C51 COMPILER V6.20c KMAIN 10/31/2002 21:55:46 PAGE 17
188 1 //printf("Wait for 1 second ...\n");
189 1
190 1 clk_cnt = ClockTicks;
191 1 while(ClockTicks < clk_cnt + 20)
192 1 ;
193 1
194 1 connect_USB();
195 1
196 1 MCU_LED0 = 1;
197 1 MCU_LED1 = 1;
198 1
199 1 }
200 //------------------------------
201 void stall_ep0(void)
202 {
203 1 D12_SetEndpointStatus(0, 1);
204 1 D12_SetEndpointStatus(1, 1);
205 1 }
206
207 //---------------
208 void on_exit(void)
209 {
210 1
211 1 }
212 //----------------------------------
213 void check_key_LED(void)
214 {
215 1 static unsigned char c, last_key = 0xf;
216 1
217 1 c = MCU_SWM0 & MCU_SWM1;
218 1 c &= 0x0f;
219 1 if (c != last_key) {
220 2 D12_WriteEndpoint(3, 1, &c);
221 2 }
222 1
223 1 last_key = c;
224 1
225 1 if(bEPPflags.bits.ep1_rxdone) {
226 2 DISABLE;
227 2 bEPPflags.bits.ep1_rxdone = 0;
228 2 ENABLE;
229 2 MCU_LED0 = !(GenEpBuf[3] & 0x1);
230 2 MCU_LED1 = !(GenEpBuf[3] & 0x2);
231 2 }
232 1 }
233 //--------------------------
234 void init_unconfig(void)
235 {
236 1 //unsigned char i;
237 1
238 1 D12_SetEndpointEnable(0); /* Disable all endpoints but EPP0. */
239 1 }
240
241 void init_config(void)
242 {
243 1 D12_SetEndpointEnable(1); /* Enable generic/iso endpoints. */
244 1 }
245 //--------------------------
246
247 void single_transmit(unsigned char * buf, unsigned char len)
248 {
249 1 if( len <= EP0_PACKET_SIZE) {
C51 COMPILER V6.20c KMAIN 10/31/2002 21:55:46 PAGE 18
250 2 D12_WriteEndpoint(1, len, buf);
251 2 }
252 1 }
253
254 void code_transmit(unsigned char code * pRomData, unsigned short len)
255 {
256 1 ControlData.wCount = 0;
257 1 if(ControlData.wLength > len)
258 1 ControlData.wLength = len;
259 1
260 1 ControlData.pData = pRomData;
261 1 if( ControlData.wLength >= EP0_PACKET_SIZE) { // 如果發(fā)送代碼大于包長度
262 2 D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData);
263 2 ControlData.wCount += EP0_PACKET_SIZE;
264 2
265 2 DISABLE;
266 2 bEPPflags.bits.control_state = USB_TRANSMIT;
267 2 ENABLE;
268 2 }
269 1 else { //發(fā)送代碼小于包長度
270 2 D12_WriteEndpoint(1, ControlData.wLength, pRomData);
271 2 ControlData.wCount += ControlData.wLength;
272 2 DISABLE;
273 2 bEPPflags.bits.control_state = USB_IDLE;
274 2 ENABLE;
275 2 }
276 1 }
277
278 //---------------------------
279 void setup_dma()
280 {
281 1 ioSize = ioRequest.uSize;
282 1 ioCount = 0;
283 1
284 1 DISABLE;
285 1 bEPPflags.bits.dma_state = DMA_RUNNING;
286 1 ENABLE;
287 1
288 1 single_transmit(0, 0);
289 1
290 1 if(ioRequest.bCommand & 0x1) {
291 2 if(ioSize > 64 || ioSize == 0) {
292 3 //if(bNoRAM)
293 3 D12_WriteEndpoint(5, 64, EpBuf);
294 3 //else
295 3 // D12_WriteEndpoint(5, 64, MainEpBuf);
296 3 ioCount += 64;
297 3 }
298 2 else {
299 3 //if(bNoRAM)
300 3 D12_WriteEndpoint(5, ioSize, EpBuf);
301 3 //else
302 3 // D12_WriteEndpoint(5, ioSize, MainEpBuf);
303 3 ioCount += ioSize;
304 3 }
305 2 }
306 1 }
307
308 //------------------------------
309 void control_handler()
310 {
311 1 unsigned char type, req;
C51 COMPILER V6.20c KMAIN 10/31/2002 21:55:46 PAGE 19
312 1
313 1 type = ControlData.DeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK; //0x60
314 1 req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK; //0x0F
315 1
316 1 //help_devreq(type, req); // print out device request
317 1
318 1 if (type == USB_STANDARD_REQUEST)
319 1 (*StandardDeviceRequest[req])();
320 1 else if (type == USB_VENDOR_REQUEST)
321 1 (*VendorDeviceRequest[req])();
322 1 else
323 1 stall_ep0();
324 1
325 1 }
326
327
328 //-------------------------------------------
329
330 //-----------xugy------begin-------------
331
332 //-----------xugy------end---------------
333
334
335 //-------------------------------------------
336
337 void main()
338 {
339 1 // unsigned char key, i;
340 1 //bNoRam=1;
341 1
342 1 init_port();
343 1 init_serial();
344 1 init_timer0();
345 1 EA = 1;
346 1 //for test
347 1 MCU_LED0=0;
348 1 MCU_LED1=0;
349 1 MCU_LED0=1;
350 1 MCU_LED1=1;
351 1 //--------------
352 1 printf("Re-connect PDIUSBD12 evaluation board to USB.\n");
353 1 IE0=0;
354 1 IT0=0;
355 1 EX0=1;
356 1 //--------------------------
357 1 // MCU_D12RST = 0;
358 1 // MCU_D12RST = 1;
359 1 //--------------------
360 1
361 1 MCU_D12CS = 0x1;
362 1
363 1 bNoRAM = TRUE;
364 1
365 1 MCU_D12CS = 0x0;
366 1
367 1 reconnect_USB();
368 1
369 1 while( TRUE ){
370 2 SBUF= 0xAA;
371 2 if (bEPPflags.bits.timer){
372 3 DISABLE;
373 3 bEPPflags.bits.timer = 0;
C51 COMPILER V6.20c KMAIN 10/31/2002 21:55:46 PAGE 20
374 3 ENABLE;
375 3
376 3 if(bEPPflags.bits.configuration)
377 3 check_key_LED();
378 3 }
379 2
380 2 if (bEPPflags.bits.bus_reset) {
381 3 DISABLE;
382 3 bEPPflags.bits.bus_reset = 0;
383 3 ENABLE;
384 3 // Release D12's SUSPEND pin after bus reset
385 3 // Enable 74HCT123 pulse generation before disconnect
386 3 ///D12SUSPD = 1;
387 3 D12SUSPD=0;
388 3 } // if bus reset
389 2
390 2 if (bEPPflags.bits.suspend) {
391 3 DISABLE;
392 3 bEPPflags.bits.suspend= 0;
393 3 ENABLE;
394 3
395 3 if(D12SUSPD == 1) {
396 4 D12SUSPD = 0;
397 4 P0 = 0xFF;
398 4 P1 = 0xFF;
399 4 P2 = 0xFF;
400 4 P3 = 0xFF;
401 4 D12_SetDMA(0xC3);
402 4 D12SUSPD = 1;
403 4 PCON |= 0x02;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -