We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
i am using an 89v51rd2 controller with out external RAM, i use the following reentrant function for one of the functionalities, i cant avoid it because this function can be recursively called any no of times,
void reentrantfunction(unsigned char data1, unsigned char data2) compact reentrant { unsigned char local1, local2 = 0;
if(data2) statements;
switch(data2) { case 0: ……. break; ………… case 5: ….. break; } Function2();
for(local1=0; (local1<25); local1++) { Function3();
if(global1) { Global2[local2] = local1; local2++; } Global3 = xx; Function4(); } If (Local2) { Global4 +=1;
for(data2=0;data2<local2;data2++) { Rentrantfuncion (global2 [data2],global4); } Global4 -=1; } }
this is how my startup file stack initialization looks like..
IBPSTACK EQU 0 IBPSTACKTOP EQU 0FFH+1
XBPSTACK EQU 0 XBPSTACKTOP EQU 0FFFFH+1
PBPSTACK EQU 1 PBPSTACKTOP EQU 02FFH+1
i am having problems with this function, the speed for now is not a concern but the functionality itself goes wrong somewhere.. does the code ring bells to anyone ??