#include <C8051F410.h> #include <intrins.h>
sbit SPI_Clk = P0^2; sbit SPI_Out = P0^3; sbit SPI_In = P0^6; sbit SPI_Cs = P0^7;
void System_Setup(void); void SPI_Write(unsigned int SPI_Data); unsigned int SPI_Read(void);
void main(void) { unsigned int j = 0; unsigned char k = 0;
System_Setup();
SPI_Clk = 0; SPI_Cs=1; SPI_Cs=0; SPI_Write(0x5853); SPI_Cs=1; SPI_Cs=0; SPI_Read(); SPI_Cs=1; }
void SPI_Write(unsigned int SPI_Data) //SPI写 { bit j;
j = ((SPI_Data >> 15) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 14) & 0x01); SPI_Out = j;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = ((SPI_Data >> 13) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 12) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = ((SPI_Data >> 11) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 10) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 9) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 8) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 7) & 0x01); SPI_Out = j; _nop_();
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 6) & 0x01); SPI_Out = j;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 5) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 4) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 3) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 2) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 1) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = ((SPI_Data >> 0) & 0x01); SPI_Out = j; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
SPI_Out = 0; }
unsigned int SPI_Read(void) //SPI读 { unsigned int Read_Data = 0; bit j;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_();
j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1;
SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j; Read_Data = Read_Data<<1; SPI_Clk = 1; _nop_(); SPI_Clk = 0; _nop_(); j = SPI_In; Read_Data = Read_Data | j;
return(Read_Data); }
void System_Setup(void) { PCA0MD &= ~0x40; //第6位置0,看门狗定时器被禁止 PCA0MD = 0x00; //Disable Watchdog timer
OSCICN = 0x87; // 内部振荡器不分频,Set clock to 24.5 MHz RSTSRC = 0x04; // 使能时钟丢失检测器,Enable missing clock detector P0MDIN = 0xff; //P0不配置为模拟输入 P0MDOUT = 0x0c; // P0.2、P0.3配置为推挽方式,p0.2 p0.3 as push-pull P1MDOUT = 0xff; //P1口设置成推挽方式 XBR1 = 0x40; //交叉开关使能
读到的数据不是我想要的数据啊?这是为什么呢?大家帮忙分析下。刚接触单片机啊。谢谢。
|