I have the following structure:
struct fence_struct { unsigned char mode; char sitename[13]; unsigned char sector_nr; unsigned char sector_tot; unsigned int start; unsigned int feeder_offset; unsigned int len; unsigned int line_len; unsigned char begin_far; unsigned int res_norm; unsigned int res_min; unsigned int res_max; unsigned char wire_amount; unsigned char wire_name[12]; }; xdata struct fence_struct fence;
strcpy(fence.sitename, "SITENAME");
;strcpy(fence.sitename, "SITENAME"); ;SOURCE LINE # 1535 MOV R0,#LOW (fence+01H) MOV R4,#HIGH (fence+01H) MOV R5,A MOV R3,#0FFH MOV R2,#HIGH (?SC_403) MOV R1,#LOW (?SC_403) LCALL ?C?STRCPY
;strcpy(fence.sitename, "SITENAME"); ;SOURCE LINE # 4306 MOV R0,#LOW (fence+01H) MOV R4,#HIGH (fence+01H) MOV R5,#01H MOV R3,#0FFH MOV R2,#HIGH (?SC_403) MOV R1,#LOW (?SC_403) LCALL ?C?STRCPY
I agree with you: The fact that it initialises the variables correctly after a cold start or after the 2nd reset shows to me that, contrary to what the datasheet says, the DS5000T DOES NOT execute a complete reset after it's taken out of pgm mode. But then again, why does it initialise the numerical variables before and after the strcpy() in question correctly but not the strcpy() itself??