www.pudn.com > s3c2410VGATEST.rar > lcd.c


#include  
#include "2410addr.h" 
#include "2410lib.h" 
#include "def.h" 
#include "lcdlib.h" 
#include "glib.h" 
#include "lcd.h" 
#include ".\bmp\DEMO256.h" 
#include ".\bmp\DEMO240320.h" 
 
void Lcd_Port_Init(void); 
void Lcd_Port_Return(void); 
void Lcd_Palette1Bit_Init(void); 
void Lcd_Palette8Bit_Init(void); 
void __irq Lcd_Int_Frame(void); 
void __irq Lcd_Int_Fifo(void); 
void __irq Lcd_Int_Fifo_640480(void); 
 
unsigned save_rGPCUP,save_rGPCDAT,save_rGPCCON; 
unsigned save_rGPDUP,save_rGPDDAT,save_rGPDCON;  
unsigned lcd_count; 
 
void Lcd_Port_Init(void) 
{ 
    save_rGPCCON=rGPCCON; 
    save_rGPCDAT=rGPCDAT; 
    save_rGPCUP=rGPCUP; 
    save_rGPDCON=rGPDCON; 
    save_rGPDDAT=rGPDDAT; 
    save_rGPDUP=rGPDUP; 
    rGPCUP=0xffffffff; // Disable Pull-up register 
    rGPCCON=0xaaaaaaaa; //Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND  
    rGPDUP=0xffffffff; // Disable Pull-up register 
    rGPDCON=0xaaaaaaaa; //Initialize VD[23:8] 
    Uart_Printf("Initializing GPIO ports..........\n"); 
} 
 
void Lcd_Port_Return(void) 
{ 
    rGPCCON=save_rGPCCON; 
    rGPCDAT=save_rGPCDAT; 
    rGPCUP=save_rGPCUP; 
    rGPDCON=save_rGPDCON; 
    rGPDDAT=save_rGPDDAT; 
    rGPDUP=save_rGPDUP; 
} 
 
void Lcd_Palette1Bit_Init(void) 
{ 
    U32 *palette; 
    palette=(U32 *)PALETTE; 
    *palette++=0x0; // Black 
    *palette=0xffff; // White 
} 
 
void Lcd_Palette8Bit_Init(void) 
{ 
    int i;	 
    U32 *palette; 
    rLCDCON5|=(1<<11); // 5:6:5 Palette Setting 
    palette=(U32 *)PALETTE; 
    for(i=0;i<256;i++) 
	*palette++=DEMO256pal[i]; 
} 
 
 
void __irq Lcd_Int_Frame(void) 
{ 
    rLCDINTMSK|=3; // Mask LCD SUB Interrupt 
 
    // GPG4 is ....  
    rGPGDAT&=(~(1<<4)); // GPG4=Low 
    Delay(50); // GPG4=Low 
    rGPGDAT|=(1<<4); //GPG4=High 
 
    rLCDSRCPND=2; // Clear LCD SUB Interrupt source pending 
    rLCDINTPND=2; // Clear LCD SUB Interrupt pending 
    rLCDINTMSK&=(~(2)); // Unmask LCD FRAME Interrupt 
    ClearPending(BIT_LCD); 
} 
 
 
//240320 
void __irq Lcd_Int_Fifo(void) 
{ 
    rLCDINTMSK|=3; // Mask LCD SUB Interrupt 
 
    if((lcd_count%20)==0) Uart_Printf("\n"); 
    Uart_Printf("."); 
    lcd_count++; 
 
    rLCDSRCPND=1; // Clear LCD SUB Interrupt source pending 
    rLCDINTPND=1; // Clear LCD SUB Interrupt pending 
    rLCDINTMSK&=(~(1)); // Unmask LCD FRAME Interrupt 
    ClearPending(BIT_LCD); 
} 
 
