[elektro] C kérdés
Info
info at kiralyelektronika.hu
Mon Jun 8 14:51:55 CEST 2015
uint i = xsize * ysize;
byte b = 0;
while (i--) {
if (!(b)) { b = 1; p++; }
LCDOUT((*p & b) ? pcolor : bcolor);
b <<= 1;
}
Ha a fordító látja, hogy xs vagy ys 8 többszöröse, ki kell
raknia a ciklust 8-as blokkos utasításcsoportokra.
Ha nem teszi rossz a fordítód.
> void LCD_BmpC1(uint16_t x,
> uint16_t y, uint16_t xsize, uint16_t ysize, uint16_t pcolor,
> uint16_t bcolor, uint8_t *p ) //2 color BMP
> {
> unsigned int shift;
> unsigned int xi,yi;
> unsigned int color;
> LCD_SetWindows(x,y,x+xsize-1,y+ysize-1); //blokk beállítása
> LCD_HW_CS_CLR;
> for(yi=0;yi<ysize;yi++)
> { for(xi=0;xi<xsize;xi++)
> { if ((xi&0x7)==0 ) //new byte read
> { shift=*p++; }
> shift<<=1;
> color=bcolor;
> if ((((unsigned char*)&shift)[1])&0x01)
> color=pcolor;
> LCD_HW_OUT_DATA(color);
> }
> }
> // LCD_HW_CS_SET;
> LCD_SetDisplayEnd();
> }A legtömörebb kódot -O3 és -Otime adja, de amit produkál, amit
> csinál annál jobbat nem nehéz csinálni. A fenti kódot nem lehet
> megcsinálni DMA-val, kivéve ha olyan DMA van a rendszerben ami kezel
> a shitet és mellé még lookup táblát is
> használ.----------------------------------------------------------------------------------------------------------------------------------------------------Nem
> akarom felülírni a C kódot, amit fordít az teljesen megfelelő
> számomra.De néhány sor miatt elegendő lehetne egy fele sebességű
> uC-rel is. Az esetemben egy járatosabb uC típus lenne.
> Lajos Rancz <lajos.rancz at gmail.com> írta:
>>Helló!
>>
>>Ebből nem sokat lehet érteni.
>>
>>Üdv
>>
>>
>>
>>2015. június 8. 12:34 hg12345 írta, <hg12345 at freemail.hu>:
>>
>>> Hi, van megoldás, hogy C forrás szinten ASM betét nélkül a C-t
>>> használja.Egy kétszínű BMP/FONT képet éni maximális teljesítménnyel
>>> megjeleníteni.Bizonyos sebesség felett már nem a kiküldés korlátozza a
>>> megjelenítési sebességet, hanem a program.Maga a kép kishiftelő
>>> algoritmusban van a nulla tesztelés visszavezetése miatt kb 30-40%
>>> tartalék... jó lenne ezt kihasználni. ASM betétben nem gond, de
>>> szimpatikusabb lenne hordozható kivitelben. Ismereteim szerint ez nem
>>> lehetséges, de a remény hal meg utoljára...........
>>> -----------------------------------------
>>> elektro[-flame|-etc]
>>-----------------------------------------
>> elektro[-flame|-etc]
> -----------------------------------------
> elektro[-flame|-etc]
More information about the Elektro
mailing list