51和pic单片机都能用的spibus程序

  • 格式:docx
  • 大小:17.57 KB
  • 文档页数:3

51和pic单片机都能用的spi bus程序

#define mcu_51 //单片机选择

/*pic18->mcu_pic_18 avr->mcu_avr

/*******************************/

#define _CPOL 0 //模式配置

#define _CPHA 0 //模式配置

/*******************************/

#ifdef mcu_51

#include "REG51.h"

#define SCK_IO(x) (0?(P1&=0XFE):(P1|=0X01))//1->输出 0->输入

#define MOSI_IO(x) (0?(P1&=0XFD):(P1|=0X02))

#define MISO_IO(x) (0?(P1&=0XFB):(P1|=0X04))

#define SSEL_IO(x) (0?(P1&=0XF7):(P1|=0X08))

#define SCK_D(x) (x?(P1|=0X01):(P1&=0XFE))

#define MOSI_D(x) (x?(P1|=0X02):(P1&=0XFD))

#define SSEL_D(X) (X?(P1|=0X08):(P1&=0XF7))

#define MISO_I() (P1&0X04)

#endif

#ifdef mcu_pic_18

#include "PIC18.h" #define SCK_IO(x)

(x?(TRISA&=0XFE):(TRISA|=0X01))//1->输出 0->输入

#define MOSI_IO(x) (x?(TRISA&=0XFD):(TRISA|=0X02))

#define MISO_IO(x) (x?(TRISA&=0XFB):(TRISA|=0X04))

#define SSEL_IO(x) (x?(TRISA&=0XF7):(TRISA|=0X08))

#define SCK_D(x) (x?(LATA|=0X01):(LATA&=0XFE))

#define MOSI_D(x) (x?(LATA|=0X02):(LATA&=0XFD))

#define SSEL_D(X) (X?(LATA|=0X08):(LATA&=0XF7))

#define MISO_I() (PORTA&0X04)

#endif

#ifdef mcu_avr

#include "iom8535v.h"

#define SCK_IO(x)

(x?(DDRA|=0X01):(DDRA&=0XFE))//1->输出 0->输入

#define MOSI_IO(x) (x?(DDRA|=0X02):(DDRA&=0XFD))

#define MISO_IO(x) (x?(DDRA|=0X04):(DDRA&=0XFB))

#define SSEL_IO(x) (x?(DDRA|=0X08):(DDRA&=0XF7))

#define SCK_D(x) (x?(PORTA|=0X01):(PORTA&=0XFE))

#define MOSI_D(x) (x?(PORTA|=0X02):(PORTA&=0XFD))

#define SSEL_D(X) (X?(PORTA|=0X08):(PORTA&=0XF7))

#define MISO_I() (PINA&0X04)

#endif extern void SPI_Init(void);

extern unsigned char SPI_Send_Dat(unsigned char

dat);

extern void delay(unsigned char ms );

void delay(unsigned char ms )

{

unsigned char m;

while(ms--)

for(m=0;m