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

📄 twi_lib.h

📁 单片机开发程序原码,仅供个人学习参考. 各原码详细功能见压缩包及代码注释.
💻 H
字号:
/*H**************************************************************************
* NAME:         twi_lib.h
*----------------------------------------------------------------------------
* Copyright (c) 2003 Atmel.
*----------------------------------------------------------------------------
* RELEASE:      snd1c-refd-nf-4_0_3
* REVISION:     1.2
*----------------------------------------------------------------------------
* PURPOSE:
* This file contains the I2C driver definition
*****************************************************************************/

#ifndef _I2C_LIB_H_
#define _I2C_LIB_H_

#define I2C_NB_SLAVE_DATA   100


/*_____ D E F I N I T I O N S ______________________________________________*/

typedef struct{ unsigned char address;
                unsigned char rw;
                unsigned char nbbytes;
                unsigned char *buf;
              } I2C_type_message;


/*_____ D E C L A R A T I O N ______________________________________________*/

extern  bit                 b_I2C_busy;
extern  unsigned char       I2C_Err;
extern  xdata               I2C_type_message  I2C_message;        // The I2C message to be sent in Master Mode
extern  unsigned char xdata I2C_slave_data[I2C_NB_SLAVE_DATA];  //The slave data buffer when I2C ask in slave


/*_____ M A C R O S ________________________________________________________*/


#define I2C_RATIO_256     0x00
#define I2C_RATIO_224     0x01
#define I2C_RATIO_192     0x02
#define I2C_RATIO_160     0x03
#define I2C_RATIO_960     0x80
#define I2C_RATIO_120     0x81
#define I2C_RATIO_60      0x82
#define I2C_RATIO_TIMER1  0x83

#define I2C_CR2           0x80
#define I2C_SSIE          0x40
#define I2C_STA           0x20
#define I2C_STO           0x10
#define I2C_SI            0x08
#define I2C_AA            0x04
#define I2C_CR1           0x02
#define I2C_CR0           0x01

#define I2C_WAIT_EVENT    { while ( (SSCON & I2C_SI) != I2C_SI ); }
#define I2C_SET_START     { SSCON |= I2C_STA;   } 
#define I2C_CLEAR_START   { SSCON &= ~I2C_STA;  }
#define I2C_SET_STOP      { SSCON |= I2C_STO;   }
#define I2C_CLEAR_STOP    { SSCON &= ~I2C_STO;  }
#define I2C_SET_AA        { SSCON |= I2C_AA;    } 
#define I2C_CLEAR_AA      { SSCON &= ~I2C_AA;   }
#define I2C_CLEAR_SI      { SSCON &= ~I2C_SI;   }



#define Tranfer_OK      0
#define BusError        1
#define NoHostAdrAck    2
#define NoHostDataAck   3
#define ArbitrationLost 4
#define UnknownError    5
#define I2C_NOT_FREE    6


#define I2C_READ        1
#define I2C_WRITE       0

/*_____ P R O T O T Y P E S ____________________________________________________________*/

unsigned char I2C_baud_rate (unsigned int ratio);
unsigned char I2C_Send_Message_polling( unsigned char slave_adr,bit rw, unsigned char nbytes, unsigned char *info );
unsigned char I2C_Send_Message_interrupt( unsigned char slave_adr,bit rw, unsigned char nbytes, unsigned char *info);
void I2C_decode_status();
unsigned char I2C_slave_polling(void);
void I2C_slave_interrupt(void);

#endif /* _I2C_H_ */

⌨️ 快捷键说明

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