hi i am trying to compare the value of two signed chars. one is a plain variable currentval while the other is a signed char inside an array of type signed char called spectrumarray.for some reason it doesnt work.
xdata signed char spectrumarray[256]; signed char currentval;//current value at this freq int xdata channel; for(channel=0;channel<256;channel++){ for(sample=0;sample<70;sample++){//sample 70 times at this freq currentval=halSpiReadStatus(CCxxx0_RSSI); //this just reads a register from some a source external to the microcontroller if((signed char)spectrumarray[channel] < (signed char)currentval) spectrumarray[channel]=currentval; //want to put currentval into the array if it is more than the value currently in the array } printf("%Bd\n\r",(signed char)currentval); //did this just to check to see what the currentval was }
Used this to initalize the array
void init_array(void){ int xdata arrayindex; for(arrayindex=0;arrayindex<256;arrayindex++){ spectrumarray[arrayindex]=-128;//initialize to the lowest value possible } }
I am sure the currentval values are more than what is inside the array when they are compared, yet when i print out the whole array it only holds -128 for every value except the last.I'm kind of stumped.oh yea forgot to mention im also new to the C51. microcontroller in use is the Silabs C8051F320.
ok im sorry i realized my error. it was pretty stupid i cut an paste the code from another function i made and i initialized the array in the wrong place. and i kept telling myself i didnt do that arr sorry ppl
"i kept telling myself..."
So, the lesson to learn here is: assume nothing!
Always verify your assumptions; test your theories.
As already mentioned, this chip has on-chip debug - use it!