📄 d12main.lst
字号:
177 1
178 1 D12_SetEndpointEnable(0); /* Disable all endpoints but EPP0. */
179 1 }
C51 COMPILER V7.01 D12MAIN 11/14/2003 09:44:52 PAGE 4
180
181 void init_config(void)
182 {
183 1 D12_SetEndpointEnable(1); /* Enable generic/iso endpoints. */
184 1 }
185 //通过端点索引1发送数据DATA类型
186 void single_transmit(unsigned char *buf, unsigned char len)
187 {
188 1 if( len <= EP0_PACKET_SIZE)
189 1 {
190 2
191 2 D12_WriteBuffer(1,buf,len);
192 2
193 2 }
194 1
195 1 }
196
197 //通过端点索引1发送数据CODE 类型
198 void code_transmit(unsigned char code * pRomData, unsigned short len)
199 {
200 1 ControlData.wCount = 0;
201 1 if(ControlData.wLength > len)
202 1 {
203 2 ControlData.wLength = len;//发送数据长度限制
204 2 }
205 1
206 1 ControlData.pData = pRomData;
207 1
208 1 if( ControlData.wLength >= EP0_PACKET_SIZE)
209 1 { // 如果发送代码大于包长度
210 2 D12_WriteBuffer(1, ControlData.pData, EP0_PACKET_SIZE);
211 2 ControlData.wCount += EP0_PACKET_SIZE;
212 2
213 2 DISABLE;
214 2 bEPPflags.bits.control_state = USB_TRANSMIT;
215 2 ENABLE;
216 2 }
217 1 else { //发送代码小于包长度
218 2 D12_WriteBuffer(1, pRomData, ControlData.wLength);
219 2 ControlData.wCount += ControlData.wLength;
220 2 DISABLE;
221 2 bEPPflags.bits.control_state = USB_IDLE;
222 2 ENABLE;
223 2 }
224 1 }
225
226
227
228 void control_handler()
229 {
230 1 unsigned char type, req;
231 1
232 1 type = ((ControlData.DeviceRequest.bmRequestType )& USB_REQUEST_TYPE_MASK); //0x60
233 1 req = ((ControlData.DeviceRequest.bRequest) & USB_REQUEST_MASK); //0x0F
234 1
235 1 //help_devreq(type, req); // print out device request
236 1
237 1 if (type == USB_STANDARD_REQUEST)
238 1 (*StandardDeviceRequest[req])();
239 1 else if (type == USB_VENDOR_REQUEST)
240 1 (*VendorDeviceRequest[req])();
241 1 else
C51 COMPILER V7.01 D12MAIN 11/14/2003 09:44:52 PAGE 5
242 1 stall_ep0();
243 1
244 1 }
245
246 void main()
247 {
248 1 // unsigned char key, i;
249 1 BOOL in_loop = TRUE;
250 1 //bNoRAM=TRUE;
251 1 init_port();
252 1 init_serial();
253 1 //init_counter0();
254 1 init_timer0();
255 1
256 1
257 1
258 1 //printf("Re-connect PDIUSBD12 evaluation board to USB.\n");
259 1
260 1 //EX0 = 0;
261 1 IT0 = 0;//设置INT1为低电平中断触发
262 1 EX0 = 1;//允许外部中断1
263 1 PX0 = 0;//设置为低优先级
264 1
265 1 //
266 1 MCU_D12CS = 0x1;
267 1 MCU_D12CS = 0x0;
268 1 /* Power on reset, lightup LEDs for 1 sec,
269 1 disconnect and reconnect Soft-Connect */
270 1 //printf("\nPDIUSBD12 SMART evaluation board firmware V3.0.\n");
271 1
272 1 bEPPflags.value = 0;//清除事件标志寄存器
273 1
274 1 reconnect_USB();//重新链接USB
275 1 // EX1 = 1;//允许外部中断1
276 1
277 1
278 1
279 1 /* Main program loop */
280 1
281 1 while(TRUE) //主循环
282 1 {
283 2
284 2 if (bEPPflags.bits.timer) //定时器溢出
285 2 {
286 3 DISABLE;
287 3 bEPPflags.bits.timer = 0; //清定时器溢出标志
288 3 ENABLE;
289 3
290 3 }
291 2
292 2 if (bEPPflags.bits.bus_reset) //总线复位
293 2 {
294 3 DISABLE;
295 3 bEPPflags.bits.bus_reset = 0; //清除总线复位标志
296 3 ENABLE;
297 3 // Release D12's SUSPEND pin after bus reset
298 3 // Enable 74HCT123 pulse generation before disconnect
299 3 ///D12SUSPD = 1;
300 3 D12SUSPD=0; //释放D12的挂起状态
301 3 } // if bus reset
302 2
303 2 if (bEPPflags.bits.suspend) //挂起改变处理
C51 COMPILER V7.01 D12MAIN 11/14/2003 09:44:52 PAGE 6
304 2 {
305 3 DISABLE;
306 3 bEPPflags.bits.suspend= 0; //清除挂起改变标志
307 3 ENABLE;
308 3
309 3 if(D12SUSPD == 1) //D12已进入挂起处理
310 3 {
311 4 D12SUSPD = 0; //唤醒D12,使得USB器件在MCU进入彽功耗模式后再进入挂起
312 4 P0 = 0xFF;
313 4 P1 = 0xFF;
314 4 P2 = 0xFF;
315 4 P3 = 0xFF;
316 4 //D12_SetDMA(0xC3);
317 4 D12SUSPD = 1; //释放D12挂起状态
318 4 PCON |= 0x02; //进入调电模式
319 4 while (1); //芯片进入死循环,因为标志51进入掉电后,只有复位才能唤醒芯片
320 4 }
321 3 } // if suspend change
322 2
323 2 if (bEPPflags.bits.setup_packet)
324 2 {
325 3 DISABLE;
326 3 bEPPflags.bits.setup_packet = 0;
327 3 ENABLE;
328 3 control_handler();
329 3 D12SUSPD = 1; //释放D12的挂起状态
330 3
331 3 } // if setup_packet
332 2
333 2 /*if (bEPPflags.bits.ep1_transmit)
334 2 {
335 2 ep1_txdone();
336 2 } */
337 2 } // Main Loop
338 1 //on_exit();
339 1 }
340
341
342
343
344
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 546 ----
CONSTANT SIZE = 96 ----
XDATA SIZE = ---- ----
PDATA SIZE = 26 9
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 + -