|
而且楼主写成了函数, 会发生跳转, 为了效率应该直接循环, 而且一次循环就写8个数据减少跳转次数
void Lcd_WriteBmp16(void* bmp16, s32 size)
{
u16 const* bmp = bmp16;
LCD_SEND_CMD(LcdCmd.WriteGRAM); // Prepare to write GRAM
LCD_CS_OUT(0);
LCD_RS_OUT(1);
//
size >>= 1;
switch(size&7)
{
default:
while((size-=8)>=0)
{
LCD_DAT_OUT(*bmp++); LCD_WR_OUT(0); LCD_WR_OUT(1);
case 7: LCD_DAT_OUT(*bmp++); LCD_WR_OUT(0); LCD_WR_OUT(1);
case 6: LCD_DAT_OUT(*bmp++); LCD_WR_OUT(0); LCD_WR_OUT(1);
case 5: LCD_DAT_OUT(*bmp++); LCD_WR_OUT(0); LCD_WR_OUT(1);
case 4: LCD_DAT_OUT(*bmp++); LCD_WR_OUT(0); LCD_WR_OUT(1);
case 3: LCD_DAT_OUT(*bmp++); LCD_WR_OUT(0); LCD_WR_OUT(1);
case 2: LCD_DAT_OUT(*bmp++); LCD_WR_OUT(0); LCD_WR_OUT(1);
case 1: LCD_DAT_OUT(*bmp++); LCD_WR_OUT(0); LCD_WR_OUT(1);
}
}
LCD_CS_OUT(1);
} |
|