C51 COMPILER V7.06 OPEN_I2C 08/18/2005 15:30:30 PAGE 1 C51 COMPILER V7.06, COMPILATION OF MODULE OPEN_I2C OBJECT MODULE PLACED IN Open_I2C.OBJ COMPILER INVOKED BY: d:\Keil777\C51\BIN\C51.EXE Open_I2C.c BROWSE DEBUG OBJECTEXTEND stmt level source 1 #include *** WARNING C318 IN LINE 1 OF Open_I2C.c: can't open file 'io.h' 2 #include "system.h" 3 #include "Open_I2C.h" 4 //------------------------------------------------------------------------- 5 unsigned int I2C_Read_Period() 6 { 7 1 unsigned char low,high; 8 1 low = IORD(I2C_0_BASE,I2C_PRER_LO); *** WARNING C206 IN LINE 8 OF OPEN_I2C.C: 'IORD': missing function-prototype *** ERROR C267 IN LINE 8 OF OPEN_I2C.C: 'IORD': requires ANSI-style prototype 9 1 high= IORD(I2C_0_BASE,I2C_PRER_HI); 10 1 return (high<<16)+low; 11 1 } 12 //------------------------------------------------------------------------- 13 unsigned char I2C_Read_Ctrl() 14 { 15 1 return IORD(I2C_0_BASE,I2C_CTR); 16 1 } 17 //------------------------------------------------------------------------- 18 unsigned char I2C_Read_RX() 19 { 20 1 return IORD(I2C_0_BASE,I2C_RXR); 21 1 } 22 //------------------------------------------------------------------------- 23 unsigned char I2C_Read_Status() 24 { 25 1 return IORD(I2C_0_BASE,I2C_SR); 26 1 } 27 //------------------------------------------------------------------------- 28 void I2C_Write_Period(unsigned int Period) 29 { 30 1 IOWR(I2C_0_BASE,I2C_PRER_LO,Period&0xFF); 31 1 IOWR(I2C_0_BASE,I2C_PRER_HI,Period>>16); 32 1 } 33 //------------------------------------------------------------------------- 34 void I2C_Write_Ctrl(unsigned char value) 35 { 36 1 IOWR(I2C_0_BASE,I2C_CTR,value); 37 1 } 38 //------------------------------------------------------------------------- 39 void I2C_Write_TX(unsigned char value) 40 { 41 1 IOWR(I2C_0_BASE,I2C_TXR,value); 42 1 } 43 //------------------------------------------------------------------------- 44 void I2C_Write_CMD(unsigned char value) 45 { 46 1 IOWR(I2C_0_BASE,I2C_CR,value); 47 1 } 48 //------------------------------------------------------------------------- 49 void I2C_Init(unsigned int Period) 50 { 51 1 I2C_Ctrl_Reg a; 52 1 I2C_Write_Period(Period); C51 COMPILER V7.06 OPEN_I2C 08/18/2005 15:30:30 PAGE 2 53 1 a.I2C_Ctrl_Flags.CORE_ENABLE=1; 54 1 a.I2C_Ctrl_Flags.INT_ENABLE=1; 55 1 a.I2C_Ctrl_Flags.RESERVED=0; 56 1 I2C_Write_Ctrl(a.Value); 57 1 } 58 //------------------------------------------------------------------------- 59 unsigned char I2C_Send(unsigned char value,unsigned char STA,unsigned char STO) 60 { 61 1 unsigned char ACK; 62 1 I2C_CMD_Reg I2C_CMD; 63 1 I2C_Status_Reg I2C_Status; 64 1 I2C_Write_TX(value); 65 1 I2C_CMD.Value=0; 66 1 if(STA!=0) 67 1 I2C_CMD.I2C_CMD_Flags.STA=1; 68 1 if(STO!=0) 69 1 I2C_CMD.I2C_CMD_Flags.STO=1; 70 1 I2C_CMD.I2C_CMD_Flags.WR=1; 71 1 I2C_Write_CMD(I2C_CMD.Value); 72 1 do 73 1 { 74 2 I2C_Status.Value=I2C_Read_Status(); 75 2 } 76 1 while(I2C_Status.I2C_Status_Flags.TIP); 77 1 if(!I2C_Status.I2C_Status_Flags.RXACK) 78 1 ACK=1; 79 1 else 80 1 ACK=0; 81 1 return ACK; 82 1 } 83 //------------------------------------------------------------------------- 84 C51 COMPILATION COMPLETE. 2 WARNING(S), 1 ERROR(S)