This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

help!why not use Rx as loop counter?

I have a problem. I write a function in another c source file not main file, in

this function nothing do, and I declare the function as extern. In main function I

invoke it 200 times. However, the compiler does not use registerbank as counter.

Why?
extern void func1(void);

void func2(void)
{ unsigned char data i; for(i=200;i;i--);
}

main()
{ unsigned char data i,j; for(i=200;i;i--) // store i in 0x08 { func1(); } for(j=200;j;j--) // store j in R6 { func2(); }
} the assembly code:
C:0x0003 7508C8 MOV 0x08,#TMR2CN(0xC8) 19: { 20: func1();
C:0x0006 120025 LCALL func1(C:0025) 21: }
C:0x0009 D508FA DJNZ 0x08,C:0006 22: for(j=200;j;j--)
C:0x000C 7EC8 MOV R6,#TMR2CN(0xC8) 23: { 24: func2();
C:0x000E 120020 LCALL func2(C:0020) 25: }
C:0x0011 DEFB DJNZ R6,C:000E