中断方式的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();
}