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