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.
Hi folks, I have tried the following source code and it seemed not behaving what I was expected
#define Const1 (10) #define Const2 (Const1/4096) #define Base (2850) unsigned int g_wData; float g_fA = Base; float g_fB = Base; u8 IsChanged(void) { g_fA = Base + (Const2 *g_wData); /*if the two value are the same,just return 0*/ /*else return 1 and assign the new value to...*/ if(g_fA == g_fB ) { return (0); } g_fB = g_fA ; return (1); }
Open the option of the target and go to the "c51" page, try to select a bigger number than 3 in the "bits to round for float" column. ps. The Const1 and Const2 should be defined with float numeric. A floating-point compare is not a good idea for a mcu program. Try to use the "long int" type instead of it.