// // H8/3048-->LM32C041 sample ver0.0001 // By Yosuke Kato // 2003/06/29 // #include "3048.h" #include #define LCD_VRAM ( (volatile unsigned short *)0x800000) void PUTC(volatile unsigned short,volatile unsigned short, volatile unsigned char,volatile unsigned short, volatile unsigned short); void LINE(volatile unsigned short,volatile unsigned short, volatile unsigned short,volatile unsigned short, volatile unsigned short); int main(void) { volatile unsigned short i,j,k,m; volatile unsigned int l; /* I/Oの初期設定 */ BSC.ABWCR.BYTE=0x00; P8.DDR=0xE2; P1.DDR = 0xFF; P2.DDR = 0xFF; P5.DDR = 0xFF; P6.DDR = 0xF8; PA.DDR = 0x80; RFSHC.RTCOR = 0x60; RFSHC.RTMCSR.BIT.CKS = 0x01; RFSHC.RFSHCR.BYTE = 0x3F; WCER = 0xef; //wait信号によるwaitを有効にする CSCR = 0x1f; //CS4を有効にする i=0; for(;;){ i++; if(i==240){i=0;} PUTC(160,120,0x00,0x38,0x07); PUTC(180, 80,0x01,0x1FF,0x38); PUTC(200,150,0x02,0x38,0x180); for(k=0;k<20;k++){ LINE(0,i,i,239,i);} LINE(0,i,i,239,0); } } // LINE文もどき void LINE( PosX1, PosY1,PosX2,PosY2,Color) volatile unsigned short PosX1,PosY1,PosX2,PosY2,Color; { volatile unsigned short i,j,k,l; volatile unsigned int p; volatile unsigned char f; i=PosX2-PosX1; j=PosY2-PosY1; if(i==0){ p=512*PosY1+PosX1; for(k=0;k<=j;k++){ LCD_VRAM[p]=Color; p+=512; } } if(j==0){ p=512*PosY1+PosX1; for(k=0;k<=i;k++){ LCD_VRAM[p]=Color; p++; } } if((i=j){ l-=j; p+=(512+1); }else{ p+=512; } } } if((i>=j)&&(j != 0)){ p=512*PosY1+PosX1; f=(j+1)/2; f=((f+i+1)/(j+1)) & 1; if(f==1){ l=i/2; }else{ l=0 ;} for(k=0;k<=i;k++){ LCD_VRAM[p]=Color; l+=j; if(l>=i){ l-=i; p+=(512+1); }else{ p++; } } } } //一文字表示(withフォントデータ) void PUTC( PosX, PosY, a, FrontColor, BackColor) volatile unsigned short PosX,PosY; volatile unsigned char a; volatile unsigned short FrontColor,BackColor; { volatile unsigned short k; volatile unsigned int p; volatile unsigned char dat; //フォントデータ(文字データは各位で用意されたい) static unsigned char fonts[] = { 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, //塗りつぶし 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15, //メッシュ1 0x0a, 0x15, 0x0a, 0x15, 0x0a, 0x15, 0x0a, //メッシュ2 }; for(k=0;k<7;k++){ dat=fonts[a*7+k]; p=((unsigned int)(PosY+k)*512)+(unsigned int)(PosX); if((dat & 0x20)!=0){ LCD_VRAM[p+0]=FrontColor;}else{ LCD_VRAM[p+0]=BackColor;} if((dat & 0x10)!=0){ LCD_VRAM[p+1]=FrontColor;}else{ LCD_VRAM[p+1]=BackColor;} if((dat & 0x08)!=0){ LCD_VRAM[p+2]=FrontColor;}else{ LCD_VRAM[p+2]=BackColor;} if((dat & 0x04)!=0){ LCD_VRAM[p+3]=FrontColor;}else{ LCD_VRAM[p+3]=BackColor;} if((dat & 0x02)!=0){ LCD_VRAM[p+4]=FrontColor;}else{ LCD_VRAM[p+4]=BackColor;} if((dat & 0x01)!=0){ LCD_VRAM[p+5]=FrontColor;}else{ LCD_VRAM[p+5]=BackColor;} } }