void Test_Lcd_Stn_1Bit(void) 
{ 
    int i,j; 
    Lcd_Port_Init(); 
    Lcd_Init(MODE_STN_1BIT); 
    Glib_Init(MODE_STN_1BIT); 
    Lcd_EnvidOnOff(1); // Enable ENVID Bit 
    Uart_Printf("[STN Mono(1bit/1pixel) LCD Test]\n");               
 
    Glib_ClearScr(0, MODE_STN_1BIT); 
    for(j=0;j31)) 
		    { 
		        Glib_FilledRectangle(i,j,i+19,j+79,((k%16)<<(4*(k/16)))); 
		        k++; 
		    } 
		    else 
		    { 
		        Glib_FilledRectangle(i,j,i+19,j+79,((k-(1+2*(k%16)))<<(4*(k/16)))); 
		        k++; 
		    } 
		} 
    Uart_Printf("CSTN 4K color mode test 1. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_ClearScr(0, MODE_CSTN_12BIT); 
    for(j=0;j<240;j++) 
		for(i=0;i<320;i++) 
		    PutPixel(i,j,((i/40)<<9)+((j/30)<<5)+(((j/15)%2)<<1)+((i/20)%2)); 
    Uart_Printf("CSTN 4K color mode test 2. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_ClearScr(0, MODE_CSTN_12BIT); 
    k=0; 
    for(i=160;i<480;i+=20) 
    	for(j=120;j<360;j+=15) 
    	{ 
    	    Glib_FilledRectangle(i,j,i+19,j+14,(((k&0xf)<<8)|((k%4)<<4)|(k&0xf0)) ); 
    	    k++; 
    	} 
 
    // #0		     
    // 00		     
    Glib_Rectangle(0,0,319,239,0xf00);    
    Glib_Line(0,0,319,239,0x0f0);         
    Glib_Line(0,239,319,0,0x00f); 
    // 0# 
    // 00 
    Glib_Rectangle(0+320,0,319+320,239,0xfff); 
    Glib_Line(0+320,0,319+320,239,0xfff);         
    Glib_Line(0+320,239,319+320,0,0xfff); 
    // 00 
    // #0 
    Glib_Rectangle(0,0+240,319,239+240,0xfff); 
    Glib_Line(0,0+240,319,239+240,0xfff);         
    Glib_Line(0,239+240,319,0+240,0xfff); 
    // 00 
    // 0# 
    Glib_Rectangle(0+320,0+240,319+320,239+240,0xfff); 
    Glib_Line(0+320,0+240,319+320,239+240,0xfff);      
    Glib_Line(0+320,239+240,319+320,0+240,0xfff); 
    Glib_Rectangle(50+320,50+240,269+320,189+240,0xfff); 
 
    Uart_Printf("Virtual Screen Test(CSTN 4K color). Press any key[ijkm\\r]!\n"); 
    MoveViewPort(MODE_CSTN_12BIT); 
    Lcd_MoveViewPort(0,0,MODE_CSTN_12BIT); 
    Lcd_CstnOnOff(0); // Disable ENVID Bit and GPB5 output 
    Lcd_Port_Return(); 
} 
 
 
void Test_Lcd_Tft_8Bit_240320(void) 
{ 
    int i,j,k; 
    Lcd_Port_Init(); 
    Lcd_Palette8Bit_Init(); // Initialize 256 palette  
    Lcd_Init(MODE_TFT_8BIT_240320); 
    Glib_Init(MODE_TFT_8BIT_240320); 
    Lcd_Lpc3600Enable(); // Enable LPC3600 
    Lcd_PowerEnable(0, 1); 
    Uart_Printf("[TFT 256 COLOR(8bit/1pixel) LCD TEST]\n"); 
    rTPAL = (1<<24)|((0xff)<<16); // Enable Temporary Palette : Red 
    Lcd_EnvidOnOff(1); // Enable ENVID Bit 
    Uart_Printf("TFT 256 color mode test 1. Press any key!\n"); 
    Uart_Getch();  
 
    Glib_ClearScr(0, MODE_TFT_8BIT_240320); // Fill the LCD panel with Black Color 
    k=0; 
    for(i=0;i<320;i+=20) 
		for(j=0;j<240;j+=15) 
		{  
		    Glib_FilledRectangle(j,i,j+14,i+19,(k%256)); 
		    k++; 
		} 
    rTPAL = 0; // Disable Temporary Palette 
    Uart_Printf("TFT 256 color mode test 2. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_ClearScr(0, MODE_TFT_8BIT_240320); // Fill the LCD panel with Black Color 
    k=0; 
    for(i=0;i<320;i+=10) 
		for(j=0;j<240;j+=10) 
		{  
		    Glib_FilledRectangle(j,i,j+9,i+9,(k%256)); 
		    k+=30; 
		} 
    Uart_Printf("TFT 256 color mode test 3. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_ClearScr(0, MODE_TFT_8BIT_240320); 
    k=0; 
    for(i=80;i<240;i+=10) 
    { 
    	for(j=60;j<180;j+=10) 
    	{ 
    	    Glib_FilledRectangle(j,i,j+9,i+9,k); 
    	    k++; 
    	} 
    } 
    Glib_Rectangle(0,0,239,319,255);    
    Glib_Line(0,0,239,319,255);         
    Glib_Line(0,319,239,0,255); 
     
    Glib_Rectangle(0+240,0,239+240,319,255); 
    Glib_Line(0+240,0,239+240,319,255);         
    Glib_Line(0+240,319,239+240,0,255); 
     
    Glib_Rectangle(0,0+320,239,319+320,255); 
    Glib_Line(0,0+320,239,319+320,255);         
    Glib_Line(0,319+320,239,0+320,255); 
     
    Glib_Rectangle(0+240,0+320,239+240,319+320,255); 
    Glib_Line(0+240,0+320,239+240,319+320,255);      
    Glib_Line(0+240,319+320,239+240,0+320,255); 
 
    Glib_Rectangle(10+240,10+320,480-11,640-11,255); 
 
    Uart_Printf("Virtual Screen Test(TFT 256 color). Press any key[ijkm\\r]!\n"); 
    MoveViewPort(MODE_TFT_8BIT_240320); 
    Lcd_MoveViewPort(0,0,MODE_TFT_8BIT_240320); 
    Lcd_EnvidOnOff(0); 
    Lcd_Port_Return(); 
} 
 
 
void Test_Lcd_Tft_16Bit_240320(void) 
{ 
    int i,j,k; 
    Lcd_Port_Init(); 
    Lcd_Init(MODE_TFT_16BIT_240320); 
    Glib_Init(MODE_TFT_16BIT_240320); 
    Lcd_Lpc3600Enable(); // Enable LPC3600 
    Lcd_PowerEnable(0, 1); 
    Lcd_EnvidOnOff(1); 
    Uart_Printf("[TFT 64K COLOR(16bit/1pixel) LCD TEST]\n"); 
 
    Glib_ClearScr(0, MODE_TFT_16BIT_240320); 
    Glib_FilledRectangle(0,0,239,159,0xf800);     
    Glib_FilledRectangle(0,160,239,320,0xf800);     
    Uart_Printf("TFT 64K color mode test 1. Press any key!\n"); 
    Uart_Getch();  	 
     
 
    Glib_ClearScr(0, MODE_TFT_16BIT_240320); 
    Glib_Rectangle(0,0,239,319,0x07e0);    
    Glib_FilledRectangle(0,0,20,20,65535);    
    Glib_Rectangle(220,300,239,319,65535);    
    Glib_Line(0,0,239,319,0x1f);         
    Glib_Line(239,0,0,319,0xf800); 
    Uart_Printf("TFT 64K color mode test 2. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_ClearScr(0, MODE_TFT_16BIT_240320); 
    k=0; 
    for(i=80;i<240;i+=10) 
    { 
    	for(j=60;j<180;j+=10) 
    	{ 
    	    Glib_FilledRectangle(j,i,j+9,i+9,k); 
    	    k++; 
    	} 
    } 
 
    Glib_Rectangle(0,0,239,319,65535);    
    Glib_Line(0,0,239,319,65535);         
    Glib_Line(0,319,239,0,65535); 
     
    Glib_Rectangle(0+240,0,239+240,319,255); 
    Glib_Line(0+240,0,239+240,319,255);         
    Glib_Line(0+240,319,239+240,0,255); 
     
    Glib_Rectangle(0,0+320,239,319+320,255); 
    Glib_Line(0,0+320,239,319+320,255);         
    Glib_Line(0,319+320,239,0+320,255); 
     
    Glib_Rectangle(0+240,0+320,239+240,319+320,255); 
    Glib_Line(0+240,0+320,239+240,319+320,255);      
    Glib_Line(0+240,319+320,239+240,0+320,255); 
    Glib_Rectangle(40+240,40+320,480-41,640-41,0x1f); 
 
    Uart_Printf("Virtual Screen Test(TFT 64K color). Press any key[ijkm\\r]!\n"); 
    MoveViewPort(MODE_TFT_16BIT_240320); 
    Lcd_MoveViewPort(0,0,MODE_TFT_16BIT_240320); 
    Lcd_EnvidOnOff(0); 
    Lcd_Port_Return(); 
} 
 
 
void Test_OURS_Lcd_Tft_16Bit_240320(void) 
{ 
    int i,j; 
    unsigned int k; 
    unsigned int m; 
    Lcd_Port_Init(); 
 
    //init the LCD 
    Uart_Printf("LCD Port Init.\n"); 
 
    Lcd_Init(MODE_OURS_TFT_16BIT_240320); 
 
    Uart_Printf("LCD Init.\n"); 
    
    Glib_Init(MODE_TFT_16BIT_240320); 
 
//    Lcd_Lpc3600Enable(); 			// Disable LPC3600 ,for not use samsung lcd ,by OURSELEC LZF  
//    Lcd_PowerEnable(0, 1);		   	// we didn't  use the power on contral 
  
    Lcd_EnvidOnOff(1);			//enable the lcd video output 
    Uart_Printf("Enable the video output and the LCD control signal.\n");     
 
    //begin the Lcd test 
 
 
    Uart_Printf("[TFT 64K COLOR(16bit/1pixel) LCD TEST]\n"); 
 
    Glib_ClearScr(LCD_TFT_16Bit_BLACK, MODE_TFT_16BIT_240320); 
    Uart_Printf("Glib Clear Scr.\n");     
    Uart_Getch();  	 
     
    //test 1     
    Glib_FilledRectangle(0,0,239,39,LCD_TFT_16Bit_BLACK);     
    Glib_FilledRectangle(0,40,239,79,LCD_TFT_16Bit_BLUE);     
    Glib_FilledRectangle(0,80,239,119,LCD_TFT_16Bit_GREEN);     
    Glib_FilledRectangle(0,120,239,159,LCD_TFT_16Bit_CYAN);     
    Glib_FilledRectangle(0,160,239,199,LCD_TFT_16Bit_RED);     
    Glib_FilledRectangle(0,200,239,239,LCD_TFT_16Bit_MAGENTA);     
    Glib_FilledRectangle(0,240,239,279,LCD_TFT_16Bit_YELLOW);     
    Glib_FilledRectangle(0,280,239,319,LCD_TFT_16Bit_WHITE);         
    Uart_Printf("Glib Filled Rectangle.\n");         
    Uart_Printf("TFT 64K color mode test 1. Press any key!\n"); 
    Uart_Getch();  	 
 
 
    //test 2 
    Glib_ClearScr(LCD_TFT_16Bit_BLACK, MODE_TFT_16BIT_240320); 
 
    k=0; 
    for(i=0;i<320;i++) 
    { 
    	for(j=0;j<240;j++) 
    	{ 
   	    _PutTft16Bit_240320(j,i,k);	 
	    k++;	    	 
    	} 
//	    Uart_Printf("k=%x\n",k);         	    	 
    } 
    Uart_Printf("Glib Put Pixel.\n");         
    Uart_Printf("TFT 64K color mode test 2. Press any key!\n"); 
    Uart_Getch();  	 
 
    //test 3 
    Glib_ClearScr(LCD_TFT_16Bit_BLACK, MODE_TFT_16BIT_240320); 
 
    Glib_Line(100,0,100,319,LCD_TFT_16Bit_BLUE);             
    Glib_Line(0,100,239,100,LCD_TFT_16Bit_BLUE);     
    for (i=0;i<240;i++) 
   	    _PutTft16Bit_240320(i,200,i);	    	 
    for (i=0;i<240;i++) 
   	    _PutTft16Bit_240320(i,203,i);	    	 
 
     
    Glib_Line(0,0,239,319,LCD_TFT_16Bit_BLUE);         
    Glib_Line(239,0,0,319,LCD_TFT_16Bit_GREEN); 
    Glib_Line(0,120,239,200,LCD_TFT_16Bit_RED);         
    Glib_Line(0,240,239,120,LCD_TFT_16Bit_YELLOW); 
 
     
    Uart_Printf("Glib Line.\n");         
    Uart_Printf("TFT 64K color mode test 3. Press any key!\n"); 
    Uart_Getch();  	 
 
 
    //test4 
     
    Glib_ClearScr(0, MODE_TFT_16BIT_240320); 
    Lcd_MoveViewPort(0,0,MODE_TFT_16BIT_240320); 
     
    k=0; 
 
    for(j=0;j<320;j++) 
        for(i=0;i<240;i++) 
            PutPixel(i,j,((int)DEMO240320[k++])); 
 
/* 
 
    PutPixel(0,0,LCD_TFT_16Bit_BLUE); 
    PutPixel(239,0,LCD_TFT_16Bit_RED); 
    PutPixel(0,319,LCD_TFT_16Bit_YELLOW);     
    PutPixel(239,319,LCD_TFT_16Bit_RED); 
*/ 
   
 
//add by lzf 
//	_DebugPutTft16Bit_240320(1,1,0xffffffff); 
//	_DebugPutTft16Bit_240320(0,1,0xffffffff) 
 
    Uart_Printf("BMP DISP.\n");         
    Uart_Printf("TFT 64K color mode test 4. Press any key!\n"); 
    Uart_Getch();  	 
     
 
   //test 5 
   /* 
    Glib_ClearScr(0, MODE_TFT_16BIT_240320); 
    k=0; 
    for(i=80;i<240;i+=10) 
    { 
    	for(j=60;j<180;j+=10) 
    	{ 
    	    Glib_FilledRectangle(j,i,j+9,i+9,k); 
    	    k++; 
    	} 
    } 
 
    Glib_Rectangle(0,0,239,319,65535);    
    Glib_Line(0,0,239,319,65535);         
    Glib_Line(0,319,239,0,65535); 
     
    Glib_Rectangle(0+240,0,239+240,319,255); 
    Glib_Line(0+240,0,239+240,319,255);         
    Glib_Line(0+240,319,239+240,0,255); 
     
    Glib_Rectangle(0,0+320,239,319+320,255); 
    Glib_Line(0,0+320,239,319+320,255);         
    Glib_Line(0,319+320,239,0+320,255); 
     
    Glib_Rectangle(0+240,0+320,239+240,319+320,255); 
    Glib_Line(0+240,0+320,239+240,319+320,255);      
    Glib_Line(0+240,319+320,239+240,0+320,255); 
    Glib_Rectangle(40+240,40+320,480-41,640-41,0x1f); 
    */ 
 
    Uart_Printf("Virtual Screen Test(TFT 64K color). Press any key[ijkm\\r]!\n"); 
    MoveViewPort(MODE_TFT_16BIT_240320); 
    Lcd_MoveViewPort(0,0,MODE_TFT_16BIT_240320); 
 
    Uart_Printf("Press any key to LCD Clear Scr&EXIT.\n");     
    Uart_Getch();  	 
     
    Glib_ClearScr(0, MODE_TFT_16BIT_240320); 
 
 
//    Lcd_EnvidOnOff(0); 
 
//    Lcd_Port_Return(); 
 
} 
 
 
void Test_Lcd_Tft_8Bit_240320_On(void) 
{ 
    int i,j,k=0; 
    Lcd_Port_Init(); 
    Lcd_Palette8Bit_Init(); 
    Lcd_Init(MODE_TFT_8BIT_240320); 
    Glib_Init(MODE_TFT_8BIT_240320); 
    Lcd_Lpc3600Enable(); // Enable LPC3600 
    Lcd_PowerEnable(0, 1);     
    Uart_Printf("[TFT LCD(240x320 ,8bpp) WILL BE TURNED ON EVEN DURING OTHER TEST]\n"); 
    Uart_Printf("If you'd like to off the TFT LCD, then excute other LCD test program,\n");      
 
    for(j=0;j<320;j++) 
        for(i=0;i<240;i++) 
            PutPixel(i,j,((int)DEMO256[k++])); 
             
    Lcd_EnvidOnOff(1); 
} 
 
 
void Test_Lcd_Tft_8Bit_240320_Bmp(void) 
{ 
    int i,j,k=0; 
    Lcd_Port_Init(); 
    Lcd_Palette8Bit_Init(); 
    Lcd_Init(MODE_TFT_8BIT_240320); 
    Glib_Init(MODE_TFT_8BIT_240320); 
    Lcd_Lpc3600Enable(); // Enable LPC3600 
    Lcd_PowerEnable(0, 1);     
    //Lcd_PowerEnable(0, 1); // Enable LCD_PWREN 
 
    for(j=0;j<320;j++) 
        for(i=0;i<240;i++) 
            PutPixel(i,j,((int)DEMO256[k++])); 
 
    Lcd_EnvidOnOff(1); // Enable ENVID     
/* 
    Uart_Printf("Do you want to change palette(5:5:1->5:6:5)..........\n");         
    Uart_Printf("then press any key\n");         
    Uart_Getch(); 
    Lcd_EnvidOnOff(0); 
    Uart_Printf("One more ,please...\n"); 
    Uart_Getch();     
    Lcd_EnvidOnOff(1); 
    rLCDCON5|=(1<<11); // 5:6:5 Palette Setting 
*/ 
    Uart_Printf("Press any key to quit!\n");         
    Uart_Getch(); 
    Glib_ClearScr(0, MODE_TFT_8BIT_240320); 
    Delay(5000); 
    Lcd_EnvidOnOff(0); 
    Lcd_Port_Return(); 
} 
 
 
void Test_Lcd_Tft_8Bit_240320_IntFr(void) 
{ 
    int i,j,k=0; 
    Lcd_Port_Init(); 
    Lcd_Palette8Bit_Init(); 
    Lcd_Init(MODE_TFT_8BIT_240320); 
    Glib_Init(MODE_TFT_8BIT_240320); 
    Lcd_Lpc3600Enable(); // Enable LPC3600 
    Lcd_PowerEnable(0, 1);     
    rLCDCON5|=(1<<11); // 5:6:5 Palette Setting 
     
    for(j=0;j<320;j++) 
        for(i=0;i<240;i++) 
            PutPixel(i,j,((int)DEMO256[k++])); 
 
    //--------LCD frame interrupt test---------------------------------------------------START 
    //The content of GPG4 is changed to OUTPUT('01').  
    //We will check the frame interrupt with using Logic Analyzer.  
    rGPGUP=rGPGUP&(~(1<<4))|(1<<4); // Pull-up disable 
    rGPGDAT=rGPGDAT&(~(1<<4))|(1<<4); // GPG4=High 
    rGPGCON=rGPGCON&(~(3<<8))|(1<<8); // GPG4=Output 
    
    pISR_LCD=(unsigned)Lcd_Int_Frame; 
    rINTMSK=~(BIT_LCD); 
    rLCDINTMSK=(1<<2)|(0<<1)|(1); // 8Words Trigger Level,Unmask Frame int,mask Fifo int 
    //--------LCD frame interrupt test-----------------------------------------------------END 
  
    Lcd_EnvidOnOff(1); // Enable ENVID     
    Uart_Printf("Press any key to quit!\n");         
    Uart_Getch(); 
    rLCDINTMSK|=3; // Mask LCD SUB Interrupt 
    rINTMSK|=(BIT_LCD); // Mask LCD INT 
    Lcd_EnvidOnOff(0); 
    Lcd_Port_Return(); 
} 
 
 
void Test_Lcd_Tft_8Bit_240320_IntFi(void) 
{ 
    int i,j,k=0; 
    Lcd_Port_Init(); 
    Lcd_Palette8Bit_Init(); 
    Lcd_Init(MODE_TFT_8BIT_240320); 
    Glib_Init(MODE_TFT_8BIT_240320); 
    Lcd_Lpc3600Enable(); // Enable LPC3600 
    Lcd_PowerEnable(0, 1);     
    rLCDCON5|=(1<<11); // 5:6:5 Palette Setting 
     
    for(j=0;j<320;j++) 
        for(i=0;i<240;i++) 
            PutPixel(i,j,((int)DEMO256[k++])); 
 
    Lcd_EnvidOnOff(1); // Enable ENVID     
    //--------LCD FIFO interrupt test---------------------------------------------------START 
    pISR_LCD=(unsigned)Lcd_Int_Fifo; 
    rINTMSK=~(BIT_LCD); 
    rLCDINTMSK=(0<<2)|(1<<1)|(0); // 4Words Trigger Level,Mask Frame int,Unmask Fifo int 
    //--------LCD FIFO interrupt test-----------------------------------------------------END 
  
    Uart_Printf("Press any key to quit!\n");         
    Uart_Getch(); 
    rLCDINTMSK|=3; // Mask LCD SUB Interrupt 
    rINTMSK|=(BIT_LCD); // Mask LCD INT 
    Lcd_EnvidOnOff(0); 
    Lcd_Port_Return(); 
} 
 
 
 
//640480 
void __irq Lcd_Int_Fifo_640480(void) 
{ 
    int i; 
    rLCDINTMSK|=3; // Mask LCD SUB Interrupt 
 
    // GPG4 is ....  
    rGPGDAT&=(~(1<<4)); // GPG4=Low 
    for(i=0;i<1;i++); // GPG4=Low 
    rGPGDAT|=(1<<4); //GPG4=High 
 
    rLCDSRCPND=1; // Clear LCD SUB Interrupt source pending 
    rLCDINTPND=1; // Clear LCD SUB Interrupt pending 
    rLCDINTMSK&=(~(1)); // Unmask LCD FRAME Interrupt 
    ClearPending(BIT_LCD); 
} 
 
 
void Test_Lcd_Tft_1Bit_640480(void) 
{ 
    int i,j; 
    Lcd_Palette1Bit_Init(); 
    Lcd_Port_Init(); 
    Lcd_Init(MODE_TFT_1BIT_640480); 
    Glib_Init(MODE_TFT_1BIT_640480); 
    Lcd_PowerEnable(0, 1);     
    Lcd_EnvidOnOff(1); 
    Uart_Printf("[TFT Mono(1bit/1pixel) LCD TEST]\n"); 
    Glib_ClearScr(0,MODE_TFT_1BIT_640480); 
 
    rTPAL = (1<<24)|((0xff)<<8); // Enable Temporary Palette : Green 
    Uart_Printf("TFT Mono mode test 1. Press any key!\n"); 
    Uart_Getch();  	 
 
    rTPAL = 0; 
    Glib_FilledRectangle(0,0,639,239,1); 
    Glib_FilledRectangle(0,239,639,479,0);    
    Uart_Printf("TFT Mono mode test 2. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_FilledRectangle(0,0,319,479,1); 
    Glib_FilledRectangle(320,0,639,479,0);    
    Uart_Printf("TFT Mono mode test 3. Press any key!\n"); 
    Uart_Getch();  	 
 
    for(j=0;j>19)==2); 
    	*palette++=((U32)((p_red<<8)|(p_green<<6)|(p_blue<<3))); 
    	Uart_Printf("VSTATUS=%x\n",(rLCDCON5>>19)); 
    	Uart_Printf("cdata=%d\n",(int)cdata); 
    } 
    *palette=0x0;     
    Uart_Getch(); 
    Lcd_EnvidOnOff(0); 
    Lcd_Port_Return(); 
} 
 
 
void Test_Lcd_Tft_8Bit_640480_Bswp(void) 
{ 
    int k; 
    Lcd_Palette8Bit_Init(); 
    Lcd_Port_Init(); 
    Lcd_Init(MODE_TFT_8BIT_640480); 
    Glib_Init(MODE_TFT_8BIT_640480); 
    Lcd_EnvidOnOff(1); 
    Lcd_PowerEnable(0, 1); 
    rLCDCON5 &= 0x1ffffd;    //BSWP Disable 
    Uart_Printf("[TFT 256 COLOR(16bit/1pixel) BSWP TEST]\n"); 
 
    Glib_ClearScr(0, MODE_TFT_8BIT_640480); 
    Glib_Rectangle(0,0,639,479,0xff); 
    Glib_Rectangle(1,1,638,478,0x03); 
    Glib_Rectangle(0+100,0+100,639-100,479-100,0xff); 
    Glib_Rectangle(1+100,1+100,638-100,478-100,0x03); 
    Glib_Line(0,0,639,479,0xe0);      
    Glib_Line(639,0,0,479,0x1c); 
    Uart_Printf("TFT 256 color BSWP test. Press any key excet return!\n"); 
 
    while(Uart_Getch()!='\r') 
    { 
        rLCDCON5 &= 0x1ffffd;    //BSWP Disable 
        rLCDCON5 |= ((k%2)<<1);  //BSWP Enable 
        k++; 
    } 
 
    Lcd_EnvidOnOff(0); 
    Lcd_Port_Return(); 
} 
 
 
void Test_Lcd_Tft_16Bit_640480(void) 
{ 
    int i,j,k; 
    Lcd_Port_Init(); 
    Lcd_Init(MODE_TFT_16BIT_640480); 
    Glib_Init(MODE_TFT_16BIT_640480); 
    Lcd_PowerEnable(0, 1); 
    Lcd_EnvidOnOff(1); 
    Uart_Printf("[TFT 64K COLOR(16bit/1pixel) LCD TEST]\n"); 
 
    Glib_ClearScr(0, MODE_TFT_16BIT_640480); 
    Glib_FilledRectangle(0,0,639,479,0xf800);     
    Uart_Printf("TFT 64K color mode test 1. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_ClearScr(0, MODE_TFT_16BIT_640480); 
    Glib_Rectangle(0,0,639,479,0x07e0);    
    Glib_FilledRectangle(0,0,20,20,65535);    
    Glib_Rectangle(620,460,639,479,65535);    
    Glib_Line(0,0,639,479,0x1f);         
    Glib_Line(639,0,0,479,0xf800); 
    Uart_Printf("TFT 64K color mode test 2. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_ClearScr(0, MODE_TFT_16BIT_640480); 
    k=0; 
    for(i=160;i<480;i+=20) 
    	for(j=120;j<360;j+=15) 
    	{ 
	    	while((rLCDCON5>>19)==2); 
    	    Glib_FilledRectangle(i,j,i+19,j+14,k); 
    	    k+=500; 
    	} 
 
    // #0		     
    // 00		     
    Glib_Rectangle(0,0,319,239,65535);    
    Glib_Line(0,0,319,239,65535);         
    Glib_Line(0,239,319,0,65535); 
 
    // 0# 
    // 00 
    Glib_Rectangle(0+320,0,319+320,239,255); 
    Glib_Line(0+320,0,319+320,239,255);         
    Glib_Line(0+320,239,319+320,0,255); 
 
    // 00 
    // #0 
    Glib_Rectangle(0,0+240,319,239+240,255); 
    Glib_Line(0,0+240,319,239+240,255);         
    Glib_Line(0,239+240,319,0+240,255); 
 
    // 00 
    // 0# 
    Glib_Rectangle(0+320,0+240,319+320,239+240,255); 
    Glib_Line(0+320,0+240,319+320,239+240,255);      
    Glib_Line(0+320,239+240,319+320,0+240,255); 
    Glib_Rectangle(50+320,50+240,269+320,189+240,255); 
 
    Uart_Printf("TFT 64K color mode test 3. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_ClearScr(0, MODE_TFT_16BIT_640480); 
    k=0; 
    for(i=320;i<960;i+=40) 
    	for(j=240;j<720;j+=30) 
    	{ 
    	    Glib_FilledRectangle(i,j,i+39,j+29,k); 
    	    k+=500; 
    	} 
 
    // #0		     
    // 00		     
    Glib_Rectangle(0,0,639,479,65535);    
    Glib_Line(0,0,639,479,65535);         
    Glib_Line(0,479,639,0,65535); 
 
    // 0# 
    // 00 
    Glib_Rectangle(0+640,0,639+640,479,65535);    
    Glib_Line(0+640,0,639+640,479,65535);         
    Glib_Line(0+640,479,639+640,0,65535); 
 
    // 00 
    // #0 
    Glib_Rectangle(0,0+480,639,479+480,65535);    
    Glib_Line(0,0+480,639,479+480,65535);         
    Glib_Line(0,479+480,639,0+480,65535); 
 
    // 00 
    // 0# 
    Glib_Rectangle(0+640,0+480,639+640,479+480,65535);    
    Glib_Line(0+640,0+480,639+640,479+480,65535);         
    Glib_Line(0+640,479+480,639+640,0+480,65535); 
    Glib_Rectangle(50+640,50+480,639+640-50,479+480-50,65535);    
 
    Uart_Printf("Virtual Screen Test(TFT 64K color). Press any key[ijkm\\r]!\n"); 
    MoveViewPort(MODE_TFT_16BIT_640480); 
    Lcd_MoveViewPort(0,0,MODE_TFT_16BIT_640480); 
    Lcd_EnvidOnOff(0); 
    Lcd_Port_Return(); 
} 
 
 
void Test_Lcd_Tft_16Bit_640480_Hwswp(void) 
{ 
    int k; 
    Lcd_Port_Init(); 
    Lcd_Init(MODE_TFT_16BIT_640480); 
    Glib_Init(MODE_TFT_16BIT_640480); 
    Lcd_PowerEnable(0, 1); 
    Lcd_EnvidOnOff(1); 
    rLCDCON5 &= 0x1ffffe;    //HWSWP Disable 
    Uart_Printf("[TFT 64K COLOR(16bit/1pixel) HWSWP TEST]\n"); 
 
    Glib_ClearScr(0, MODE_TFT_16BIT_640480); 
    Glib_Rectangle(0,0,639,479,0xffff); 
    Glib_Rectangle(1,1,638,478,0xf800); 
    Glib_Rectangle(0+100,0+100,639-100,479-100,0xffff); 
    Glib_Rectangle(1+100,1+100,638-100,478-100,0xf800); 
    Glib_Line(0,0,639,479,0x7e0);      
    Glib_Line(639,0,0,479,0x1f); 
    Uart_Printf("TFT 64K color HWSWP test. Press any key excet return!\n"); 
 
    while(Uart_Getch()!='\r') 
    { 
        rLCDCON5 &= 0x1ffffe;    //HWSWP Disable 
        rLCDCON5 |= (k%2);       //HWSWP Enable 
        k++; 
    } 
 
    Lcd_EnvidOnOff(0); 
    Lcd_Port_Return(); 
} 
 
 
void Test_Lcd_Tft_1Bit_800600(void) 
{ 
    int i,j; 
    Lcd_Port_Init(); 
    Lcd_Palette1Bit_Init();  
    Lcd_Init(MODE_TFT_1BIT_800600); 
    Glib_Init(MODE_TFT_1BIT_800600); 
    Uart_Printf("[TFT Mono(1bit/1pixel) LCD TEST]\n"); 
 
    rTPAL = (1<<24)|((0xff)<<0); // Enable Temporary Palette : Blue 
//--------LCD FIFO interrupt test---------------------------------------------------START 
	Lcd_EnvidOnOff(1); // Enable ENVID    
	//The content of GPG4 is changed to OUTPUT('01').  
	//We will check the frame interrupt with using Logic Analyzer.  
	rGPGUP=rGPGUP&(~(1<<4))|(1<<4); // Pull-up disable 
	rGPGDAT=rGPGDAT&(~(1<<4))|(1<<4); // GPG4=High 
	rGPGCON=rGPGCON&(~(3<<8))|(1<<8); // GPG4=Output 
 
	pISR_LCD=(unsigned)Lcd_Int_Fifo_640480; 
	rINTMSK=~(BIT_LCD); 
	rLCDINTMSK=(0<<2)|(1<<1)|(0); // 4Words Trigger Level,Mask Frame int,Unmask Fifo int 
//        rLCDINTMSK=(1<<2)|(1<<1)|(0); // 8Words Trigger Level,Mask Frame int,Unmask Fifo int     
//        Lcd_EnvidOnOff(1); // Enable ENVID        
//--------LCD FIFO interrupt test-----------------------------------------------------END 
    Uart_Printf("TFT Mono mode test 1. Press any key!\n"); 
    Uart_Getch();  	 
 
    rTPAL = 0; // Disable TPAL 
    Glib_FilledRectangle(0,0,LCD_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,1); 
    Uart_Printf("TFT Mono mode test 2. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_FilledRectangle(200,200,LCD_XSIZE_TFT_800600-201,LCD_YSIZE_TFT_800600-201,0);    
    Uart_Printf("TFT Mono mode test 3. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_ClearScr(0, MODE_TFT_1BIT_800600); 
    Glib_Rectangle(200,200,SCR_XSIZE_TFT_800600-201,SCR_YSIZE_TFT_800600-201,1); 
     
    // #0		     
    // 00		     
    Glib_Rectangle(0,0,LCD_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,1);    
    Glib_Line(0,0,LCD_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,1);         
    Glib_Line(0,LCD_YSIZE_TFT_800600-1,LCD_XSIZE_TFT_800600-1,0,1); 
 
    // 0# 
    // 00 
    Glib_Rectangle(LCD_XSIZE_TFT_800600,0,SCR_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600-1,1);    
    Glib_Rectangle(LCD_XSIZE_TFT_800600+100,100,SCR_XSIZE_TFT_800600-101,LCD_YSIZE_TFT_800600-101,1);    
     
    // 00 
    // #0 
    Glib_Rectangle(0,LCD_YSIZE_TFT_800600,LCD_XSIZE_TFT_800600-1,SCR_YSIZE_TFT_800600-1,1);    
    Glib_Rectangle(200,LCD_YSIZE_TFT_800600+200,LCD_XSIZE_TFT_800600-201,SCR_YSIZE_TFT_800600-201,1);    
 
    // 00 
    // 0# 
    Glib_Rectangle(LCD_XSIZE_TFT_800600,LCD_YSIZE_TFT_800600,SCR_XSIZE_TFT_800600-1,SCR_YSIZE_TFT_800600-1,1);    
    Glib_Line(LCD_XSIZE_TFT_800600,LCD_YSIZE_TFT_800600,SCR_XSIZE_TFT_800600-1,SCR_YSIZE_TFT_800600-1,1);         
    Glib_Line(LCD_XSIZE_TFT_800600,SCR_YSIZE_TFT_800600-1,SCR_XSIZE_TFT_800600-1,LCD_YSIZE_TFT_800600,1); 
 
    Uart_Printf("Virtual Screen Test(Mono). Press any key[ijkm\\r]!\n"); 
    MoveViewPort(MODE_TFT_1BIT_800600); 
    Lcd_MoveViewPort(0,0,MODE_TFT_1BIT_800600); 
//--------LCD FIFO interrupt test---------------------------------------------------START 
    rLCDINTMSK|=3; // Mask LCD SUB Interrupt 
    rINTMSK|=(BIT_LCD); // Mask LCD INT 
//--------LCD FIFO interrupt test-----------------------------------------------------END    
    Lcd_EnvidOnOff(0); 
    Lcd_Port_Return(); 
} 
 
 
void Test_Lcd_Tft_8Bit_800600(void) 
{ 
    int i,j,k; 
    Lcd_Port_Init(); 
    Lcd_Palette8Bit_Init(); 
    Lcd_Init(MODE_TFT_8BIT_800600); 
    Glib_Init(MODE_TFT_8BIT_800600); 
    Uart_Printf("[TFT 256 COLOR(8bit/1pixel) LCD TEST]\n"); 
 
    rTPAL = (1<<24)|((0xff)<<0); // Enable Temporary Palette : Blue 
//--------LCD FIFO interrupt test---------------------------------------------------START 
	Lcd_EnvidOnOff(1); // Enable ENVID    
	//The content of GPG4 is changed to OUTPUT('01').  
	//We will check the frame interrupt with using Logic Analyzer.  
	rGPGUP=rGPGUP&(~(1<<4))|(1<<4); // Pull-up disable 
	rGPGDAT=rGPGDAT&(~(1<<4))|(1<<4); // GPG4=High 
	rGPGCON=rGPGCON&(~(3<<8))|(1<<8); // GPG4=Output 
 
	pISR_LCD=(unsigned)Lcd_Int_Fifo_640480; 
	rINTMSK=~(BIT_LCD); 
	rLCDINTMSK=(0<<2)|(1<<1)|(0); // 4Words Trigger Level,Mask Frame int,Unmask Fifo int 
//        rLCDINTMSK=(1<<2)|(1<<1)|(0); // 8Words Trigger Level,Mask Frame int,Unmask Fifo int     
//        Lcd_EnvidOnOff(1); // Enable ENVID        
//--------LCD FIFO interrupt test-----------------------------------------------------END 
    Uart_Printf("TFT 256 color mode test 1. Press any key!\n"); 
    Uart_Getch();  	 
 
    Glib_ClearScr(0, MODE_TFT_8BIT_800600); 
    rTPAL = 0; 
    k=0; 
    for(i=0;i