📄 spireadandwrite.txt
字号:
//SPI 端口定义
sbit DOUT = P1^1; //SPI串行数据输出口,单片机输入口
sbit DIN = P1^2; //SPI串行数据输入口,单片机输出口
sbit SCLK = P1^3; //SPI时钟,单片机输出口
sbit CS_ = P1^4; //SPI使能,低电平有效,单片机输出口
//全局变量定义
unsigned char SPI_CM; //用于存放SPI读或写的命令字
unsigned char SPI_Data[3]; //用于存放SPI读或写的数据
void SPIRead()
{
unsigned char i,k;
CS_=1;
_nop_();
SCLK=0;
_nop_();
CS_=0;
for(i=0;i<8;i++)
{
SCLK=1;
if(SPI_CM&0x80)
DIN=1;
else
DIN=0;
_nop_();
SCLK=0;
SPI_CM=SPI_CM<<1;
}
DIN=0;
_nop_();
_nop_();
_nop_();
//
//
for(k=0;k<3;k++)
{
SPI_Data[k]=0;
for(i=0;i<8;i++)
{
SPI_Data[k]=SPI_Data[k]<<1;
SCLK=1;
_nop_();
if(DOUT)
SPI_Data[k]=SPI_Data[k]|0x01;
SCLK=0;
}
}
CS_=1;
}
//SPI写函数
void SPIWrite()
{
unsigned char i,k;
CS_=1;
_nop_();
SCLK=0;
_nop_();
CS_=0;
SPI_CM=SPI_CM&0x80;
for(i=0;i<8;i++)
{
SCLK=1;
_nop_();
if(SPI_CM&0x80)
DIN=1;
else
DIN=0;
_nop_();
SCLK=0;
SPI_CM=SPI_CM<<1;
}
DIN=0;
for(k=0;k<3;k++)
{
for(i=0;i<8;i++)
{
SCLK=1;
_nop_();
if(SPI_Data[k]&0x80)
DIN=1;
else
DIN=0;
_nop_();
SCLK=0;
SPI_Data[k]=SPI_Data[k]<<1;
}
}
DIN=0;
CS_=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -