?? spi.c
字號:
#include <reg51.h>
#include <main.h>
#include <spi.h>
extern uchar data chksum;
void Send_Measure_Byte(uchar para)
{
uchar i;
SPI_CLK=HIGH;
for(i=0;i<8;i++)
{
if(para & 0x01)
SPI_SDI=HIGH;
else
SPI_SDI=LOW;
SPI_CLK=LOW;
para>>=1;
Delay_10us(4);
SPI_CLK=HIGH;
}
}
uchar Receive_Measure_Byte(void)
{
uchar i,result=0;
SPI_SDI=HIGH;
SPI_CLK=HIGH;
for(i=0;i<8;i++)
{
SPI_CLK=LOW;
Delay_10us(5);
result>>=1;
SPI_CLK=HIGH;
Delay_10us(2);
if(SPI_SDO)
result|=0x80;
}
return result;
}
uchar Read_From_Measure(uchar cmd,uchar *ps,uchar len)
{
uint i;
SPI_CS=0;
Delay_10us(200);
Send_Measure_Byte(cmd);
SPI_SDO=HIGH;
for(i=0;i<8000;i++)
{
if(SPI_SDO)continue;
else
break;
}
for(i=0;i<8000;i++)
{
if(SPI_SDO)continue;
else
break;
}
if(i==8000)
{
SPI_CS=HIGH;
return 1;
}
chksum=0;
for(i=0;i<len;i++)
{
ps[i]=Receive_Measure_Byte();
chksum+=ps[i];
Delay_10us(8);
}
SPI_CS=HIGH;
return 0;
}
uchar Write_To_Measure(uchar cmd,uchar *ps,uchar len)
{
uint i;
SPI_CS=LOW;
Delay_10us(150);
Send_Measure_Byte(cmd);
SPI_SDO=HIGH;
for(i=0;i<8000;i++)
{
if(SPI_SDO)continue;
else
break;
}
if(i==8000)
{
SPI_CS=HIGH;
return 1;
}
for(i=0;i<len;i++)
Send_Measure_Byte(ps[i]);
Delay_10us(50);
SPI_CS=HIGH;
return 0;
}
void Delay_10us(uchar delay)
{
while(delay>0)delay--;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -