From: Manuel B. <ma...@ma...> - 2006-02-27 21:57:28
|
Hi, Am Montag, den 27.02.2006, 18:27 -0800 schrieb Casiano Carlos Budden: > #include "mc68hc908gp32.h" > > void main() > { > int i = 0; > > DDRD = 0xFF; // all ports outputs > PTD = 0x00; > > while (1) > { > PTD = 0x01; > for(i = 0; i <= 5000; i++) > { > PTD = 0x00; > } > > PTD = 0x02; > for(i = 0; i <= 5000; i++) > { > PTD = 0x00; > } > PTD = 0x03; > for(i = 0; i <= 5000; i++) > { > PTD = 0x00; > } > > } > } What are you expecting the processor to do here? Blink? Yes, but with a very high frequency... You are setting some port pins and then you are _immediately_ resetting it 5001 times to zero... So, you won't see anything with your eyes (indeed, with an oscilloscope you would). > > So I decided to compare two *.S19 files yielded from different > compilers, SDCC and > The SDCC and ImageCraft yields ))) different ((( *.S19 files. > > Is that correct?, I suppose that both *.S19 files to be loaded on the > uC should be the same. No, your assumption is incorrect. They must not be the same... Every highlevel compiler has different algorithms to generate the assembler code, which then will be used to generate the processor code that you load into the processors program memory. So processor initialization code, loop generation and various other stuff will be different on different compilers. > Can someone help me. Study a bit more c programming and revise your code ;) you probably wont something like this: while (1) { PTD = 0x00; for(i=0; i<5000; i++) {} // do nothing, just wait a bit PTD = 0x01; for(i=0; i<5000; i++) {} // do nothing again } That should work, if your processor hardware is okay and your programmer works correctly. But hey, I'm using sdcc for 8051 hardware, never tried it for MOTs, so I don't know about the MOT code-generation... Cheers, Manuel -- ma...@ma... http://www.malteser-berlin.de http://www.matronix.de - http://www.elektronik-kompendium.de/public/borchers |