亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ps2.c

?? PS2和USB兼容的鼠標源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
    globle_isr_disable();
    relase_ps2_pins();
    retval=ps2_send_sbyte(mdata);
    relase_ps2_pins();
    globle_isr_enable();
    return retval;
}

/********************************************************************************/
/* function : ps2_put_hostbyte()                                                */
/* created  : hw-chen                                                           */
/* descript : PS2發送數據給主機                                                 */
/********************************************************************************/
char ps2_put_hostbyte(unsigned char mdata)
{   char retval;
    globle_isr_disable();
    relase_ps2_pins();
    retval=ps2_put_sbyte(mdata);
    relase_ps2_pins();
    globle_isr_enable();
    return retval;
}
/********************************************************************************/
/* function : ps2_pro_new_command()                                             */
/* created  : hw-chen                                                           */
/* descript : PS2處理從主機接收到的新命令                                       */
/********************************************************************************/
char ps2_pro_new_command(char type)
{   switch(type)
    {
    case PS2_CMD_RST_SCALING:
         ps2_rst_scaling();
         break;
    case PS2_CMD_SET_SCALING_2_1:
         ps2_set_scaling();
         break;
    case PS2_CMD_SET_RESOLUTION:
         ps2_set_resolution_ack();
         break;
    case PS2_CMD_STATUS_REQUEST:
         ps2_status_request();
         break;
    case PS2_CMD_SET_STREAM_MODE:
         ps2_set_stream_mode();
         break;
    case PS2_CMD_READ_DATA:
         ps2_packet_mouse_mdata();
         break;
    case PS2_CMD_RST_WRAP_MODE:
         ps2_rst_wrap_mode();
         break;
    case PS2_CMD_SET_WRAP_MODE:
         ps2_set_wrap_mode();
         break;
    case PS2_CMD_REMOTE_MODE:
         ps2_set_remote_mode();
         break;
    case PS2_CMD_READ_DEV_TYPE:
         ps2_read_device_type();
         break;
    case PS2_CMD_SET_SAMPLE_RATE:
         ps2_set_sample_rate_ack();
         break;
    case PS2_CMD_ENABLE:
         ps2_enable();
         break;
    case PS2_CMD_DISABLE:
         ps2_disable();
         break;
    case PS2_CMD_DEFAULT:
         ps2_set_default_state();
         break;
    case PS2_CMD_RESEND:
         ps2_resend();
         break;
    case PS2_CMD_RESET:
         ps2_reset();
         break;
    default:
         return 0x0;
    }
    return 0x1;
}

/********************************************************************************/
/* function : ps2_app_resolution()                                              */
/* created  : hw-chen                                                           */
/* descript : 如果主機設置了分辨率,計算在分辨率下的計數器的值                   */
/*            大多數鼠標采用了400CPI,少數羅技高端鼠標采用了800CPI.400CPI就是說  */
/*            當鼠標每移動一英吋就可反饋400個不同的坐標,換句話說                */
/*            也就是采用400CPI的鼠標可以觀察到你手部0.06毫米的微弱移動,就說明   */
/*            CPI越大,光電鼠標就越靈敏.                                         */
/*            我們用的ADNS5020有兩種CPI可選,500和1000,初始化成為1000,用作800    */
/*            1 英寸= 2.5400 厘米=25MM,那么1000/25=40個點就是移動1MM時value=40  */
/*            1 英尺= 12 英寸 = 0.3048 米                                       */
/*            0x0 <===> 1count/mm                                               */
/*            0x1 <===> 2count/mm                                               */
/*            0x2 <===> 4count/mm                                               */
/*            0x3 <===> 8count/mm                                               */
/********************************************************************************/
char ps2_app_resolution(char value)
{   char res;
    res = ps2_parameter.resolution;
    res = RES_8MM-res;
    if(res)
    {   value>>=res;
    }
    return(value);
}

/********************************************************************************/
/* function : ps2_app_scaling()                                                 */
/* created  : hw-chen                                                           */
/* descript : 如果主機啟動了SCALING操作                                         */
/********************************************************************************/
signed char ps2_app_scaling(char value)
{   if((ps2_parameter.scale==SC_1_1))
    {   return(value);
    }
    if((value==0x2))
    {   return 0x1;
    }
    if((value==-2))
    {   return -1;
    }
    if((value==0x1))
    {   return 0x1;
    }
    if((value==-1))
    {   return -1;
    }
    if((value==0x3)||(value==-3))
    {   return(value);
    }
    if((value==0x4))
    {   return 0x6;
    }
    if((value==-4))
    {	return -6;
    }
    if((value==0x5))
    {   return 0x9;
    }
    if((value==-5))
    {   return -9;
    }
    if((value>=64))
    {   return 127;
    }
    if((value<=-64))
    {   return -127;
    }
    else
    {   return(value<<1);
    }
}

