#include "../asum/mscbemb.h"#include "I2C_handler.h"Functions | |
| void | I2C_Clear (void) |
| void | I2C_Start (void) |
| void | I2C_Stop (void) |
| unsigned char | I2C_WriteByte (unsigned char datByte, unsigned char flag) |
| unsigned char | I2C_ReadByte (bit flag) |
| void | I2C_ClockOnce (void) |
Variables | |
| sbit | I2C_SDA = MSCB_I2C_SDA |
| sbit | I2C_SCL = MSCB_I2C_SCL |
| void I2C_Clear | ( | void | ) |
| void I2C_ClockOnce | ( | void | ) |
| unsigned char I2C_ReadByte | ( | bit | flag | ) |
00099 { 00100 char i = 0; 00101 char dataRead = 0x00; 00102 00103 for(i = 7; i >= 0; i--) 00104 { 00105 dataRead |= ((unsigned char) I2C_SDA) << i; 00106 I2C_ClockOnce(); 00107 } 00108 00109 //send ACK / NACK 00110 if(flag == ACK) 00111 { 00112 I2C_SDA = 0; 00113 } 00114 else if(flag == I2C_NACK) 00115 { 00116 I2C_SDA = 1; 00117 } 00118 I2C_ClockOnce(); 00119 00120 return dataRead; 00121 }
| void I2C_Start | ( | void | ) |
| void I2C_Stop | ( | void | ) |
| unsigned char I2C_WriteByte | ( | unsigned char | datByte, | |
| unsigned char | flag | |||
| ) |
00058 { 00059 char i = 0; 00060 unsigned char toBeSent = 0; 00061 00062 if(flag == I2C_WRITE_FLAG) 00063 { 00064 toBeSent = (datByte << 1) & 0xFE; 00065 } 00066 else if(flag == I2C_READ_FLAG) 00067 { 00068 toBeSent = (datByte << 1) | 0x01; 00069 } 00070 else 00071 { 00072 toBeSent = datByte; 00073 } 00074 for(i = 7; i >= 0; i--) 00075 { 00076 I2C_SDA = (toBeSent >> i) & 0x01; 00077 delay_us(1); //SU;DAT 00078 I2C_ClockOnce(); 00079 } 00080 00081 if(I2C_SDA == 1) 00082 { 00083 I2C_ClockOnce(); 00084 return I2C_ACK; 00085 } 00086 else if(I2C_SDA == 0) 00087 { 00088 I2C_ClockOnce(); 00089 return I2C_NACK; 00090 } 00091 else 00092 { 00093 I2C_ClockOnce(); 00094 return I2C_WRITE_ERROR; 00095 } 00096 }
| sbit I2C_SCL = MSCB_I2C_SCL |
| sbit I2C_SDA = MSCB_I2C_SDA |
1.4.7