單片機源程序如下:
//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置高
}
}
|