/********************************************************************************/
/* function : ps2_3D_5D_mdata()                                                 */
/* created  : hw-chen                                                           */
/* descript : 組裝標準的數據報                                                  */
/********************************************************************************/
void ps2_3D_5D_mdata(void)
{   unsigned char * ptr=ps2_xmit.ps2_buffer;
    mouse_status.y_count=-mouse_status.y_count;
    ptr[0] = (mouse_status.button_byte&0x7)|0x8|((mouse_status.x_count>>0x3)&0x10)|((mouse_status.y_count>>0x2)&0x20);
    ptr[1] = mouse_status.x_count;
    ptr[2] = mouse_status.y_count;
    ps2_xmit.ps2_xmit=ps2_xmit.ps2_length=0x3;//* send the buffer
    mouse_status.change_flag=0x0;
    mouse_status.x_count=0x0;
    mouse_status.y_count=0x0;
    mouse_status.z_count=0x0;
}

/********************************************************************************/
/* function : ps2_packet_mouse_mdata()                                          */
/* created  : hw-chen                                                           */
/* descript : 組裝一個IBM格式的數據包給主機                                     */
/********************************************************************************/
void ps2_packet_mouse_mdata(void)
{   ps2_3D_5D_mdata();
}

/********************************************************************************/
/* function : ps2_check_zmouse()                                                */
/* created  : hw-chen                                                           */
/* descript : 要進入滾輪模式,主機應該發送如下的命令序列                         */
/*      1.set sample rate 200                                                   */
/*      2.set sample rate 100 或者 200                                          */
/*      3.set sample rate 80                                                    */
/*      這個函數必須在受到設置采樣率時調用                                      */
/********************************************************************************/
unsigned char check_wheel_steps=0x0;
void ps2_check_3D_function(char rate)
{   if((check_wheel_steps==0x1)&&(rate==100))
    {   check_wheel_steps=0x2;          //* 3D <==> 200 100 80
    }
    else if((check_wheel_steps==0x2)&&(rate==80))
    {   ps2_parameter.zmouse=0x1;       //* 3D檢查成功
        check_wheel_steps=0x0;
    }
    else
    {   check_wheel_steps=0x0;
    }
}
void ps2_check_5D_function(char rate)
{   if((check_wheel_steps==0x1)&&(rate==200))
    {   check_wheel_steps=0x2;          //* 3D <==> 200 200 80
    }
    else if((check_wheel_steps==0x2)&&(rate==80))
    {   ps2_parameter.zmouse=0x2;       //* 5D檢查成功
        check_wheel_steps=0x0;
    }
    else
    {   check_wheel_steps=0x0;
    }
}
void ps2_check_zmouse(char rate)
{   if((rate==200)&&(check_wheel_steps==0x0))
    {   check_wheel_steps=0x1;          //* 功能檢查開始
        return;
    }
    if((ps2_parameter.zmouse=0x0))      //* 檢查3D功能鼠標
    {   ps2_check_3D_function(rate);
    }
    else if((ps2_parameter.zmouse=0x1))
    {   ps2_check_5D_function(rate);
    }
    else
    {   check_wheel_steps=0x0;          //* 復位檢查序列
    }
}

