Ps2遙控車資料分享(非本人所寫,隨ps2遙控器購買時贈送,供大家學習之用)--51,stm32,arduino,樹莓派 代碼,
代碼自己看,自己調試,在此不做詳解。
1、PS2手柄介紹
PS2 手柄是游戲機的遙控手柄。psx 系列游戲主機在全球很是暢銷。不知什么時候便有人打起 PS2 手柄的主意,破解了通訊協議,使得手柄可以接在其他器件上遙控使用,比如遙控我們熟悉的機器人。突出的特點是現在這款手柄性價比極高。按鍵豐富,方便擴展到其它應用中。 PS2 手柄介紹:
PS2 由手柄與接收器兩部分組成,手柄主要負責發送按鍵信息。都接通電源并打開手柄開關時,手柄與接收器自動配對連接,在未配對成功的狀態下,接收器綠燈閃爍,手柄上的燈也會閃爍,配對成功后,接收器上綠燈常亮,手柄上燈也常亮,這時可以按“MODE”鍵,選擇手柄發送模式,紅燈模式:遙桿輸出模擬值;綠燈模式:遙桿對應上面四個按鍵,只有四個極限方向對應。 接收器和主機(單片機)相連,實現主機與手柄之間的通訊。
接收器引腳輸出:
接收器圖片
圖 1.1 接收器引腳序號 DI/DAT:信號流向,從手柄到主機,此信號是一個 8bit 的串行數據,同步傳送于時鐘
的下降沿。信號的讀取在時鐘由高到低的變化過程中完成。 DO/CMD:信號流向,從主機到手柄,此信號和 DI 相對,信號是一個 8bit 的串行數據,同步傳送于時鐘的下降沿。
NC:空端口; GND:電源地; VDD:接收器工作電源,電源范圍 3~5V; CS/SEL:用于提供手柄觸發信號。在通訊期間,處于低電平; CLK:時鐘信號,由主機發出,用于保持數據同步; NC:空端口; ACK:從手柄到主機的應答信號。此信號在每個 8bits 數據發送的最后一個周期變低并且 CS 一直保持低電平,如果 CS 信號不變低,約 60 微秒PS 主機會試另一個外設。在編程時未使用ACK 端口。當主機想讀手柄數據時,將會拉低 CS 線電平,并發出一個命令“0x01”;手柄會回復它的ID“0x41=模擬綠燈,0x73=模擬紅燈”;在手柄發送 ID 的同時,主機將傳送 0x42,請求數據;隨后手柄發送出 0x5A,告訴主機“數據來了”。 表 1:數據意義對照表 | | | Bit0、Bit1、Bit2、Bit3、Bit4、Bit5、Bit6、Bit7、 | | | |
| | | |
| | | |
| | | | SELECT、L3、R3、START、UP、RIGHT、DOWN、LEFT | | | | | | | | PSS_RX(0x00=left、0xFF=right) | | | | PSS_RY(0x00=up、0xFF=down) | | | | PSS_LX(0x00=left、0xFF=right) | | | | PSS_LY(0x00=up、0xFF=down) |
當有按鍵按下,對應位為“0”,其他位為“1”,例如當鍵“SELECT”被按下時,
Data[3]=11111110B,
紅燈模式時:左右搖桿發送模擬值,0x00~0xFF 之間,且搖桿按下的鍵值值 L3、R3 有
效; 綠燈模式時:左右搖桿模擬值為無效,推到極限時,對應發送 UP、RIGHT、DOWN、
LEFT、△、○、╳、□,按鍵 L3、R3 無效。
2、硬件連接方式
接收器與 stm32平衡車 連接方式 3、按鍵對應說明 
模式我們選擇紅燈模式,這樣可以使用遙桿流暢的控制小車。其他所有按鍵接口都有留出來,方便后續自己DIY按鍵功能。
模擬值對應XY坐標圖:

