To whom it may concern:

I kept obtaining the following error message 
error 2: Initializer element is not constant
while building the following code using MCU8051IDE, from Compiler configuration, MCU8051IDE adopts --std-sdcc89 .

1) Code A
#include <reg51.h>
sbit RELAY = P1^4;
sbit K1    = P2^7;

main()
{
  if (!K1) RELAY = 0;
  else RELAY = 1;  
}

Clearly, sdcc89 is not keil C, which is fantastic ! However, it seems if I modify the above code and change it into

1) Code B
#include <reg51.h>

main()
{
sbit RELAY = P1^4;
sbit K1    = P2^7;
  if (!K1) RELAY = 0;
  else  RELAY = 1;    
}

the above code B can be successfully built. However, after I did hex->bin and flash the .bin file into my board, the board doesn't work at all. However, by building code A and flashing the .hex file using PZ-ISP under Windows, the board works fine.


So, is there any suggestions by using sdcc?
How can I make the code both built and work successfully by compiling with sdcc?


Thank you very much.

--

Pei JIA

Email: jp4work@gmail.com
cell:    +1 604-362-5816

Welcome to Vision Open
http://www.visionopen.com