/********************************************************************************/
/* function : ps2_pro_host_command()                                            */
/* created  : hw-chen                                                           */
/* descript : 處理主機發送過來的命令                                            */
/********************************************************************************/
void ps2_pro_host_command(char command)
{   char i;
    /****************************************************************************/
    /* WRAP模式,一般用于鼠標測試 */
    /****************************************************************************/
    if((ps2_parameter.wrap))
    {   ps2_last_valid_cmd=0x0;
        if((command!=PS2_CMD_RESET)&&(command!=PS2_CMD_RST_WRAP_MODE))
        {   ps2_put_hostbyte(command);      //* simply send what we received
            return;
        }
    }
    /****************************************************************************/
    /* 根據上一個命令來處理 */
    /****************************************************************************/
    switch (ps2_last_valid_cmd)
    {
    case PS2_CMD_SET_SAMPLE_RATE:                   //* last command byte  was set sample rate, so this must be
        if((ps2_set_sample_rate(command))==PS2_ACK) //* the rate itself. if the rate is valid,
        {   ps2_put_hostbyte(PS2_ACK);              //* ack it
            ps2_last_valid_cmd=0x0;                 //* reset ps2_last_valid_cmd
            ps2_error_flag=0x0;                     //* clear the error count
            ps2_check_zmouse(command);              //* check for z-mouse enabling
            return;                                 //* and return
        }
        break;

    case PS2_CMD_SET_RESOLUTION:
        if((ps2_set_resolution(command))==PS2_ACK)  //* last command was set resolution, so this must be
        {   ps2_put_hostbyte(PS2_ACK);              //* ack it
            ps2_last_valid_cmd=0x0;                 //* reset ps2_last_valid_cmd
            ps2_error_flag=0x0;                     //* clear the error count
            return;                                 //* and return
        }
        break;

    /****************************************************************************/
    /* 處理新接收到的數據,如果接收到新數據,放棄所有等待發送的數據 */
    /****************************************************************************/
    default:
        ps2_xmit.ps2_xmit=0x0;
        if((command!=PS2_CMD_SET_SAMPLE_RATE))      //if the command is not set sample rate, reset
        {   check_wheel_steps=0x0;            //the count of consecutive set sample rate commands received.
        }
        ps2_put_hostbyte(PS2_ACK);              //this command is a valid one, so ack it
        ps2_last_valid_cmd=command;                 //save it
        ps2_error_flag=0x0;
        if(ps2_pro_new_command(command))            //* 如果新命令正確,直接返回,否則出錯統計
        {   return;
        }
        break;
    }
    ps2_error_flag+=0x1;        //* if we get here, the command was not recognized
    if((ps2_error_flag>=0x2))   //* 如果多次錯誤,發送PS2_ERROR
    {   ps2_put_hostbyte(PS2_ERROR);
        ps2_last_valid_cmd = 0x0;
        ps2_error_flag = 0x0;
        return;
    }
    else                        //* 一次錯誤,重新發送
    {   ps2_put_hostbyte(PS2_RESEND);
        return;
    }
}

/********************************************************************************/
/* function : ps2_reset()                                                       */
/* created  : hw-chen                                                           */
/* descript : 復位PS2鼠標                                                       */
/********************************************************************************/
void ps2_reset(void)
{   ps2_set_default_state();
    ps2_pro_bat();
}

