Dear all, I have compiled the following program and am getting redifinition error. I have not redifined the function anywhere, Please help. Following is my code: // SFR description needs to be included #include <reg932.h> #include "timer.h" #include "eeprom.h" #include "port.h" // flag that indicates if the EEPROM is busy or not //static bit meeprombusy; //bit bdata flags; //s/bit combit = flags^0; //extern bdata int combit flags; //**************************** //** Main Program ** // //**************************** void main(void) { interrupt_enable(); ports_init(); eeprom_init(); // flag that indicates if the EEPROM is busy or not eeprom_initread(); if(DEEDAT =! 0) timers_init(); else eeprom_readloc1(); eeprom_readloc2(); eeprom_readloc3(); eeprom_readloc4(); loadvalues timers_starttimer0(); timers_stoptimer0(); } /************************** DESC: Initializes timers Timer 0 generates an interrupt every 1s Timer 1 is not used RETURNS: Nothing CAUTION: If interrupts are being used then EA must be set to 1 after calling this function ************************************************************************/ void timers_init (void) { // configure timer 0 TMOD &= 0xF0; TMOD |= 0x01; TAMOD &= 0xFE; // timer values TH0 = 0xff; TL0 = 0xfe; // set timer 0 isr priority to 0 IP0 &= 0xFD; IP0H &= 0xFD; // enable timer 0 interrupt EA = 1; ET0 = 1; // start timer 0 TR0 = 1; } // timers_init /************************** DESC: Timer 0 Interrupt Service Routine RETURNS: Nothing CAUTION: timers_init must be called first EA must be set to 1 ***************************/ void timers_isr0(void) interrupt 1 using 1 { // reinitialize TH0 = 0xC0; TL0 = 0x00; } /************************** DESC: Starts timer 0 RETURNS: Nothing CAUTION: timers_init must be called first ***************************/ void timers_starttimer0(void) { TR0 = 1; } // timers_starttimer0 /************************** DESC: Stops timer 0 RETURNS: Nothing CAUTION: timers_init must be called first ***************************/ void timers_stoptimer0 ( void ) { TR0 = 0; } // timers_stoptimer0 /************************** DESC: Initializes the EEPROM. Enables EEPROM interrupt RETURNS: Nothing CAUTION: Set EA to 1 after calling to enable all interrupts /***************************/ void eeprom_init ( void ) { // initially eeprom is not busy meeprombusy = 0; // set isr priority to 0 IP1 &= 0x7F; IP1H &= 0x7F; // enable eeprom interrupt EIEE = 0; } /************************** unsigned char eeprom_initread ( unsigned int address // 9-bit address to read (0x000 - 0x1FF) ) { // wait for previous operation to complete while (meeprombusy); // eeprom now busy meeprombusy = 1; // store bit 8 of address // byte operation, clear interrupt flag DEECON = (address >> 8) & 0x01; // store bits 0-7 of address DEEADR = address & 0xFF; // if not using interrupt then poll for end of operation if (!EA || !EIEE) { // wait for operation to complete while (!(DEECON & 0x80)); // eeprom no longer busy meeprombusy = 0; // return value return DEEDAT; } return 0x00; } /**************************/ unsigned char eeprom_readloc1 ( unsigned int address // 9-bit address to read (0x000 - 0x1FF) ) { // wait for previous operation to complete while (meeprombusy); // eeprom now busy meeprombusy = 1; // store bit 8 of address // byte operation, clear interrupt flag DEECON = (address >> 8) & 0x01; // store bits 0-7 of address DEEADR = address & 0xFF; // if not using interrupt then poll for end of operation if (!EA || !EIEE) { // wait for operation to complete while (!(DEECON & 0x80)); // eeprom no longer busy meeprombusy = 0; // return value return DEEDAT; } return 0x00; } /**************************/ void interrupt_enable (void) { EA =1; EX0 =1; ET0 =1; } /************************** void ports_init ( void ) { P0M1 &= 0xFE; P0M2 &= 0xFE; P1M1 |= 0x28; P1M2 &= 0xD7; P3M1 |= 0x03; P3M2 &= 0xFC; } // ports initialisation