www.pudn.com > hf44b0_TEST.rar > kb.C


#include  
#include "..\inc\def.h" 
#include "..\inc\44b.h" 
#include "..\inc\44blib.h" 
#include "..\inc\kb.h" 
#include "..\inc\option.h" 
#include "..\inc\def.h" 
#include "..\inc\lcd.h" 
#include "..\inc\lcdlib.h" 
#include "..\inc\44blcd.h" 
#include "..\inc\myplmm.h" 
 
 //#define LOOP 1 
#define XTOTAL 320 
#define YTOTAL 240 
#define EVERYX 32 
#define HIGHB 32 
 
 ; void clr_pf(char onebit); 
void setb_pf(char onebit); 
void displaylcd(char num); 
void displaylcd32(char x, char y, char num); 
void clear(void); 
void Lcd_kb_MonoInit(void); 
void Lcd_MonoInit(void); 
void __irq keyboard(void); 
 
void __irq keyboard(void) 
{ 
    char x=0,y=0,yrecord; 
    rINTMSK=(BIT_GLOBAL|BIT_EINT4567); 
    Delay(200); 
    rEXTINPND=0xf; 
     
    if((rPDATE&0xf0)==0xf0) 
       { 
    	      rPDATF=0X1f; 
             rINTMSK=~(BIT_GLOBAL|BIT_EINT4567); 
	      rI_ISPC = BIT_EINT4567; 
	      return; 
       	} 
    else 
    {   
       for (x=5; x<9; x++) 
        { 
         rPDATG=0X1ff; 
         clr_pf(x); 
         if ((rPDATG&0xf0) !=0xf0) 
            { 
             yrecord=(~((rPDATG&0xf0)>>4))&0xf; 
	      for (y=0;  yrecord!=0; y++)   
		  {  
		   yrecord=(yrecord>>1); 
		   } 
	      setb_pf(x); 
	      Uart_Printf("the key is %d  \n", (y+(x-5)*4-1)); 
	      Slib_SetCursor(6,3); 
    	  Slib_Printf("the key is %d", (y+(x-5)*4-1)); 
	      Delay(100); 
             switch(y+(x-5)*4-1) 
	      { 
	        case 0: 
                            displaylcd32(60, 60, y+(x-5)*4-1); 
			        break; 
		default:  
			       displaylcd32(60, 60, y+(x-5)*4-1); 
                             break; 
	     } 
	      rPDATG=0X1F; 
	      rINTMSK=~(BIT_GLOBAL|BIT_EINT4567); 
	      rI_ISPC = BIT_EINT4567; 
	      return; 
	      } 
         setb_pf(x); 
	  } 
	  rPDATF=0X1F; 
	  rINTMSK=~(BIT_GLOBAL|BIT_EINT4567); 
         rI_ISPC = BIT_EINT4567; 
  	  return; 
    } 
} 
 
/*********************************************************/ 
 void setb_pf(char onebit) 
{ 
  rPCONF=(rPCONF&0x03ff)|(1<<10)|(1<<13)|(1<<16)|(1<<19) ; 
  rPDATF=(rPDATF&0x1ff)|(0x1<>22)<<21 ) | M5D((U32)frameBuffer1>>1); 
	    // monochrome, LCDBANK, LCDBASEU 
	rLCDSADDR2= M5D( (((U32)frameBuffer1+(SCR_XSIZE*LCD_YSIZE/8))>>1) ) | (MVAL<<21); 
	rLCDSADDR3= (LCD_XSIZE/16) | ( ((SCR_XSIZE-LCD_XSIZE)/16)<<9 ); 
 
	rLCDCON1=(1)|(1<<5)|(0<<7)|(0x3<<8)|(0x3<<10)|(CLKVAL_MONO<<12); 
	    // enable,4B_SNGL_SCAN,WDLY=8clk,WLH=8clk, 
     
} 
void displaylcd32(char x, char y, char num) 
{ 
    unsigned int *pbuffer,temp_data; 
    unsigned int i=0, j=0, m=0; 
      
    //clrscreen(); 
    pbuffer =(U32*) frameBuffer1; 
    for(m=0; m>(EVERYX- x%EVERYX))<<(EVERYX-x%EVERYX); 
	pbuffer[i]=j|(temp_data>>(x%EVERYX)); 
	//Uart_Printf("pbuffer[%d]= %x   \n", i, pbuffer[i]);    
	j=(pbuffer[i+1]<<(x%EVERYX))>>(x%EVERYX); 
	pbuffer[i+1] = j|(temp_data<<(EVERYX-x%EVERYX));       // ~temp_data;   
       // Uart_Printf("pbuffer[%d]= %x   \n", i+1, pbuffer[i+1]);   
      } 
} 
 
void clear(void) 
{  
     unsigned int *pbuffer; 
     int i; 
      
    pbuffer =(U32*) frameBuffer1; 
    for(i = 0; i< (9600/4) ;i++) 
    { 
        pbuffer[i] = 0; 
 
 } 
 
}