主程序:
main() { mInitSTDIO( );//設(shè)置波特率為9600 delayms(250); if(modify_baudrate(0x03,0xcc)!=1)err(); if(set_usb_mode( 6 )!=1)err(); #ifdef TEST_LOW_SPEED set_freq(0x01); //work in 1.5M /* 設(shè)置系統(tǒng)工作頻率 */ delayms(5); TR1 = 0; TH1 = 0xf8; /* 22.1184MHz晶振, 115200bps 修改波特率為14400*/ TR1 = 1; #endif while(1) { while ( wait_interrupt()!=USB_INT_CONNECT ); /* 等待設(shè)備端連接上來(lái) */ delayms(5); reset_device(); delayms(5); get_descr(0x01); set_addr(5); get_descr(0x02); parse_config_descr(); set_config(config_value); if(set_idle()!=1) err(); Request.Req.bmRequestType=0x81; Request.Req.bRequest=0x06; Request.Req.wValue=0x0022; Request.Req.wIndex=0x0000; Request.Req.wLength=0x0000|((unsigned int)(report_descr_len+0x40)<<8); if(get_report_descr_ex()==1) {} else err(); if(set_report()!=1) err(); delayms(250); EA=1; //打開(kāi)中斷,從中斷端點(diǎn)接收數(shù)據(jù) get_int_in(); //發(fā)送從中斷端點(diǎn)讀數(shù)據(jù)的令牌 do{ if(flag_output==1) { P1_2^=0x01; flag_output=0; } }while(1); while ( wait_interrupt()!=USB_INT_DISCONNECT ); /* 等待設(shè)備端連接上來(lái) */ } }
中斷程序:
void intt0() interrupt 2 { unsigned char len_temp,i; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ status=CH375_RD_DAT_PORT(); if(status!=USB_INT_SUCCESS) //&&((status&0xf0)==0x20)) { CH375_WR_CMD_PORT( CMD_CLR_STALL ); CH375_WR_DAT_PORT(1); endp6_mode=0x80; endp7_mode=0x80; toggle_recv(); issue_token(( endp_int << 4 ) | DEF_USB_PID_IN);//發(fā)送從中斷端點(diǎn)讀數(shù)據(jù)的令牌 } else { len_temp=rd_usb_data(data_buf); for(i=0;i!=len_temp;i++) { data_in[i]=data_buf[i]; } flag_output=1; toggle_recv(); issue_token(( endp_int << 4 ) | DEF_USB_PID_IN);//發(fā)送從中斷端點(diǎn)讀數(shù)據(jù)的令牌 } }
hcn,我想問(wèn)你,你給我的這個(gè)控制鼠標(biāo)的程序是怎么實(shí)現(xiàn)對(duì)鼠標(biāo)熱插撥的,我怎么也看不明白.
我說(shuō)一下我的理解: 在主程序的 do{ }while(1) 這個(gè)循環(huán)的是: 鼠標(biāo)有動(dòng)作,就閃一次燈. 還有就是中斷程序: 鼠標(biāo)撥出后,我想中斷程序應(yīng)該會(huì)接收到這個(gè) USB_INT_DISCONNECT 狀態(tài)碼,表明鼠標(biāo)已被撥出.
我認(rèn)為鼠標(biāo)撥出了之后,應(yīng)該要跳出主程序中那個(gè) do{ }while(1) 循環(huán),再次等待鼠標(biāo)插上,但是這個(gè)循環(huán)中沒(méi)有跳出循環(huán)的條件語(yǔ)句,我不明白了!
還有主程序的最后一句,即那個(gè)等待循環(huán)的作用是什么?
hcn,希望你能給我解釋一下!