[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