[求助]hcn,向你求助,幫我解釋一下你們的那個(gè)控制鼠標(biāo)的程序

主程序:

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,希望你能給我解釋一下!


熱門(mén)產(chǎn)品 : USB3.0 HUB控制器:CH634

最后一句你把他去掉


hcn,麻煩你說(shuō)一下鼠標(biāo)撥去后,程序是怎樣再次等待鼠標(biāo)插上的,上面的程序我不明白.

我下面這的理解對(duì)不對(duì),麻煩你看一下: 我說(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ǔ)句,我不明白了!


hcn,你在嗎


是這樣的,在鼠標(biāo)拔出之后,375會(huì)檢測(cè)設(shè)備的拔出,會(huì)產(chǎn)生中斷,這個(gè)時(shí)候產(chǎn)生了中斷狀態(tài)是USB設(shè)備拔出的中斷狀態(tài),你可以將程序修改為查詢(xún)的方式或者是在那個(gè)死循環(huán)里面將一個(gè)中斷狀態(tài)的判斷不就可以了


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频