/********************************************************************************/
/* function : ps2_resend()                                                      */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区三区电影在线观看| 9人人澡人人爽人人精品| 蜜臀精品一区二区三区在线观看| 日韩精品三区四区| 免费高清成人在线| 国产成人av影院| 一本色道亚洲精品aⅴ| 精品视频1区2区| 国产日韩精品视频一区| 亚洲日本在线天堂| 国产精品午夜免费| 性久久久久久久久| 成人黄色国产精品网站大全在线免费观看 | 91久久香蕉国产日韩欧美9色| 欧美亚洲高清一区二区三区不卡| 日韩一卡二卡三卡四卡| 亚洲精品成人精品456| 国产高清不卡二三区| 欧美三级在线视频| 亚洲天堂2016| 国产91在线观看丝袜| 日韩一区二区三区免费看| 亚洲人成精品久久久久| 国产69精品久久久久777| 精品欧美一区二区三区精品久久| 亚洲欧美偷拍三级| av一区二区不卡| 久久嫩草精品久久久精品| 美女任你摸久久| 日韩欧美久久一区| 蜜桃视频免费观看一区| 91精品国产一区二区三区香蕉| 亚洲影院在线观看| 欧美丝袜丝nylons| 丝袜亚洲另类欧美综合| 精品视频色一区| 秋霞影院一区二区| 欧美电影免费观看高清完整版在线观看| 亚洲曰韩产成在线| 欧美亚洲国产bt| 久久精品久久精品| 国产免费成人在线视频| 97se亚洲国产综合自在线| 最近日韩中文字幕| 欧美日韩一区小说| 秋霞电影一区二区| 欧美一区日韩一区| 国产激情视频一区二区三区欧美 | 午夜视频一区二区| 欧美精品一区二区在线播放| 成人av电影在线观看| 亚洲一级电影视频| 久久日一线二线三线suv| www.色综合.com| 视频一区二区三区在线| 国产精品欧美经典| 91精品国产综合久久久久久久 | 国产欧美日韩另类一区| 欧美精品国产精品| 99久久国产综合精品女不卡| 日本不卡中文字幕| 亚洲免费观看在线视频| 337p日本欧洲亚洲大胆色噜噜| 波多野结衣在线一区| 日本亚洲三级在线| 亚洲成a人在线观看| 亚洲欧美日韩久久精品| 国产性色一区二区| 91精品国产综合久久香蕉的特点 | 日本aⅴ精品一区二区三区| 中文字幕av一区二区三区高| 日韩欧美久久久| 91精品国产美女浴室洗澡无遮挡| 色嗨嗨av一区二区三区| 一本到三区不卡视频| 91啪亚洲精品| 色综合久久天天综合网| av激情综合网| 91视频com| 在线视频一区二区三| 91麻豆国产在线观看| 精品一区二区在线播放| 激情图片小说一区| 国产麻豆日韩欧美久久| 成人午夜伦理影院| 97久久精品人人做人人爽| 色94色欧美sute亚洲线路一久| 色综合中文字幕国产| 成人av手机在线观看| 色999日韩国产欧美一区二区| 欧美欧美午夜aⅴ在线观看| 欧美久久免费观看| 精品国产网站在线观看| 国产精品久久久久久久午夜片| 国产精品色眯眯| 丝袜美腿成人在线| 成人自拍视频在线| 欧美精品电影在线播放| 国产调教视频一区| 性做久久久久久免费观看| 国产精品影视天天线| 99精品黄色片免费大全| 日韩午夜av电影| 综合在线观看色| 国产一区 二区 三区一级| 91论坛在线播放| 久久精品视频免费观看| 日韩国产在线一| 91网上在线视频| 久久久久久亚洲综合| 日韩高清电影一区| 欧美视频三区在线播放| 国产精品欧美一区喷水| 麻豆精品一区二区av白丝在线| 国产成都精品91一区二区三| 日韩亚洲国产中文字幕欧美| 婷婷综合五月天| 欧美日韩不卡一区二区| 亚洲午夜久久久久中文字幕久| 成人黄色大片在线观看| 国产精品人成在线观看免费| 国产精品影视网| 精品电影一区二区三区| 国产一区二区三区免费播放| 在线成人免费视频| 免费成人在线网站| 久久一夜天堂av一区二区三区| 激情综合网天天干| 久久婷婷综合激情| 成人av影院在线| 亚洲综合成人在线| 欧美精品在线视频| 精品制服美女久久| 亚洲国产精品成人综合 | 1000精品久久久久久久久| 色综合久久久久综合体| 亚洲福利国产精品| 欧美大尺度电影在线| 国产在线精品一区二区夜色| 国产亚洲欧美日韩在线一区| 成人av小说网| 久久精品国产在热久久| 中文字幕亚洲电影| 日韩一级大片在线| 色综合中文字幕国产 | 成人av动漫在线| 亚洲成av人片| 国产区在线观看成人精品| 日本二三区不卡| 懂色av噜噜一区二区三区av| 性做久久久久久| 中文字幕一区二区三区视频| 欧美精品vⅰdeose4hd| 成人国产精品免费观看| 日韩主播视频在线| 亚洲婷婷在线视频| 久久久电影一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 美女在线视频一区| 亚洲一区在线视频| 日本一区二区不卡视频| 欧美一级在线观看| 欧美日韩精品一区二区天天拍小说| 国产99一区视频免费| 国产激情91久久精品导航| 国内精品久久久久影院一蜜桃| 视频一区二区中文字幕| 欧美aaaaaa午夜精品| 蜜臀av国产精品久久久久| 日本v片在线高清不卡在线观看| 夜夜操天天操亚洲| 一区二区免费在线播放| 亚洲免费av高清| 日韩和欧美一区二区三区| 免费在线一区观看| 国产久卡久卡久卡久卡视频精品| 韩国三级在线一区| 成人午夜激情视频| 在线免费观看日本一区| 欧美性猛片xxxx免费看久爱| 7777精品伊人久久久大香线蕉经典版下载| 欧美日韩美少妇| 欧美变态tickling挠脚心| 久久精品水蜜桃av综合天堂| 亚洲视频免费在线观看| 亚洲国产sm捆绑调教视频| 久草这里只有精品视频| av不卡免费在线观看| 欧美精品日韩一区| 久久精品欧美一区二区三区不卡| 亚洲欧美日韩一区| 国产成人精品免费| 337p亚洲精品色噜噜狠狠| 久久看人人爽人人| 麻豆91免费观看| 欧美高清视频在线高清观看mv色露露十八| 日韩免费在线观看| 亚洲va韩国va欧美va精品| 成人国产在线观看| 国产日韩精品一区二区三区|