中断方式的SPI接口代码。发送字节数据时直接把内容写入SPDAT寄存器,字节发送完成后会触发OnSPI()函数。收到数据时会触发OnSPI()函数,客户程序从SPDAT读取字节数据。
SPI.h代码
void SPI_Init(void);
SPI.c代码
#include "Hardware.h" #include "SPI.h" #define MASTER #define SPIF 0x80 #define WCOL 0x40 #define SSIG 0x80 #define SPEN 0x40 #define DORD 0x20 #define MSTR 0x10 #define CPOL 0x08 #define CPHA 0x04 #define SPDHH 0x00 #define SPDH 0x01 #define SPDL 0x02 #define SPDLL 0x03 extern void OnSPI(); void SPI_Init(void) { #ifdef MASTER SPCTL = SSIG|SPEN|MSTR|CPHA|SPDLL; #else SPCTL = SSIG|SPEN|CPHA|SPDLL; #endif AUXR |= 0x08; EADC_SPI = 1; SPSTAT = SPIF|WCOL; } void ADC_SPI_Routine(void) interrupt 5 { SPSTAT = SPIF|WCOL; OnSPI(); }