Hi I had many c files in my project. Two of them are main.c and Print.c. I wrote a function delay() in Print.c. I call this function from main.c. After complete execution of delay() code didnot return to main.c. Rather it goes in middle of a function in Print.c. Any body have the solution of my this problem. Regards Farhan Arshad
Did you check for stack Overflow?
"Did you check for stack Overflow?" Or for an invalid/uninitialised pointer that could be trashing the stack...?
hi Stack is not over flow. I check the assembly code generated actually in main file when it calls the dalay function the address of next line is 0x0018. When it returns from the delay function it jumps on the 0x0018 of the file which contain the delay function. Here is my delay function.
void delay(int j) { int i; for(i=0;i<j;i++) { } }
Sounds like a stack problem (is the stack pointer correctly initialized). Can you duplicate the problem also in real chip. What is at the end of your 'main' routine? Is there a while (1) loop in main?
hi My main routine ends with a while(1) loop.And SP is initalized with 0x81 in REG51.h Regards Farhan Arshad
My main routine ends with a while(1) loop.And SP is initalized with 0x81 in REG51.h No, it is not, is is defined as 0x81 Erik
View all questions in Keil forum