1. 程式人生 > >隱藏的比較深的一個bug

隱藏的比較深的一個bug

static uint8_t LcdGetFontIndex(uint8_t font)
{
if(font == '-')
{
return 10;
}
else if(font == ':')
{
return 11;
}
else if(font == ' ')
{
return 12;
}
else
{
return font - 0x30;
}
}








void LcdGetFontDot(uint8_t font, uint8_t *dotData)
{
uint8_t i;
uint8_t offset;
uint8_t index;
index = LcdGetFontIndex(font);
if(index == 12)
{
for(i=0; i<16; i++)
{
dotData[i] = 0x00;
}
return;
}
offset = index*16;////////////////////////////////////
for(i=0; i<16; i++)
{
dotData[i] = LcdRtcDotFont[offset+i];
}


//printf(" font:%x   index:%x  offset:%x\n",  font, index, offset);

}

offset = index*16;////////////////////////////////////

16在此比較特殊,導致font引數是0/'0',1/'1',...9/'9',時,offset的值是相等的。