阅读:1917回复:5
请教PDIUSBD12,枚举错误
下面是我的一段C51程序,验证在设备枚举时能接收来自PC的SETUP包。在我的程序中,接收的数据错误,而且PC机不能检测到USB口的设备。我的硬件连接如下:
PDIUSBD12的CS----MCU的P2.8; PDIUSBD12的A0----MCU的P2.7; PDIUSBD12的RD,WR,ALE-----MCU的RD,WR,ALE; PDIUSBD12的suspend----MCU的P1.5; 下面是我的程序,MCU我选用ADuC812,仿真器Insight SE-52. #include<stdio.h> #include<ADuC812.h> #include<ABsacc.h> #define CPLD XBYTE[0XEFFF] #define USBCOM XBYTE[0X7FFF] #define USBDATA XBYTE[0X3FFF] sbit r=P3^7; sbit w=P3^6; //sbit cpldcs=P2^4; sbit usbcs=P2^7; sbit suspend=P1^5; unsigned char data usbbuf,epdata,usbb[10]; unsigned char bdata breg; unsigned char data i; void read_buffer(void){ USBCOM=0XF0; //read buffer for(i=0;i<10;i++){ usbb=USBDATA; //read 10 bytes } //USBCOM=0XF1; } void delay(unsigned char t) { while(t--); //延时子程序 } /* 中断服务子程序 */ void usb_int0() interrupt 0 using 1{ USBCOM=0XF4; //read interrupt register //delay(2); breg=USBDATA; ! 读出的breg值为0XC1 //delay(5); if(breg^0==1) USBCOM=0X40;// EP0 OUT // delay(2); usbbuf=USBDATA; ! 读出的usbbuf值为0X21 // delay(5); USBCOM=0XF2; USBCOM=0X00; //select endpoint0 epdata=USBDATA; ! 读出端点0的值是0X01 read_buffer(); //read buffer !读出连续的10个buffer的值 全是0XFF,这与设备在枚举时host发送的GET_DESCRIPTOR相差太远。 // USBCOM=0XF1; } void main(void) { EA=0; //close interrupt // SP=0X55;//set stack IT0=0; //low to trigger EX0=0; //close interrupt INT0 delay(10); /* Initialization Commands */ suspend=0; USBCOM=0xd0;//Set Address/Enable delay(2); USBDATA=0x80; delay(2); USBCOM=0XD8; //set Endpoint Enable delay(2); USBDATA=0X01; delay(2); USBCOM=0XFB; //set DMA delay(2); USBDATA=0Xc0; delay(2); USBCOM=0XF3; //set mode delay(2); USBDATA=0X16; delay(2); USBDATA=0X4B; //4M CLOCK delay(2); EA=1; EX0=1; //open interrupt while(1){ } } “!”后是我读出的变量的值。 请斑竹和各位同行大虾帮忙,小可先谢谢各位了! |
|
|
沙发#
发布于:2001-10-23 11:36
既然用c51,为什么不从philips那里直接拿来呢?还搞得自己这么累!
|
|
|
板凳#
发布于:2001-10-23 15:12
rayyang2000老兄说得对,确实让人费解
|
|
|
地板#
发布于:2001-10-23 17:19
谢谢两位斑竹,我现在正在研读philips的firmware,可是philip的例子有两种预编译:
#ifdef __c51__ ....... #else ....... 我是不是只需要看c51的代码,而不用关心其他的代码? |
|
|
地下室#
发布于:2001-10-23 19:26
完全正确!
|
|
|
5楼#
发布于:2001-10-23 21:26
万分感激两位斑竹的指点!
|
|
|