📄 usbcore.lst
字号:
256 0x10,
257 0x01,
258
259 //bCountyCode字段。设备适用的国家代码,这里选择为美国,代码0x21。
260 0x21,
261
262 //bNumDescriptors字段。下级描述符的数目。我们只有一个报告描述符。
263 0x01,
264
265 //bDescritporType字段。下级描述符的类型,为报告描述符,编号为0x22。
266 0x22,
267
268 //bDescriptorLength字段。下级描述符的长度。下级描述符为报告描述符。
269 sizeof(ReportDescriptor)&0xFF,
270 (sizeof(ReportDescriptor)>>8)&0xFF,
271
272 /**********************输入端点描述符***********************/
273 //bLength字段。端点描述符长度为7字节。
274 0x07,
275
276 //bDescriptorType字段。端点描述符编号为0x05。
277 0x05,
278
279 //bEndpointAddress字段。端点的地址。我们使用D12的输入端点1。
280 //D7位表示数据方向,输入端点D7为1。所以输入端点1的地址为0x81。
281 0x81,
282
283 //bmAttributes字段。D1~D0为端点传输类型选择。
284 //该端点为中断端点。中断端点的编号为3。其它位保留为0。
285 0x03,
286
287 //wMaxPacketSize字段。该端点的最大包长。端点1的最大包长为16字节。
288 //注意低字节在先。
289 0x10,
290 0x00,
291
292 //bInterval字段。端点查询的时间,我们设置为10个帧时间,即10ms。
293 0x0A,
294
295 /**********************输出端点描述符***********************/
296 //bLength字段。端点描述符长度为7字节。
297 0x07,
298
299 //bDescriptorType字段。端点描述符编号为0x05。
300 0x05,
301
302 //bEndpointAddress字段。端点的地址。我们使用D12的输出端点1。
303 //D7位表示数据方向,输出端点D7为0。所以输出端点1的地址为0x01。
C51 COMPILER V7.06 USBCORE 11/16/2008 15:59:55 PAGE 6
304 0x01,
305
306 //bmAttributes字段。D1~D0为端点传输类型选择。
307 //该端点为中断端点。中断端点的编号为3。其它位保留为0。
308 0x03,
309
310 //wMaxPacketSize字段。该端点的最大包长。端点1的最大包长为16字节。
311 //注意低字节在先。
312 0x10,
313 0x00,
314
315 //bInterval字段。端点查询的时间,我们设置为10个帧时间,即10ms。
316 0x0A
317 };
318 ////////////////////////配置描述符集合完毕//////////////////////////
319
320 /************************语言ID的定义********************/
321 code uint8 LanguageId[4]=
322 {
323 0x04, //本描述符的长度
324 0x03, //字符串描述符
325 //0x0409为美式英语的ID
326 0x09,
327 0x04
328 };
329 ////////////////////////语言ID完毕//////////////////////////////////
330
331 /**************************************************/
332 /********* 本转换结果来自 **********/
333 /********* Http://computer00.21ic.org **********/
334 /********* 作者: 电脑圈圈 **********/
335 /********* 欢迎大家使用 **********/
336 /********* 版权所有,盗版请写明出处 **********/
337 /**************************************************/
338
339 //http://computer00.21ic.org/user1/2198/archives/2007/42769.html
340 //字符串“电脑圈圈的USB专区 Http://group.ednchina.com/93/”的Unicode编码
341 //8位小端格式
342 code uint8 ManufacturerStringDescriptor[82]={
343 82, //该描述符的长度为82字节
344 0x03, //字符串描述符的类型编码为0x03
345 0x35, 0x75, //电
346 0x11, 0x81, //脑
347 0x08, 0x57, //圈
348 0x08, 0x57, //圈
349 0x84, 0x76, //的
350 0x55, 0x00, //U
351 0x53, 0x00, //S
352 0x42, 0x00, //B
353 0x13, 0x4e, //专
354 0x3a, 0x53, //区
355 0x20, 0x00, //
356 0x48, 0x00, //H
357 0x74, 0x00, //t
358 0x74, 0x00, //t
359 0x70, 0x00, //p
360 0x3a, 0x00, //:
361 0x2f, 0x00, ///
362 0x2f, 0x00, ///
363 0x67, 0x00, //g
364 0x72, 0x00, //r
365 0x6f, 0x00, //o
C51 COMPILER V7.06 USBCORE 11/16/2008 15:59:55 PAGE 7
366 0x75, 0x00, //u
367 0x70, 0x00, //p
368 0x2e, 0x00, //.
369 0x65, 0x00, //e
370 0x64, 0x00, //d
371 0x6e, 0x00, //n
372 0x63, 0x00, //c
373 0x68, 0x00, //h
374 0x69, 0x00, //i
375 0x6e, 0x00, //n
376 0x61, 0x00, //a
377 0x2e, 0x00, //.
378 0x63, 0x00, //c
379 0x6f, 0x00, //o
380 0x6d, 0x00, //m
381 0x2f, 0x00, ///
382 0x39, 0x00, //9
383 0x33, 0x00, //3
384 0x2f, 0x00 ///
385 };
386 /////////////////////////厂商字符串结束/////////////////////////////
387
388 //字符串“《圈圈教你玩USB》之用户自定义的USB HID设备”的Unicode编码
389 //8位小端格式
390 code uint8 ProductStringDescriptor[54]={
391 54, //该描述符的长度为54字节
392 0x03, //字符串描述符的类型编码为0x03
393 0x0a, 0x30, //《
394 0x08, 0x57, //圈
395 0x08, 0x57, //圈
396 0x59, 0x65, //教
397 0x60, 0x4f, //你
398 0xa9, 0x73, //玩
399 0x55, 0x00, //U
400 0x53, 0x00, //S
401 0x42, 0x00, //B
402 0x0b, 0x30, //》
403 0x4b, 0x4e, //之
404 0x28, 0x75, //用
405 0x37, 0x62, //户
406 0xea, 0x81, //自
407 0x9a, 0x5b, //定
408 0x49, 0x4e, //义
409 0x84, 0x76, //的
410 0x55, 0x00, //U
411 0x53, 0x00, //S
412 0x42, 0x00, //B
413 0x20, 0x00, //
414 0x48, 0x00, //H
415 0x49, 0x00, //I
416 0x44, 0x00, //D
417 0xbe, 0x8b, //设
418 0x07, 0x59 //备
419 };
420 ////////////////////////产品字符串结束////////////////////////////
421
422 //字符串“2008-07-19”的Unicode编码
423 //8位小端格式
424 code uint8 SerialNumberStringDescriptor[22]={
425 22, //该描述符的长度为22字节
426 0x03, //字符串描述符的类型编码为0x03
427 0x32, 0x00, //2
C51 COMPILER V7.06 USBCORE 11/16/2008 15:59:55 PAGE 8
428 0x30, 0x00, //0
429 0x30, 0x00, //0
430 0x38, 0x00, //8
431 0x2d, 0x00, //-
432 0x30, 0x00, //0
433 0x37, 0x00, //7
434 0x2d, 0x00, //-
435 0x31, 0x00, //1
436 0x39, 0x00 //9
437 };
438 //////////////////////产品序列号字符串结束/////////////////////////
439
440 /********************************************************************
441 函数功能:延时x毫秒函数。
442 入口参数:x:延时的毫秒数。
443 返 回:无。
444 备 注:无。
445 ********************************************************************/
446 void DelayXms(uint16 x)
447 {
448 1 uint16 i;
449 1 uint16 j;
450 1 for(i=0;i<x;i++)
451 1 for(j=0;j<227;j++); //循环语句延时
452 1 }
453 ////////////////////////End of function//////////////////////////////
454
455 /********************************************************************
456 函数功能:USB断开连接函数。
457 入口参数:无。
458 返 回:无。
459 备 注:无。
460 ********************************************************************/
461 void UsbDisconnect(void)
462 {
463 1 #ifdef DEBUG0
464 1 Prints("断开USB连接。\r\n");
465 1 #endif
466 1 D12WriteCommand(D12_SET_MODE); //写设置模式命令
467 1 D12WriteByte(0x06); //设置模式的第一字节
468 1 D12WriteByte(0x47); //设置模式的第二字节
469 1 DelayXms(1000); //延迟1秒
470 1 }
471 ////////////////////////End of function//////////////////////////////
472
473 /********************************************************************
474 函数功能:USB连接函数。
475 入口参数:无。
476 返 回:无。
477 备 注:无。
478 ********************************************************************/
479 void UsbConnect(void)
480 {
481 1 #ifdef DEBUG0
482 1 Prints("连接USB。\r\n");
483 1 #endif
484 1 D12WriteCommand(D12_SET_MODE); //写设置模式命令
485 1 D12WriteByte(0x16); //设置模式的第一字节
486 1 D12WriteByte(0x47); //设置模式的第二字节
487 1 }
488 ////////////////////////End of function//////////////////////////////
489
C51 COMPILER V7.06 USBCORE 11/16/2008 15:59:55 PAGE 9
490 /********************************************************************
491 函数功能:总线挂起中断处理函数。
492 入口参数:无。
493 返 回:无。
494 备 注:无。
495 ********************************************************************/
496 void UsbBusSuspend(void)
497 {
498 1 #ifdef DEBUG0
499 1 Prints("USB总线挂起。\r\n");
500 1 #endif
501 1 }
502 ////////////////////////End of function//////////////////////////////
503
504 /********************************************************************
505 函数功能:总线复位中断处理函数。
506 入口参数:无。
507 返 回:无。
508 备 注:无。
509 ********************************************************************/
510 void UsbBusReset(void)
511 {
512 1 #ifdef DEBUG0
513 1 Prints("USB总线复位。\r\n");
514 1 #endif
515 1 Ep1InIsBusy=0; //复位后端点1输入缓冲区空闲。
516 1 }
517 ////////////////////////End of function//////////////////////////////
518
519 /********************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -