spi信号能写,但就是不知道数据怎么处理,以及怎么调试手柄按键值
#include <stc12c5a60s2.h>
#include <ps2.h>
#include <intrins.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
sbit CMD=P1^5;
sbit DAT=P1^6;
sbit CLK=P1^7;
sbit CS=P1^4;
sbit led=P1^0;
uchar date,back,temp,b1,b2,b3,b4,b5;
uchar command[9]={0x01,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uchar read[9];
delay5us() //@11.0592MHz
{
unsigned char data i;
_nop_();
_nop_();
_nop_();
i = 10;
while (--i);
}
UARTInit()
{
EA=1;
ES=1;
SM0=0;
SM1=1;
REN=1;
TR1=1;
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
}
UART()interrupt 4
{
if(RI)
{
back=SBUF;
RI=0;
temp=back;
SBUF=temp;
}
// if(TI)
// TI=0;
}
delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
PS2_cmd(uchar cmd)
{
uchar i,j=1,readdat;
for(i=0;i<8;i++)
{
CLK=1;
if(cmd&0x80)
{
CMD=1;
}
else
{
CMD=0;
}
cmd<<=1;
CLK=0;
if(DAT)
readdat+=j;
j<<=1;
_nop_();
}
CMD=1;
return readdat;
}
PS2_read()
{
uchar i;
CS=0;
_nop_();
for(i=0;i<9;i++)
read[i]=PS2_cmd(command[i]);
_nop_();
CS=1;
}
distinguish_mode()
{
CS=0;
_nop_();
PS2_cmd(command[0]);
PS2_cmd(command[1]);
_nop_();
CS=1;
if(read[1]==0x73)
return 0;
else
return 1;
}
PS2_Init()
{
CS=0;
delay5us();
PS2_cmd(0x01);
PS2_cmd(0x42);
PS2_cmd(0x00);
PS2_cmd(0x00);
PS2_cmd(0x00);
delay5us();
CS=1;
}
start_config()
{
CS=0;
PS2_cmd(0x01);
PS2_cmd(0x43);
PS2_cmd(0x00);
PS2_cmd(0x01);
PS2_cmd(0x00);
CS=1;
}
TurnonAnalogMode()
{
CS=0;
PS2_cmd(0x01);
PS2_cmd(0x44);
PS2_cmd(0x00);
PS2_cmd(0x01);
PS2_cmd(0x03);
PS2_cmd(0x00);
PS2_cmd(0x00);
PS2_cmd(0x00);
PS2_cmd(0x00);
CS=1;
}
SetupMotorCommandMapping()
{
CS=0;
PS2_cmd(0x01);
PS2_cmd(0x4d);
PS2_cmd(0x00);
PS2_cmd(0xff);
PS2_cmd(0xff);
PS2_cmd(0xff);
PS2_cmd(0xff);
PS2_cmd(0xff);
PS2_cmd(0xff);
CS=1;
}
ExitConfigMode()
{
CS=0;
PS2_cmd(0x01);
PS2_cmd(0x43);
PS2_cmd(0x00);
PS2_cmd(0x00);
PS2_cmd(0x5a);
PS2_cmd(0x5a);
PS2_cmd(0x5a);
PS2_cmd(0x5a);
PS2_cmd(0x5a);
CS=1;
}
main()
{
PS2_Init();
start_config();
TurnonAnalogMode();
SetupMotorCommandMapping();
ExitConfigMode();
UARTInit();
led=distinguish_mode();
while(1)
{
TI=1;
printf("%x ",b2);
while(!TI)
TI=0;
delay(1000);
}
}
ps2.h那个头文件我没用