PS2_4WD智能小車(51版)程序源碼(部分):
- #include "STC12C5A60S2.h"
- #include "stdio.h"
- #include "ps2.h"
- #define ON 1 //使能LED
- #define OFF 0 //禁止LED
-
- //定義電機引腳
- sbit Left_motor_go=P2^1; //左電機前進AIN2
- sbit Left_motor_back=P2^2; //左電機后退AIN1
- sbit Right_motor_go=P2^4; //右電機前進BIN2
- sbit Right_motor_back=P2^3; //右電機后退BIN1
- sbit Left_motor_pwm=P2^0; //左電機控速PWMA
- sbit Right_motor_pwm=P2^5; //右電機控速PWMB
- unsigned char pwm_val_left =0; //變量定義
- unsigned char pwm_val_right =0;
- //速度調節變量 0-200,0最小,200最大
- unsigned char push_val_left =150; // 左電機占空比push_val_left/200
- unsigned char push_val_right=150; // 右電機占空比push_val_right/200
- //蜂鳴器引腳定義
- sbit FM=P2^7;
- //定義舵機引腳
- sbit ServoPin=P0^5;
- //舵機定時計數
- int servocount=0;
- //定義舵機角度值
- int myangle = 0;
- //定義RGB七彩燈引腳
- sbit LED_R = P4^6; //LED_R接在STC12C5A60S2的EA(P4^6)管腳
- sbit LED_G = P4^5; //LED_G接在STC12C5A60S2的ALE(P4^5)管腳
- sbit LED_B = P4^4; //LED_B接在STC12C5A60S2的PSEN(P4^4)管腳
- //電機控速開關
- bit Left_PWM_ON=1;
- bit Right_PWM_ON=1;
- //時間變量和小車速度,小車狀態變量定義
- unsigned char time;
- int g_carstate = 0;
- int g_ServoState = 0; //1左搖 2 右搖
- //小車速度檔位
- int g_volume = 0;
- //小車運行狀態枚舉
- enum{
- enSTOP = 0,
- enRUN,
- enBACK,
- enLEFT,
- enRIGHT,
- enUPLEFT,
- enUPRIGHT,
- enDOWNLEFT,
- enDOWNRIGHT,
- enSPINLEFT,
- enSPINRIGHT
- }enCarState;
- //宏定義電機速度檔位
- #define enMinMin() do{\
- push_val_left =50; \
- push_val_right =50;\
- }while(0)
- #define enMin() do{\
- push_val_left =100; \
- push_val_right =100;\
- }while(0)
- #define enMidle() do{\
- push_val_left =150; \
- push_val_right =150;\
- }while(0)
- #define enMax() do{\
- push_val_left =200; \
- push_val_right =200;\
- }while(0)
-
- /**
- * Function delay
- * @author Danny
- * @date 2017.08.16
- * @brief 延時函數
- * @param xms:延時時間(ms)
- * @retval void
- * @par History 無
- */
- void delay(unsigned int xms)
- {
- unsigned int i,j;
- for(i=xms;i>0;i--)
- for(j=850;j>0;j--);
- }
- /**
- * Function pwm_out_left_motor
- * @author Danny
- * @date 2017.08.16
- * @brief 左電機調速 ,調節push_val_left的值改變電機轉速,占空比
- * @param void
- * @retval void
- * @par History 無
- */
- void pwm_out_left_motor(void)
- {
- if(Left_PWM_ON)
- {
- if(pwm_val_left<=push_val_left)
- {
- Left_motor_pwm =1;
- }
- else
- {
- Left_motor_pwm=0;
- }
- if(pwm_val_left>=200) //這里的200代表的是pwm為20ms即50hz
- pwm_val_left=0;
- }
- else
- {
- Left_motor_pwm=0; //若未開啟PWM則PWMA=0 左電機停止
- }
- }
- /**
- * Function pwm_out_right_motor
- * @author Danny
- * @date 2017.08.16
- * @brief 右電機調速 ,調節pwm_val_right的值改變電機轉速,占空比
- * @param void
- * @retval void
- * @par History 無
- */
- void pwm_out_right_motor(void)
- {
- if(Right_PWM_ON)
- {
- if(pwm_val_right<=push_val_right)
- {
- Right_motor_pwm=1;
- }
- else
- {
- Right_motor_pwm=0;
- }
- if(pwm_val_right>=200) //這里的200代表的是pwm為20ms即50hz
- pwm_val_right=0;
- }
- else
- {
- Right_motor_pwm=0; //若未開啟PWM則PWMB=0右電機停止
- }
- }
- /**
- * Function servo_appointed_detection
- * @author Danny
- * @date 2017.08.16
- * @brief 舵機旋轉到指定角度
- * @param[in] pos:指定的角度
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void servo_appointed_detection(int pos)
- {
- int i = 0;
- for (i = 0; i <= 15; i++) //產生PWM個數,等效延時以保證能轉到響應角度
- {
- myangle = pos; //模擬產生PWM
- delay(20);
- }
- }
- /**
- * Function run
- * @author Danny
- * @date 2017.08.16
- * @brief 小車前進
- * @param[in1] time :延時時間
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void run(unsigned int time)
- {
- //左電機前進
- Left_motor_go = 1; //左電機前進使能
- Left_motor_back = 0; //左電機后退禁止
- //更新指定管腳的PWM值,更改可實現控速(0-200)
- // push_val_left=CarSpeed;
-
- //右電機前進
- Right_motor_go=1; //右電機前進使能
- Right_motor_back=0; //右電機后退禁止
- //更新指定管腳的PWM值,更改可實現控速(0-200)
- //push_val_right=CarSpeed;
- //延時
- delay(time * 100);
- return;
- }
- /**
- * Function brake
- * @author Danny
- * @date 2017.08.16
- * @brief 小車剎車
- * @param[in] time
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void brake(unsigned int time)
- {
- //左電機停止
- Left_motor_go = 0; //左電機前進禁止
- Left_motor_back = 0; //左電機后退禁止
-
- //右電機停止
- Right_motor_go=0; //右電機前進禁止
- Right_motor_back=0; //右電機后退禁止
- //延時
- delay(time * 100);
- return;
- }
- /**
- * Function left
- * @author Danny
- * @date 2017.08.16
- * @brief 小車左轉 左轉(左輪不動,右輪前進)
- * @param[in] time :延時時間
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void left(unsigned int time)
- {
- //左電機停止
- Left_motor_go = 0; //左電機前進禁止
- Left_motor_back = 0; //左電機后退禁止
- //更新指定管腳的PWM值,更改可實現控速(0-200)
- // push_val_left=0;
-
- //右電機前進
- Right_motor_go=1; //右電機前進使能
- Right_motor_back=0; //右電機后退禁止
- //更新指定管腳的PWM值,更改可實現控速(0-200)
- //push_val_right=CarSpeed;
- //延時
- delay(time * 100);
- return;
- }
- /**
- * Function right
- * @author Danny
- * @date 2017.08.16
- * @brief 小車右轉 右轉(左輪前進,右輪不動)
- * @param[in] time:延時時間
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void right(unsigned int time)
- {
- //左電機前進
- Left_motor_go = 1; //左電機前進使能
- Left_motor_back = 0; //左電機后退禁止
- //更新指定管腳的PWM值,更改可實現控速(0-20)
- //push_val_left=CarSpeed;
-
- //右電機停止
- Right_motor_go=0; //右電機前進禁止
- Right_motor_back=0; //右電機后退禁止
- //更新指定管腳的PWM值,更改可實現控速(0-20)
- push_val_right=0;
- //延時
- delay(time * 100);
- return;
- }
- /**
- * Function spin_left
- * @author Danny
- * @date 2017.08.16
- * @brief 小車原地左轉 原地左轉(左輪后退,右輪前進)
- * @param[in] time:延時時間
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void spin_left(unsigned int time)
- {
- //左電機后退
- Left_motor_go = 0; //左電機前進禁止
- Left_motor_back = 1; //左電機后退使能
- //更新指定管腳的PWM值,更改可實現控速(0-20)
- // push_val_left=CarSpeed;
-
- //右電機前進
- Right_motor_go=1; //右電機前進使能
- Right_motor_back=0; //右電機后退禁止
- //更新指定管腳的PWM值,更改可實現控速(0-20)
- // push_val_right=CarSpeed;
- //延時
- delay(time * 100);
- return;
- }
- /**
- * Function spin_right
- * @author Danny
- * @date 2017.08.16
- * @brief 小車原地右轉 原地右轉(右輪后退,左輪前進)
- * @param[in] time:延時時間
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void spin_right(unsigned int time)
- {
- //左電機前進
- Left_motor_go = 1; //左電機前進使能
- Left_motor_back = 0; //左電機后退禁止
- //更新指定管腳的PWM值,更改可實現控速(0-20)
- //push_val_left=CarSpeed;
-
- //右電機后退
- Right_motor_go=0; //右電機前進禁止
- Right_motor_back=1; //右電機后退使能
- //更新指定管腳的PWM值,更改可實現控速(0-20)
- //push_val_right=CarSpeed;
- //延時
- delay(time * 100);
- return;
- }
- /**
- * Function up_right
- * @author Danny
- * @date 2017.08.16
- * @brief 小車往右上方轉
- * @param[in] time:延時時間
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void up_right(unsigned int time) //右上
- {
- Left_motor_go=1;
- Left_motor_back=0;
- // push_val_left=CarSpeed+50;
- push_val_left=18;
- Right_motor_go=1;
- Right_motor_back=0;
- //push_val_right=CarSpeed;
- push_val_right=10;
- //延時
- delay(time * 100);
- return;
- }
- /**
- * Function down_right
- * @author Danny
- * @date 2017.08.16
- * @brief 小車往右下方轉
- * @param[in] time:延時時間
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void down_right(unsigned int time) //右下
- {
- Left_motor_go=0;
- Left_motor_back=1;
- //push_val_left=CarSpeed+50;
- push_val_left=18;
- Right_motor_go=0;
- Right_motor_back=1;
- //push_val_right=CarSpeed;
- push_val_right=10;
- delay(time * 100);
- return;
- }
- /**
- * Function up_left
- * @author Danny
- * @date 2017.08.16
- * @brief 小車往左上方轉
- * @param[in] time:延時時間
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void up_left(unsigned int time)
- {
- Left_motor_go=1;
- Left_motor_back=0;
- //push_val_left=CarSpeed;
- push_val_left=10;
- Right_motor_go=1;
- Right_motor_back=0;
- // push_val_right=CarSpeed+50;
- push_val_right=18;
- delay(time * 100);
- return;
- }
- /**
- * Function down_left
- * @author Danny
- * @date 2017.08.16
- * @brief 小車往左下方轉
- * @param[in] time :延時時間
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void down_left(unsigned int time)
- {
- Left_motor_go=0;
- Left_motor_back=1;
- //push_val_left=CarSpeed;
- push_val_left=10;
- Right_motor_go=0;
- Right_motor_back=1;
- //push_val_right=CarSpeed+50;
- push_val_right=18;
- delay(time * 100);
- return;
- }
- /**
- * Function back
- * @author Danny
- * @date 2017.08.16
- * @brief 小車后退
- * @param[in] time :延時時間
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void back(unsigned int time)
- {
- //左電機后退
- Left_motor_go = 0; //左電機前進禁止
- Left_motor_back = 1; //左電機后退使能
-
- //右電機后退
- Right_motor_go=0; //右電機前進禁止
- Right_motor_back=1; //右電機后退使能
- //延時
- delay(time * 100);
- return;
- }
- /**
- * Function timer0
- * @author Danny
- * @date 2017.08.16
- * @brief TIMER0中斷服務子函數產生PWM信號,用于控制電機速度和控制舵機的轉動
- * @param[in] void
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void timer0()interrupt 1
- {
- int PulseWidth;
- TH0=0Xff; //100us定時
- TL0=0Xa4;
- servocount++;
- //定義脈寬變量
- PulseWidth = ((myangle*11)+500)/100 ; //為了將0-180度轉換為相應的脈寬值
- if(servocount == PulseWidth)
- {
- ServoPin=0; //將舵機接口電平置高
- }
- if(servocount == 190) //190為最終調試獲得的一個最佳值
- {
- servocount = 0;
- ServoPin=1; //將舵機接口電平置低
- }
- pwm_val_left++;
- pwm_val_right++;
- pwm_out_left_motor();
- pwm_out_right_motor();
- }
- /**
- * Function TIME0_Init
- * @author Danny
- * @date 2017.08.16
- * @brief 定時器0初始化
- * @param[in] void
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void TIME0_Init(void)
- {
- TMOD |=0X01; //定時器工作方式1
- TH0= 0Xff; //100Us定時
- TL0= 0Xa4;
- TR0= 1; //啟動T0工作
- ET0= 1; //允許T0中斷
- EA = 1; //開總中斷
- }
- /**
- * Function color_led
- * @author Danny
- * @date 2017.08.16
- * @brief 由R,G,B三色的不同組合形成7種不同的色彩
- * @param[in1] Red開關
- * @param[in2] Green開關
- * @param[in3] Blue開關
- * @retval void
- * @par History 無
- */
- void color_led(int v_iRed, int v_iGreen, int v_iBlue)
- {
- //紅色LED
- v_iRed == ON ? (LED_R = 1): (LED_R = 0);
- //綠色LED
- v_iGreen == ON ? (LED_G = 1): (LED_G = 0);
- //藍色LED
- v_iBlue == ON ? (LED_B = 1): (LED_B = 0);
- }
- /**
- * Function UartInit
- * @author Danny
- * @date 2017.08.16
- * @brief 串口初始化
- * 定時器工作方式2:
- * 實現的是自動重載:波特率的計算為:
- * (2的SMOD次方/32)*(sysclk(單片機內部時鐘頻率)/12)/(256-TH1)
- (系統默認下的SMOD是0,T1X12也是為0的)
- 1/32*((11059200/12)/(256-FD))=9600
- * @param[in] void
- * @retval void
- * @par History 無
- */
- void UartInit(void)
- {
- SCON|=0x50; //串行口工作在方式1,允許串行接收
- TMOD|=0x20; //定時器1工作方式2,自動重載初值,TL1:初始值,TH1:重載值
- TH1=0xfd; //初始化波特率為9600
- TL1=0xfd;
- TI=1; //發送標志位置1,表示發送完一個字節
- TR1=1; //定時器1開始工作
- }
- /**
- * Function PS2_control
- * @author Danny
- * @date 2017.07.25
- * @brief PS2控制小車
- * @param[in] void
- * @param[out] void
- * @retval void
- * @par History 無
- */
- void PS2_control()
- {
- //PS2按鍵變量定義
- stPS2KeyValue * PS2;
-
- PS2 = ReadPS2KeyValue(); //檢測手柄按鍵之后獲得的值
- //由data[3]和data[4]返回來的組合成16位的數組
- //如data[4]data[3]:當select按下時
- //FunBtn:0x1111 1111 1111 1110
- if((PS2->FunBtn & PSB_SELECT) == 0)
- {
- printf("PSB_SELECT!\n");
- }
-
- if((PS2->FunBtn & PSB_START) == 0)
- {
- printf("PSB_START!\n");
- }
-
- if((PS2->FunBtn & PSB_L3) == 0)
- {
- printf("PSB_L3!\n");
- g_carstate = enSTOP; //將小車定義為停止狀態
- }
- if((PS2->FunBtn & PSB_R3) == 0)
- {
- printf("PSB_R3!\n");
- g_carstate = enSTOP; //將小車定義為停止狀態
- }
- if((PS2->FunBtn & PSB_PAD_UP) == 0)
- {
- printf("PSB_PAD_UP!\n");
- g_carstate = enRUN; //將小車定義為前進狀態
- }
- else if((PS2->FunBtn & PSB_PAD_RIGHT) == 0)
- {
- printf("PSB_PAD_RIGHT!\n");
- g_carstate = enRIGHT; //將小車定義為狀態右轉
- }
- else if((PS2->FunBtn & PSB_PAD_DOWN) == 0)
- {
- printf("PSB_PAD_DOWN!\n");
- g_carstate = enBACK; //將小車定義為后退狀態
- }
- else if((PS2->FunBtn & PSB_PAD_LEFT) == 0)
- {
- printf("PSB_PAD_LEFT!\n");
- g_carstate = enLEFT; //將小車定義為左轉狀態
- }
-
- else //去掉則按下一直執行,加此段則放開停止
- {
- g_carstate = enSTOP; //將小車定義為停止狀態
- }
-
- if((PS2->FunBtn & PSB_L2) == 0) //加速
- {
- printf("PSB_L2!\n");
- // CarSpeed=CarSpeed+40;
- // if(CarSpeed>=200)
- // {
- // CarSpeed = 200;
- // }
- g_volume++;
- if(g_volume>=4) //將速度設置了四個等級
- {
- g_volume = 4;
- }
- }
-
- if((PS2->FunBtn & PSB_R2) == 0) //減速
- {
- printf("PSB_R2!\n");
- // CarSpeed=CarSpeed-40;
- // if(CarSpeed<0)
- // {
- // CarSpeed = 50;
- // }
- g_volume--;
- if(g_volume <= 0)
- {
- g_volume = 1;
- }
- }
- //當手柄的L1鍵被按下后,且有左側有搖桿數據(X1,Y1)之后處理
- //左側搖桿控制小車的運行狀態
- if((PS2->FunBtn & PSB_L1) == 0)
- {
- printf("PSB_L1!\n");
-
- if (PS2->Y1 < 5 && PS2->X1 > 80 && PS2->X1 < 180) //上
- {
- g_carstate = enRUN;
- printf("enRUN\n");
- }
- else if (PS2->Y1 > 230 && PS2->X1 > 80 && PS2->X1 < 180) //下
- {
- g_carstate = enBACK;
- printf("enBACK\n");
- }
- else if (PS2->X1 < 5 && PS2->Y1 > 80 && PS2->Y1 < 180) //左
- {
- g_carstate = enLEFT;
- printf("enLEFT\n");
- }
- else if (PS2->Y1 > 80 && PS2->Y1 < 180 && PS2->X1 > 230)//右
- {
- g_carstate = enRIGHT;
- printf("enRIGHT\n");
- }
- else if (PS2->Y1 <= 80 && PS2->X1 <= 80) //左上
- {
- g_carstate = enUPLEFT;
- printf("enUPLEFT\n");
- }
- else if (PS2->Y1 <= 80 && PS2->X1 >= 180) //右上
- {
- g_carstate = enUPRIGHT;
- printf("enUPRIGHT\n");
- }
- else if (PS2->X1 <= 80 && PS2->Y1 >= 180) // 左下
- {
- g_carstate = enDOWNLEFT;
- printf("enDOWNLEFT\n");
- }
- else if (PS2->Y1 >= 180 && PS2->X1 >= 180) //右下
- {
- g_carstate = enDOWNRIGHT;
- printf("enDOWNRIGHT\n");
- }
- else//停
- {
- g_carstate = enSTOP;
- }
- }
- //當R1被按下之后,且有右側搖桿數據來臨時。
- //右側搖桿控制小車的舵機的運行狀態
- if((PS2->FunBtn & PSB_R1) == 0)
- {
- printf("PSB_R1!\n");
- //右搖桿
- if (PS2->X2 < 5 && PS2->Y2 > 80 && PS2->Y2 < 180) //左
- {
- g_ServoState = 1;
- }
- else if (PS2->Y2 > 80 && PS2->Y2 < 180 &&PS2->X2 > 230)//右
- {
- g_ServoState = 2;
- }
- else //歸位
- {
- g_ServoState = 0;
- }
- }
-
- if((PS2->FunBtn & PSB_TRIANGLE) == 0) // 控制燈
- {
- printf("PSB_TRIANGLE!\n");
- color_led(ON, OFF, ON);
- // ReadPS2KeyValue();
- }
-
- if((PS2->FunBtn & PSB_CIRCLE) == 0) // 控制左旋
- {
- printf("PSB_CIRCLE!\n");
- g_carstate = enLEFT;
- // ReadPS2KeyValue();
- }
-
- if((PS2->FunBtn & PSB_CROSS) == 0) // 鳴笛
- {
- printf("PSB_CROSS!\n");
- FM = 0;
- delay(500);
- FM = 1;
- // ReadPS2KeyValue();
- }
-
- if((PS2->FunBtn & PSB_SQUARE) == 0) //控制右旋
- {
- printf("PSB_SQUARE!\n");
- g_carstate = enRIGHT;
- // ReadPS2KeyValue();
- }
- }
復制代碼 全部資料51hei下載地址:
|