We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I've port C source from C51 to CARM but CARM compiler seem has bug in comparison.
#include <lpc210x.h> //DKARM 1.3h //---------- //AA MACRO ASSEMBLER V0.10a //CA ARM COMPILER V0.10a //LA ARM LINKER/LOCATER V0.10c unsigned char test(void) { return(0xEE); } void main(void) { unsigned char K; K=test(); if ((K&0x0F)!=0x0F) { //0xEE&0x0F=>0x0E //0x0E!=0x0F //but this block don't enter while (1); } else { while (1); } }
Smells of optimisation to me! You have an 'if' statement where the content of both the 'then' and 'else' clauses are identical! Thus the operation of your code is unaffected if the compiler simply replaces the whole thing with:
while (1);