久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: stc89單片機(jī)模擬鼠標(biāo)單擊的程序問題 [打印本頁]

作者: loveps2    時間: 2017-11-1 10:55
標(biāo)題: stc89單片機(jī)模擬鼠標(biāo)單擊的程序問題
因?yàn)槭菃纹瑱C(jī)新手,在網(wǎng)上找了一段程序,是基于stc12系列的,在網(wǎng)上查了一下,修改了延時函數(shù)和端口定義,還是沒有辦法讓電腦識別,現(xiàn)在貼出原程序,請大神指點(diǎn)一下,感激不盡。搗鼓了兩天了,因?yàn)閷φ{(diào)試也不太懂,不知道怎么交互,每次改了后下載、插上電腦實(shí)驗(yàn)/************************************************************/   
/*文件名稱:單片機(jī)模擬PS/2鼠標(biāo)程序                          */                                
/*作 者:蔣毅                                               */   
/*版 本:2008-6                                             */   
/*說 明:                                                  */   
/*修改記錄:                                                 */   
/************************************************************/   
#include <stc12c5412ad.h>   
#include <intrins.h>   
#define uchar unsigned char   
#define uint  unsigned int   
/******************常用命令及參數(shù)定義************************/   
//EEPROM   
#define isp_read         1   
#define isp_program      2   
#define isp_erase        3   
#define isp_con          0x80   
#define ADDRESSH         0X10   
#define ADDRESSL         0X00   

//HOST-->MOUSE   
#define DISABLE_SEND     0XF5   //disable data reprorting   
#define ENABLE_SEND      0XF4   //enable data reprorting   
#define RESET            0XFF   //reset   
#define GETID            0XF2   //get device id   
#define SATATUS_REQUEST  0XE9   //datatus request   
#define HMRESEND         0XFE   //host ask mouse resend   
#define ERROR            0X55   //receive eeror   

//MOUSE-->HOST   
#define ANSWERER         0XFA   //answerer   
#define ID               0X00   //device id   
#define BAT              0XAA   //bat   
#define RESEND           0XFE   //resend   
#define SATATUS3         0X02   //satatus3   
#define SATATUS4         0X64   //satatus4   
#define DATABAG          0x08;     

/***********************引腳定義*****************************/   
sbit  mouse_clk=P1^0;   
sbit  mouse_data=P1^1;   
sbit  ms1=P1^5;   
sbit  ms2=P1^6;   
sbit  ctls=P3^4;   
/***********************全局變量*****************************/   
uchar flag_send=0;//允許發(fā)送標(biāo)志位   
uchar buffer=0;//命令緩沖單元   
/***********************函數(shù)聲明*****************************/   
extern void delay1us(uchar i);   
//*********************讀EEPROM一字節(jié)************************/   
uchar read_byte_eeprom(uchar addth,addtl)   
{   
uchar temp_data;   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_read;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
temp_data=ISP_DATA;   
EA=1;   
return temp_data;   
}   
//*********************寫EEPROM一字節(jié)***********************/   
void program_byte_eeprom(uchar temp_data, addth,addtl)   
{   
ISP_DATA=temp_data;   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_program;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
EA=1;   
}   
//********************擦除EEPROM一扇區(qū)子函數(shù)*****************/   
void erase_sector_eeprom(uchar addth,addtl)   
{   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_erase;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
EA=1;   
}   
/*******************ms級延時子函數(shù)***************************/   
void delay(uint k)         
{   
uint i;   
while(k--)   
  {   
   for(i=0;i<1200;i++);   
  }   
}   
/****************ps/2發(fā)送單個位到PC函數(shù)**********************/   
void send_bit(bit senbit)   
{   
mouse_data=senbit; //設(shè)置/復(fù)位數(shù)據(jù)   
delay1us(21);      //延遲20us   
mouse_clk=0;       //將時鐘拉低   
delay1us(43);      //延遲40us   
mouse_clk=1;       //釋放時鐘   
}   
/***************ps/2發(fā)送單個字節(jié)到PC函數(shù)*********************/   
void send_byte(uchar tmp)   
{   
uchar i;   
uchar temp,check;   
temp=0;   
check=0;   
while(!mouse_clk);//等待CLK為高   
delay1us(54);//延時50us   
if(mouse_clk)//判斷CLK是否為高,是:發(fā)送,否:放棄,轉(zhuǎn)到接收程序   
  {   
   delay1us(21);//延時20us   
   for(i=0;i<11;i++)   
    {   
     delay1us(21);//延時20us   
     if(i==0) send_bit(0);//發(fā)送起始位0   
     else   
      {   
       if(i>=1&&i<9)//發(fā)送數(shù)據(jù)位   
        {   
         temp=tmp;   
         temp>>=(i-1);   
         temp=temp&0x01;   
         if(temp==0x01){send_bit(1);check++;}   
         else send_bit(0);   
        }   
       else   
         {   
         if(i==9)//發(fā)送校驗(yàn)位   
          {   
           check=check&0x01;   
           if(check==0x01) send_bit(0);//奇校驗(yàn)   
           else send_bit(1);   
          }   
         else send_bit(1);//發(fā)送停止位   
         }   
        }   
     if(mouse_clk==1) continue;//判斷時鐘是否被主機(jī)拉低,是-放棄發(fā)送   
     else break;   
    }   
    delay1us(32);//延時30us   
  }   
}   
/********************ps/2接收PC單個位函數(shù)********************/   
bit receive_bit()   
{   
bit tbit;   
tbit=0;   
delay1us(21);    //延遲20us   
mouse_clk=0;     //把時鐘線拉低   
delay1us(43);    //延遲40us   
mouse_clk=1;     //釋放時鐘   
delay1us(21);    //延遲20us   
tbit=mouse_data; //讀取數(shù)據(jù)   
return tbit;     //返回數(shù)據(jù)   
}   
/**********************ps/2輸出應(yīng)答位函數(shù)********************/   
void send_answerer()   
{   
delay1us(16);//延遲15us   
mouse_data=0;//把數(shù)據(jù)線拉低   
delay1us(5); //延遲5us   
mouse_clk=0; //把時鐘線拉低   
delay1us(43);//延遲40us   
mouse_clk=1; //釋放時鐘線   
delay1us(5); //延遲5us   
mouse_data=1;//釋放數(shù)據(jù)線   
}   
/*******************ps/2接收PC單個字節(jié)函數(shù)*******************/   
uchar receive_byte()   
{   
uchar i,temp,rdata,check;   
bit tmp,check_bit;   
tmp=0;   
check_bit=0;   
temp=0;   
rdata=0;   
check=0;   
while(!mouse_clk);//等待時鐘為高   
if(!mouse_data)//判斷數(shù)據(jù)線為低,是-接收,否-有錯誤發(fā)生,放棄   
  {   
   for(i=0;i<10;i++)//接收8個數(shù)據(jù)位,校驗(yàn)位,停止位   
    {   
     if(i>=0&&i<8)//讀入8個數(shù)據(jù)位   
      {   
       tmp=receive_bit();   
       if(tmp==1) check++;   
       temp=(uchar)tmp;   
       temp<<=i;   
       rdata=rdata|temp;        
      }   
     else if(i==8)//讀入校驗(yàn)位   
       check_bit=receive_bit();   
     else //讀入停止位   
      tmp=receive_bit();   
     if(mouse_clk==1) continue;//判斷時鐘是否被主機(jī)拉低,是-放棄接收   
     else return 0x55;   
    }   
   /*判斷停止位是否為1,否,產(chǎn)生一錯誤標(biāo)志*/   
   if(!mouse_data) //否   
    {   
     while(!mouse_data);   
     return 0x55;   
    }   
   else //停止位為1   
    {   
     send_answerer();//輸出應(yīng)答位   
     check=(check+(uchar)check_bit)&0x01;   
     if(check==0)//檢查校驗(yàn)位   
       return 0x55;//校驗(yàn)錯誤   
     else  return rdata;//返回收到的命令   
    }   
   }   
else return 0x55;   
}   
/***********************鍵盤掃描函數(shù)*************************/   
void keyscan()   
{   
uchar i,databag;   
uchar scancode,tmp;   
tmp=0x01;   
scancode=0;   
databag=0;   
if(flag_send)//判斷是否允許數(shù)據(jù)報告   
{   
if((P1&0x1c)!=0x1c)//判斷是否有鍵按下   
  {   
   delay(20);//延時消抖   
   if((P1&0x1c)!=0x1c)   
    {   
     ctls=0;//打開激光頭   
     scancode=0x04;//逐鍵掃描   
     for(i=0;i<3;i++)   
      {   
       if((P1&scancode)!=scancode)//有鍵按下,置相應(yīng)標(biāo)志位為1   
        {   
         tmp<<=i;   
         databag=databag|tmp;   
         scancode<<=1;   
        }   
       else scancode<<=1;   
      }   
     delay(50);//延時50ms   
     send_byte(databag);   
     send_byte(ID);// 發(fā)送位移按鍵數(shù)據(jù)包   
     send_byte(ID);   
     databag=DATABAG;   
     if(ms1==1&&ms2==1)//持續(xù)按常亮無效   
      {   
       ctls=1;//關(guān)閉激光頭   
       while((P1&0x1c)!=0x1c)//判鍵盤釋放   
       WDT_CONTR=0X3E;//喂狗   
       send_byte(databag);// 發(fā)送位移按鍵數(shù)據(jù)包   
       send_byte(ID);   
       send_byte(ID);   
      }   
     else if(ms1==0&&ms2==1)//持續(xù)按常亮有效   
      {   
       while((P1&0x1c)!=0x1c)//判鍵盤釋放   
       WDT_CONTR=0X3E;//喂狗   
       ctls=1;//關(guān)閉激光頭   
       send_byte(databag);// 發(fā)送位移按鍵數(shù)據(jù)包   
       send_byte(ID);   
       send_byte(ID);   
      }   
     else//常亮   
      {   
       while((P1&0x1c)!=0x1c)//判鍵盤釋放   
       WDT_CONTR=0X3E;//喂狗   
       send_byte(databag);// 發(fā)送位移按鍵數(shù)據(jù)包   
       send_byte(ID);   
       send_byte(ID);   
      }   
     }   
   }   
  }   
}   
/***********************處理主機(jī)命令函數(shù)*********************/   
void manage(uchar ljmp)   
{   
switch(ljmp)   
  {   
   case RESET:         //主機(jī)通知MOUSE復(fù)位     
   send_byte(ANSWERER);   
   send_byte(BAT);   
   send_byte(ID);   
   buffer=ID;   
   break;   

   case GETID:         //主機(jī)通知MOUSE獲得ID   
   send_byte(ANSWERER);   
   send_byte(ID);   
   buffer=ID;   
   break;   

   case ENABLE_SEND :    //使能數(shù)據(jù)報告   
   send_byte(ANSWERER);   
   buffer=ANSWERER;   
   flag_send=1;   
   erase_sector_eeprom(ADDRESSH,ADDRESSL);   
   program_byte_eeprom(0X01,ADDRESSH,ADDRESSL);   
   break;   

   case DISABLE_SEND :   
   send_byte(ANSWERER);//禁止數(shù)據(jù)報告   
   buffer=ANSWERER;   
   flag_send=0;   
   erase_sector_eeprom(ADDRESSH,ADDRESSL);   
   break;      

   case SATATUS_REQUEST://主機(jī)通知MOUSE告訴狀態(tài)信息   
   send_byte(ANSWERER);   
   send_byte(ID);   
   send_byte(SATATUS3);   
   send_byte(SATATUS4);   
   buffer=SATATUS4;   
   break;   

   case ERROR:         //MOUSE接收錯誤,通知主機(jī)重發(fā)   
   send_byte(RESEND);   
   buffer=RESEND;   
   break;      

   default:            //其它命令,都用0XFA回應(yīng)   
   send_byte(ANSWERER);   
   buffer=ANSWERER;   
   break;      
  }   
}                       
/*************************主函數(shù)*****************************/   
void main()   
{   
uchar order;   
delay(500);//延時500ms   
send_byte(BAT);   
send_byte(ID);   
flag_send=read_byte_eeprom(ADDRESSH,ADDRESSL);   
WDT_CONTR=0X3E;//看門狗初始化   
while(1)   
  {   
   keyscan();   
   if(!mouse_data)   
    {   
    order=receive_byte();   
    manage(order);   
    }   
   WDT_CONTR=0X3E;//喂狗         
  }   
}   



作者: loveps2    時間: 2017-11-2 10:17
怎么調(diào)試交互,自己頂一下,希望有人指點(diǎn)。貼出來我改過的代碼。

/************************************************************/   
/*文件名稱:單片機(jī)模擬PS/2鼠標(biāo)程序                          */                                
/*作 者:蔣毅                                               */   
/*版 本:2008-6                                             */   
/*說 明:                                                  */   
/*修改記錄:                                                 */   
/************************************************************/   
#include <STC12C5410AD.H>     
#include <intrins.h>   
#define uchar unsigned char   
#define uint  unsigned int   
/******************常用命令及參數(shù)定義************************/   
//EEPROM   
#define isp_read         1   
#define isp_program      2   
#define isp_erase        3   
#define isp_con          0x80   
#define ADDRESSH         0X10   
#define ADDRESSL         0X00   
   
//HOST-->MOUSE   
#define DISABLE_SEND     0XF5   //disable data reprorting   
#define ENABLE_SEND      0XF4   //enable data reprorting   
#define RESET            0XFF   //reset   
#define GETID            0XF2   //get device id   
#define SATATUS_REQUEST  0XE9   //datatus request   
#define HMRESEND         0XFE   //host ask mouse resend   
#define ERROR            0X55   //receive eeror   
   
//MOUSE-->HOST   
#define ANSWERER         0XFA   //answerer   
#define ID               0X00   //device id   
#define BAT              0XAA   //bat   
#define RESEND           0XFE   //resend   
#define SATATUS3         0X02   //satatus3   
#define SATATUS4         0X64   //satatus4
#define LBUTTONDOWN            0X09   //left button down
#define LBUTTONUP        0X08   //left button up
#define DATABAG          0x08;     
   
/***********************引腳定義*****************************/   
sbit  mouse_clk=P3^3;   
sbit  mouse_data=P3^5;   
sbit  ms1=P1^0;   
//sbit  ms2=P1^6;   
//sbit  ctls=P3^4;   
/***********************全局變量*****************************/   
uchar flag_send=0;//允許發(fā)送標(biāo)志位   
uchar buffer=0;//命令緩沖單元   
/***********************函數(shù)聲明*****************************/   
void delay10us(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=1;b>0;b--)
        for(a=1;a>0;a--);
}
void delay5us(void)   //誤差 0us
{
    _nop_();  //if Keil,require use intrins.h
}
void delay20us(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=3;b>0;b--)
        for(a=1;a>0;a--);
}
void delay50us(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=9;b>0;b--)
        for(a=1;a>0;a--);
}  
//*********************讀EEPROM一字節(jié)************************/   
uchar read_byte_eeprom(uchar addth,addtl)   
{   
uchar temp_data;   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_read;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
temp_data=ISP_DATA;   
EA=1;   
return temp_data;   
}   
//*********************寫EEPROM一字節(jié)***********************/   
void program_byte_eeprom(uchar temp_data, addth,addtl)   
{   
ISP_DATA=temp_data;   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_program;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
EA=1;   
}   
//********************擦除EEPROM一扇區(qū)子函數(shù)*****************/   
void erase_sector_eeprom(uchar addth,addtl)   
{   
ISP_ADDRH=addth;   
ISP_ADDRL=addtl;   
EA=0;   
ISP_CONTR=isp_con;   
ISP_CMD=isp_erase;   
ISP_TRIG=0x46;   
ISP_TRIG=0xB9;   
EA=1;   
}   
/*******************ms級延時子函數(shù)***************************/   
void delay50ms(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=165;b>0;b--)
        for(a=150;a>0;a--);
}
void delay20ms(void)   //誤差 0us
{
    unsigned char a,b;
    for(b=215;b>0;b--)
        for(a=45;a>0;a--);
}
void delay500ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=205;c>0;c--)
        for(b=116;b>0;b--)
            for(a=9;a>0;a--);
}
/****************ps/2發(fā)送單個位到PC函數(shù)**********************/   
void send_bit(bit senbit)   
{   
mouse_data=senbit; //設(shè)置/復(fù)位數(shù)據(jù)   
delay20us();      //延遲20us   
mouse_clk=0;       //將時鐘拉低   
delay20us();  
delay20us();    //延遲40us   
mouse_clk=1;       //釋放時鐘   
}   
/***************ps/2發(fā)送單個字節(jié)到PC函數(shù)*********************/   
void send_byte(uchar tmp)   
{   
uchar i;   
uchar temp,check;   
temp=0;   
check=0;   
while(!mouse_clk);//等待CLK為高   
delay50us();//延時50us   
if(mouse_clk)//判斷CLK是否為高,是:發(fā)送,否:放棄,轉(zhuǎn)到接收程序   
  {   
   delay20us();//延時20us   
   for(i=0;i<11;i++)   
    {   
     delay20us();//延時20us   
     if(i==0) send_bit(0);//發(fā)送起始位0   
     else   
      {   
       if(i>=1&&i<9)//發(fā)送數(shù)據(jù)位   
        {   
         temp=tmp;   
         temp>>=(i-1);   
         temp=temp&0x01;   
         if(temp==0x01){send_bit(1);check++;}   
         else send_bit(0);   
        }   
       else   
         {   
         if(i==9)//發(fā)送校驗(yàn)位   
          {   
           check=check&0x01;   
           if(check==0x01) send_bit(0);//奇校驗(yàn)   
           else send_bit(1);   
          }   
         else send_bit(1);//發(fā)送停止位   
         }   
        }   
     if(mouse_clk==1) continue;//判斷時鐘是否被主機(jī)拉低,是-放棄發(fā)送   
     else break;   
    }   
    delay20us();
        delay10us();//延時30us   
  }   
}   
/********************ps/2接收PC單個位函數(shù)********************/   
bit receive_bit()   
{   
bit tbit;   
tbit=0;   
delay20us();    //延遲20us   
mouse_clk=0;     //把時鐘線拉低   
delay20us();
delay20us();    //延遲40us   
mouse_clk=1;     //釋放時鐘   
delay20us();    //延遲20us   
tbit=mouse_data; //讀取數(shù)據(jù)   
return tbit;     //返回數(shù)據(jù)   
}   
/**********************ps/2輸出應(yīng)答位函數(shù)********************/   
void send_answerer()   
{   
delay10us();
delay5us();//延遲15us   
mouse_data=0;//把數(shù)據(jù)線拉低   
delay5us(); //延遲5us   
mouse_clk=0; //把時鐘線拉低   
delay20us();
delay20us();//延遲40us   
mouse_clk=1; //釋放時鐘線   
delay5us(); //延遲5us   
mouse_data=1;//釋放數(shù)據(jù)線   
}   
/*******************ps/2接收PC單個字節(jié)函數(shù)*******************/   
uchar receive_byte()   
{   
uchar i,temp,rdata,check;   
bit tmp,check_bit;   
tmp=0;   
check_bit=0;   
temp=0;   
rdata=0;   
check=0;   
while(!mouse_clk);//等待時鐘為高   
if(!mouse_data)//判斷數(shù)據(jù)線為低,是-接收,否-有錯誤發(fā)生,放棄   
  {   
   for(i=0;i<10;i++)//接收8個數(shù)據(jù)位,校驗(yàn)位,停止位   
    {   
     if(i>=0&&i<8)//讀入8個數(shù)據(jù)位   
      {   
       tmp=receive_bit();   
       if(tmp==1) check++;   
       temp=(uchar)tmp;   
       temp<<=i;   
       rdata=rdata|temp;        
      }   
     else if(i==8)//讀入校驗(yàn)位   
       check_bit=receive_bit();   
     else //讀入停止位   
      tmp=receive_bit();   
     if(mouse_clk==1) continue;//判斷時鐘是否被主機(jī)拉低,是-放棄接收   
     else return 0x55;   
    }   
   /*判斷停止位是否為1,否,產(chǎn)生一錯誤標(biāo)志*/   
   if(!mouse_data) //否   
    {   
     while(!mouse_data);   
     return 0x55;   
    }   
   else //停止位為1   
    {   
     send_answerer();//輸出應(yīng)答位   
     check=(check+(uchar)check_bit)&0x01;   
     if(check==0)//檢查校驗(yàn)位   
       return 0x55;//校驗(yàn)錯誤   
     else  return rdata;//返回收到的命令   
    }   
   }   
else return 0x55;   
}   
/***********************鍵盤掃描函數(shù)*************************/   
void keyscan()   
{   
// uchar i;           
if(flag_send)//判斷是否允許數(shù)據(jù)報告   
{   
if(ms1==0)//判斷是否有鍵按下   
  {   
   delay20ms();//延時消抖   
   if(ms1==0)   
    {   
     delay50ms();//延時50ms   
     send_byte(LBUTTONDOWN);   
     send_byte(ID);// 發(fā)送位移按鍵數(shù)據(jù)包   
     send_byte(ID);
         }
   }        
   else  
   {   
      delay20ms();//延時消抖   
      if(ms1==1)   
      {   
       delay50ms();//延時50ms   
       send_byte(LBUTTONUP);   
       send_byte(ID);// 發(fā)送位移按鍵數(shù)據(jù)包   
       send_byte(ID);
          }   
   }   
  }   
}   
/***********************處理主機(jī)命令函數(shù)*********************/   
void manage(uchar ljmp)   
{   
switch(ljmp)   
  {   
   case RESET:         //主機(jī)通知MOUSE復(fù)位     
   send_byte(ANSWERER);   
   send_byte(BAT);   
   send_byte(ID);   
   buffer=ID;   
   break;   
   
   case GETID:         //主機(jī)通知MOUSE獲得ID   
   send_byte(ANSWERER);   
   send_byte(ID);   
   buffer=ID;   
   break;   
   
   case ENABLE_SEND :    //使能數(shù)據(jù)報告   
   send_byte(ANSWERER);   
   buffer=ANSWERER;   
   flag_send=1;   
   erase_sector_eeprom(ADDRESSH,ADDRESSL);   
   program_byte_eeprom(0X01,ADDRESSH,ADDRESSL);   
   break;   
   
   case DISABLE_SEND :   
   send_byte(ANSWERER);//禁止數(shù)據(jù)報告   
   buffer=ANSWERER;   
   flag_send=0;   
   erase_sector_eeprom(ADDRESSH,ADDRESSL);   
   break;      
   
   case SATATUS_REQUEST://主機(jī)通知MOUSE告訴狀態(tài)信息   
   send_byte(ANSWERER);   
   send_byte(ID);   
   send_byte(SATATUS3);   
   send_byte(SATATUS4);   
   buffer=SATATUS4;   
   break;   
   
   case ERROR:         //MOUSE接收錯誤,通知主機(jī)重發(fā)   
   send_byte(RESEND);   
   buffer=RESEND;   
   break;      
   
   default:            //其它命令,都用0XFA回應(yīng)   
   send_byte(ANSWERER);   
   buffer=ANSWERER;   
   break;      
  }   
}                       
/*************************主函數(shù)*****************************/  
void main()   
{   
uchar order;  
delay500ms();//延時500ms   
send_byte(BAT);   
send_byte(ID);   
flag_send=read_byte_eeprom(ADDRESSH,ADDRESSL);   
WDT_CONTR=0X3E;//看門狗初始化   
while(1)   
  {   
   keyscan();   
   if(!mouse_data)   
    {   
    order=receive_byte();   
    manage(order);   
    }   
   WDT_CONTR=0X3E;//喂狗         
  }   
}   
   
