📄 spi.c
字号:
#include <ipOS.h>
#include "SPI.h"
u8_t DATA_BUF;
void SpiInit(void)
{
*(u8_t *)RFDIR=0x80; //F7输入,其余输出
*(u8_t *)REDIR=0x0;
asm("setb RFOUT,5
clrb RFOUT,4"); //SPI_CSN=1,Spi disable;SPI_SCK=0,Spi clock line init low
}
u8_t SpiRead(void)
{
u8_t i;
for (i=0;i<8;i++)
{
DATA_BUF=DATA_BUF<<1;
asm("setb RFOUT,4"); //SPI_SCK=1;
if ((*(u8_t *)RFIN)&0x80) //读取最高位,保存至最末尾,通过左移位完成整个字节
{
DATA_BUF=DATA_BUF+1;
}
else
{
DATA_BUF=DATA_BUF+0;
}
asm("clrb RFOUT,4"); //SPI_SCK=0;
}
return DATA_BUF;
}
void SpiWrite(u8_t send)
{
u8_t i;
DATA_BUF=send;
for (i=0;i<8;i++)
{
if (DATA_BUF&0x80) //总是发送最高位
{
asm("setb RFOUT,1"); //SPI_MOSI=1;
}
else
{
asm("clrb RFOUT,1"); //SPI_MOSI=0;
}
asm("setb RFOUT,4"); // Set clock line high SPI_SCK=1;
DATA_BUF=DATA_BUF<<1; // Shift DATA_BUF
asm("clrb RFOUT,4"); // Set clock line low SPI_SCK=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -