我用的AVR mega128 用本论坛51单片机那个程序改编的 但是插上键盘过后 中断引脚始终是高 接收不到任何东西 不知道问题出在哪里? 请高手帮忙啊 在线等.... 做了好几天了 还没搞定 我的程序如下UploadImages/2010111820541561.txtUploadImages/201011239263668.txt
我重新将我的程序发上来了 我不太清楚怎么样才算初始化完成
出错的开始是从获取设备描述符的数据阶段的中断状态值 返回为0x2e 本来应该为0X14才能 unsigned char get_descr_ex() { unsigned char descr_len; unsigned char *p=data_buf; endp7_mode=0x80; toggle_send(); wr_usb_data(8,Request.Req_buf); issue_token(( 0 << 4 ) | DEF_USB_PID_SETUP); status=wait_interrupt();//printf("SETUP USB_INT_SUCCESS\n");
//此处获取到的状态值为2e 所以下面不能执行
if(status==USB_INT_SUCCESS)/* SETUP阶段操作成功 */ { endp6_mode=0xc0; toggle_recv(); printf("SETUP USB_INT_SUCCESS\n"); } else {return(0);//printf("SETUP USB_INT_fail\n"); } issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt(); if(status==USB_INT_SUCCESS)/* DATA阶段操作成功 */ { printf("data USB_INT_SUCCESS\n"); if(flag_config_2)descr_len=data_buf[2]-rd_usb_data(data_buf); else descr_len=data_buf[0]-rd_usb_data(data_buf); while(descr_len>0) { toggle_recv(); p+=0x08; issue_token(( 0 << 4 ) | DEF_USB_PID_IN);status=wait_interrupt(); if(status==USB_INT_SUCCESS) /* DATA阶段操作成功 */ descr_len-=rd_usb_data(p); else return(0); } } else return(0);//printf("data USB_INT_fail\n"); endp7_mode=0xc0; toggle_send(); wr_usb_data(0,Request.Req_buf); issue_token(( 0 << 4 ) | DEF_USB_PID_OUT);status=wait_interrupt(); if(status==USB_INT_SUCCESS)/* 状态阶段操作成功 */ {return(1); //printf("SETUP USB_INT_SUCCESS\n"); } else return(0); } [font=黑体]文字[/font][b]文字[/b][font=宋体]文字[/font]
status=wait_interrupt();//printf("SETUP USB_INT_SUCCESS\n");
//此处获取到的状态值为2e 所以下面不能执行
if(status==USB_INT_SUCCESS)/* SETUP阶段操作成功 */
前面时对的 请问怎么解决 ?
我按每个按键都没有反应 不能得到键值 但有一个键盘能点亮灯