Hi, I am a getting a message after compiling my program. The warning is written below. I checked the errors list and gives me the reason why this is happening. But as described below caller1 is "C_CSTARTUP". What does this mean? Thank you WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?_DELAY?MAIN CALLER1: ?C_C51STARTUP CALLER2: ?PR?INTERRUPT_PULSES?MAIN
Are you making a direct call to your ISR from somewhere in your program or are you calling a function from your ISR? If that doesn't help please post the shortest *complete* code that links with this error. Stefan
Stefan here is the ISR. I changed the some of the variables for posting. But I do not see calling delay. "call function" in this a delay is called, but its delay2 and I am getting a warning the same as the other one I posted, but for delay2. The write functions do not include a delay, either does the min_power() void Interrupt_Pulses (void) interrupt 0 { PCON = 0x18; //back to normal mode if (condition() == 1) { call Function(); } P_Counter++; if (P_Counter == 680) //680 pulses per liter { P_Counter = 0; Here--; pus = Here; EEPROMwrite(ADDR, pus); // write new value back to EEPROM pus >>= (0x08); //write high byte EEPROMwrite(ADDR1, pus); if (Here <= 10) { LED = 1; for (c = 0; c < 13000; c++) { //waste time and ; //do nothing } LED = 0; } if (Here == 0) { DOS = 1; for (c = 0; c < 12000; c++) { //waste timea and ; } DOS = 0; PCON = 0x10; Min_Power(); //go to sleep } } }
Have you looked at this knowledgebase article? http://www.keil.com/support/docs/805.htm Jon
Jon and Stefan, thank you very much. Problem fixed.