I tried to small program to see the code produced by the compiler.
This is the C code: unsigned char loop;
while (1) {
P3 = 0xFF;
for(loop=0xff; loop>0; loop--) {}
P3 = 0x00;
}
This is the disassembly:
25: unsigned char loop;
26:
27: while (1) {
28:
29: P3 = 0xFF;
C:0x0800 75B0FF MOV P3(0xB0),#0xFF
30: for(loop=0xff; loop>0; loop--) {}
C:0x0803 7FFF MOV R7,#0xFF
C:0x0805 DFFE DJNZ R7,C:0805
31: P3 = 0x00;
C:0x0807 E4 CLR A
C:0x0808 F5B0 MOV P3(0xB0),A
32: for(loop=0xff; loop>0; loop--) {}
C:0x080A 7FFF MOV R7,#0xFF
C:0x080C EF MOV A,R7
C:0x080D D3 SETB C
C:0x080E 9400 SUBB A,#0x00
C:0x0810 40EE JC main(C:0800)
C:0x0812 1F DEC R7
C:0x0813 80F7 SJMP C:080C
C:0x0815 787F MOV R0,#0x7F
C:0x0817 E4 CLR A
C:0x0818 F6 MOV @R0,A
C:0x0819 D8FD DJNZ R0,C:0818
C:0x081B 758107 MOV SP(0x81),#0x07
C:0x081E 020800 LJMP main(C:0800)
Why is the second timing loop so different than the first ??
What can I do so both are the same ???
Thank you
Donald
Han's, Andy, Per.
A quick thanks for the latest input and happy Easter wishes!
Kindest regards.