⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c.h.bak

📁 上载的程序可以用于PIC单片机,也可以用于430单片机,本人原创,到至今还没有发现哪位网友想出这种办法,希望站长能多加分.
💻 BAK
字号:
//定义函数
void I2C_Initial(void);
void I2C_Set_sda_high(void);
void I2C_Set_sda_low (void);
void I2C_Set_sck_high(void);
void I2C_Set_sck_low (void);
int  I2C_GetACK(void);
void I2C_SetACK(void);
void I2C_SetNAk(void);
void I2C_START(void);
void I2C_STOP(void);
void I2C_TxHToL(int);
void I2C_TxLToH(int);
int  I2C_RxByte(void);
int  I2C_RxHToL(void);
void Delay_ms(unsigned long nValue);
void Delay_us(unsigned long nValue);

void readByte24AA64(int addr,unsigned char *reby_p);
void writeByte24AA64(int addr,unsigned char *wrby_p);
int readPage24AA64(int addr,unsigned char *repa_p,int len);
void writePage24AA64(int addr,unsigned char *wrpa_p,int len);
unsigned char data_check(unsigned char *Data_REF, unsigned char *Data_CHK, unsigned char n);
void I2C_CLR(void);                     


#define uchar unsigned char
#define uint unsigned int  

#define  XF_MCU    0       //定义用哪一种单片机,1时,用于PIC; 0时,用于MSP430;

#if XF_MCU==0

#include<msp430x14x.h>

#define IIC_DIR P6DIR
#define IIC_OUT P6OUT
#define IIC_IN  P6IN
  
#define SCL BIT2
#define SDA BIT1 

#define LC24_SDA   BIT1

#define SDA_MOV_BIT 1           //SDA 数据调整移位
                                //根据SDA所在管脚,如为0脚,则为0,如为7脚,则为7,     
//--------------------------------------
//SDA 数据线定义
#define SDAOUT IIC_DIR |= SDA    
#define SDAIN  IIC_DIR &= ~SDA
#define SDA1   IIC_OUT |= SDA
#define SDA0   IIC_OUT &= ~SDA
//SCL 时钟线定义
#define SCLOUT IIC_DIR |= SCL
#define SCL1   IIC_OUT |= SCL
#define SCL0   IIC_OUT &= ~SCL

#define SDA_STATE IIC_IN & SDA   //读入SDA状态
//--------------------------------------
#define OPE_INT   _EINT()         //开中断
#define NOT_INT  _DINT()         //关中断
#define NOP()    _NOP()

#else

#include<pic.h>
extern uchar pa_out;
extern uchar pb_out;
extern uchar pc_out;
extern uchar pd_out;
extern uchar pe_out;


#define  LC24_TEMP     pc_out

#define LC24_SDA      0B00010000          //io所属管脚位;0b00000001
#define LC24_SCL      0B00001000          //clk所属管脚位;0b00000010

#define SDA_MOV_BIT 4           //SDA 数据调整移位
                                //根据SDA所在管脚,如为0脚,则为0,如为7脚,则为7,

#define  LC24_SDA_0    ~LC24_SDA
#define  LC24_SDA_1    LC24_SDA

#define  LC24_SCL_0     ~LC24_SCL   
#define  LC24_SCL_1     LC24_SCL

#define  LC24_DIR  TRISC
#define  LC24_OUT  PORTC

#define SDA_STATE  LC24_OUT&LC24_SDA   //读入SDA状态
     
//--------------------------------------
//SDA 数据线定义
#define SDAIN   LC24_DIR |= LC24_SDA
#define SDAOUT  LC24_DIR &= ~LC24_SDA

#define SDA1    LC24_OUT=(LC24_TEMP|= LC24_SDA)
#define SDA0    LC24_OUT=(LC24_TEMP&= ~LC24_SDA)
//SCL 时钟线定义
#define SCLOUT LC24_DIR &= ~LC24_SCL
#define SCL1   LC24_OUT =(LC24_TEMP|= LC24_SCL)
#define SCL0   LC24_OUT =(LC24_TEMP&= ~LC24_SCL)

#define OPE_INT   ei()         //开中断
#define NOT_INT  di()         //关中断

#endif

//写入AT24C02数据表
extern unsigned char wr_buf[8];
//unsigned char write_table=25;  //写入单字节时
//读出AT24C02数据缓冲区
extern unsigned char re_buf[8]; 


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -