CH372 的 USB HID类键盘,如果响应上位机?现在子程序执行的时间比较长,很容易造成死机,USB HID类键盘要求多长时间内必须响应一次?程序如下:
main( ) { unsigned char i,time,k; unsigned char real_data[11]; //需要上传的数据缓冲区
unsigned char data_flag=0; //有无数据标志 unsigned char idata ucsenddata[11]; unsigned char code uckeycode1[11]={ 0x62 //0 ,0x59 //1 ,0x5a //2 ,0x5b //3 ,0x5c //4 ,0x5d //5 ,0x5e //6 ,0x5f //7 ,0x60 //8 ,0x61 //9 ,0x58 //回车 };
Delay50ms( ); // 延时等待CH375初始化完成,如果单片机由CH375提供复位信号则不必延时 // //mInitSTDIO( ); CH375_Init( ); // 初始化CH375 // // EA=1;
myprogram(); // 子程序,运行的时间可能200毫秒 up_time=0; time=0;k=0; for(i=0;i<8;i++) buf[i]=0;
while(1){ // 主程序 //
if (data_flag==0)//检测到数据输入,开发上传 { real_data[0]=0x62; //0 real_data[1]=0x62; //0 real_data[2]=0x5e; //6 real_data[3]=0x5d; //5 real_data[4]=0x5b; //3 real_data[5]=0x5a; //2 real_data[6]=0x59; //1 real_data[7]=0x5a; //2 real_data[8]=0x5e; //6 real_data[9]=0x61; //9 real_data[10]=0x58; //回迭 data_flag=1; //有按键按下,置标志1 //goto SEND;
//up_data( ); up_time=0; time=0;k=0; for(i=0;i<8;i++) buf[i]=0; up_data( ); data_flag=0; up_time=0; SPK_P=0; RED_LED=1; GREEN_LED=0; Delay50ms( ); Delay50ms( ); RED_LED=0; GREEN_LED=1; Delay50ms( ); Delay50ms( );
SPK_P=1; //data_flag=1; //有按键按下,置标志1 //PcdHalt(); //goto SEND; }
if(CH375_INT_WIRE == 0){ mCH375Interrupt( );
if((UPDATA_FLAG==0x01)&&(k<=1)){ //先发八个字节的0包,相当于确保按键的取消 for(i=0;i<8;i++) buf[i]=0; up_data( ); k++; }
else { if((UPDATA_FLAG==0x01)&&(time%2==1)){ //按键按下 if(up_time<=10){ // printf("%d\n",(unsigned short)up_time); buf[2]=real_data[up_time]; //发送八个字节,相当于发送1个按键 up_data( ); up_time++; } } else if((UPDATA_FLAG==0x01)&&(time%2==0)){ //按键取消 for(i=0;i<8;i++) buf[i]=0; up_data( ); } time++; }
//if(up_time==11) up_time=0; //循环上传 if(up_time==11) { up_time=0;} //循环上传
} } }