作者: loveps2    時間: 2017-11-2 16:18
我在處理收到數(shù)據(jù)的地方加了一句將p13端口置為低電平,重新加電量了一下是低電平,說明ps鼠標(biāo)連接電腦成功了,可是按鍵按下沒有任何反應(yīng),求指教啊。
作者: 6726234500    時間: 2019-7-16 11:10
好了嗎

作者: 6726234500    時間: 2019-7-16 16:02
解決了嗎




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品九九久久 | 夜夜艹| 天天拍夜夜爽 | 精品亚洲一区二区三区四区五区 | 精品视频在线观看 | 99pao成人国产永久免费视频 | 激情五月激情综合网 | 欧美日本一区 | 久久99精品久久久久久国产越南 | 午夜视频精品 | 97福利在线 | 久久精品国产99国产精品 | 在线电影日韩 | 国产精品久久久久无码av | 久久九| 久久91精品久久久久久9鸭 | 国产欧美精品一区二区 | 青青操av | 伊人亚洲 | а_天堂中文最新版地址 | 亚洲一区国产精品 | 亚洲午夜精品视频 | 亚洲成人免费在线观看 | 国产精品视频一区二区三区四区国 | 91精品国产91久久久久游泳池 | 成人免费淫片aa视频免费 | 日韩一区二区av | 一级片av | 欧区一欧区二欧区三免费 | 日韩高清不卡 | 91av视频在线观看 | 久久久国产精品 | 免费av毛片 | 久久99深爱久久99精品 | 在线 丝袜 欧美 日韩 制服 | 黄色骚片 | 日韩欧美国产一区二区三区 | 91精品国产综合久久婷婷香蕉 | 欧美日韩久久精品 | 成年人在线观看 | 亚州精品天堂中文字幕 |