单片机源程序如下:
//SPI I/O定义
#define PCSN PA //MCU 端口选择,用户需要初始化输入/输出属性
#define PSCK PA
#define PMOSI PA
#define PMISO PA
#define CSN 0x03 //PA3
#define SCK 0x04 //PA4
#define MOSI 0x05 //PA5
#define MISO 0x06 //PA6
void SPI_WriteByte(char Data);
//*****************************************************************************
// SPI写函数
//*****************************************************************************
void SPI_WriteByte(char Data)
{
char i;
__asm
{
BCC PCSN,CSN //CS低
CLR (&i&) % 0x80 //循环8次
JBC (&Data&) % 0x80, 7 //高位先发
BSS PMOSI,MOSI //数据1则输出高电平
JBS (&Data&) % 0x80, 7
BCC PMOSI,MOSI //数据0则输出低电平
RLB (&Data&) % 0x80 //Data左移1位
BSS PSCK, SCK //SCK高电平
NOP
NOP
INC (&i&) % 0x80, 1
BCC PSCK,SCK //SCK低电平
MOVI 0x08
XOR (&i&) % 0x80, 0 //判定循环次数
JBS PSW, Z
GOTO $-0x0D //若循环次数未到则向上跳转13行
BSS PCSN,CSN //CS置高
}
}
|