亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? touchpanel.c

?? tells you how to do the panel
?? C
字號:
/*************************************************************************************
*	Copyright (c) 2005 by National ASIC System Engineering Research Center.
*	PROPRIETARY RIGHTS of ASIC are involved in the subject matter of this 
*	material.  All manufacturing, reproduction, use, and sales rights 
*	pertaining to this subject matter are governed by the license agreement.
*	The recipient of this software implicitly accepts the terms of the license.
*
*	File Name: touchpanel.c
*
*	File Description:
*			The file includes three functions to initialize the touchpanel and server it.
*
*	Created by Michael <yuyu_zh@seu.edu.cn>, 2005-04-02
**************************************************************************************/

#include "garfield.h"
#include "config.h"

extern ReadC(void);


int main(void)
{
	
	if(E_OK != ModuleTouchpanel())
		DBG_Printf("error in Touchpanel lab\n");
		
	while(1);

	return 1;
}

STATUS	ModuleTouchpanel(void)
{
	/* system initialized */
	system_init();
	
	/* initialize touchpanel */
	init_Pen();
    DBG_Printf("Touch Panel Initialization Succeed!\n You can Touch the Panel.\n");
	
	return E_OK;
}

void touchinit(void)                                          
{
	
	*(RP)PORTH_DIR |=0x08;
	*(RP)PORTH_SEL |=0x08;
	*(RP)PORTH_INTRCTL |=0X80;
	*(RP)PORTH_INCTL |=0X08;
	*(RP)PORTH_INTRCLR =0x3f ;
	
}

void ResetUCB(void)
{
//**********Enable TMXP Negative INT,ADDR: 60H
	*(RP)AC97_CRAC=WRITE + 0x600000 + 0x2000;  
	do{}while(!OVER_WRITE);

//**********Touch Screen Control register,ADDR: 64H
	*(RP)AC97_CRAC=WRITE + 0x640000 + 0x00C3;          //D9-D8=00 interupt mode
	do{}while(!OVER_WRITE);
}

/*******************************
void wucb(U32 addr,U32 val)
{
	*(RP)AC97_CRAC=WRITE+ (addr<<16) + val;				// 0-15bit value, 16-22 bit address, 31 bit -read or write    
	do{}while(!OVER_WRITE);								// 向ucb1400寄存器寫數據
}		
********************************/

void InitAC97(void)
{
//*********Reset AC97
    *(RP)AC97_ENABLE=0x1;
	*(RP)AC97_CONR=0X03;	

//*********Reset Codec ,ADDR: 00H
	 *(RP)AC97_CRAC=WRITE+ 0x0 + 0x0;	
	do{}while(!OVER_WRITE);

//************configure Codec,	
//**********Enable TMXP Negative INT,ADDR: 60H
	*(RP)AC97_CRAC=WRITE + 0x600000 + 0x2000;  
	do{}while(!OVER_WRITE);

//**********Touch Screen Control register,ADDR: 64H
	*(RP)AC97_CRAC=WRITE + 0x640000 + 0x00C3;          //D9-D8=00 interupt mode
	do{}while(!OVER_WRITE);

//*********clear INT Clear/Status register,ADDR:62H 
	      *(RP)AC97_CRAC=WRITE + 0x620000+0xf800;
	      do{}while(!OVER_WRITE);

//remove do while after debug;	      

}



U32 CheckPenUp()
{  
	int i;
      //*********Touch Screen Control register; ADDR:64H 
	          *(RP)AC97_CRAC=WRITE + 0x640000+0x00C3;      //Interupt mode
	           do{}while(!OVER_WRITE);
      //_________________________________________________  

	for(i = 0; i < 100000; i++);

      //*********Touch Screen Control register; ADDR:64H 
	          *(RP)AC97_CRAC=READ + 0x640000;      //Interupt mode
	          do{}while(!OVER_READ);
	
	
      //_________________________________________________  
      if(*(RP)AC97_CRAC & (0x00003000))
          return 0;
      else
          return 1;
}
 
void clrcodecint()
{	
   //*********Touch Screen Control register; ADDR:64H 
	      *(RP)AC97_CRAC=WRITE + 0x640000+0x00C3;      //Interupt mode
	      do{}while(!OVER_WRITE);
   //_________________________________________________  

   //*********clear INT Clear/Status register,ADDR:62H 
	      *(RP)AC97_CRAC=WRITE + 0x620000+0x2000;
	      do{}while(!OVER_WRITE);
   
   //**********Enable TMXP Negative INT,ADDR: 60H
	      *(RP)AC97_CRAC=WRITE + 0x600000 + 0x2000;  
	       do{}while(!OVER_WRITE); 
  //**********clr H PORT
  //        *(RP)PORTH_INTRCLR=0x3f;
}

U32 readx(U32 tmp)
{  
   //*********Touch Screen Control register; ADDR:64H 
	      *(RP)AC97_CRAC=WRITE + 0x640000+0xA48;                     //X Position
	      do{}while(!OVER_WRITE);
   //_________________________________________________  
	
	
	
   //*********ADC Control register; ADDR:66H 
	      *(RP)AC97_CRAC=WRITE + 0x660000+0x8083;                     //Start X Position Convert
	      do{}while(!OVER_WRITE);
   //_________________________________________________ 
    
    
    
   //*********READ ADC Data register ,ADDR:68H                       // Check ADC Complete (First Time)
	      *(RP)AC97_CRAC=READ + 0x680000;
	      do{}while(!OVER_READ);
   //_________________________________________________
   
   
   
   while(!(*(RP)AC97_CRAC & (0x1 << 15 )))
   {
	 //*********READ ADC Data register ,ADDR:68H                       // Check ADC Complete
	      *(RP)AC97_CRAC=READ + 0x680000;
	      do{}while(!OVER_READ);
    }
	tmp = *(RP)AC97_CRAC;
	return tmp;
}


U32 ready(U32 tmp)
{
	//*********Touch Screen Control register; ADDR:64H 
	      *(RP)AC97_CRAC=WRITE + 0x640000+0xA12;                     //Y Position
	      do{}while(!OVER_WRITE);
   //_________________________________________________  
	
	
	
   //*********ADC Control register; ADDR:66H 
	      *(RP)AC97_CRAC=WRITE + 0x660000+0x808B;                     //Y Position Convert
	      do{}while(!OVER_WRITE);
   //_________________________________________________ 
    
    
    
   //*********READ ADC Data register ,ADDR:68H                       // Check ADC Complete (First Time)
	      *(RP)AC97_CRAC=READ + 0x680000;
	      do{}while(!OVER_READ);
   //_________________________________________________
   
   
   
   while(!(*(RP)AC97_CRAC & (0x1 << 15 )))
	{
	
	 //*********READ ADC Data register ,ADDR:68H                       // Check ADC Complete
	      *(RP)AC97_CRAC=READ + 0x680000;
	      do{}while(!OVER_READ);
     //_________________________________________________
	 }
	tmp = *(RP)AC97_CRAC;
	return tmp;
}

void init_Pen(void)
{

#ifdef GE00

    *(RP)PORTE_DIR |= (0X1<<8);
	*(RP)PORTE_SEL |= 0X1<<8;	
	*(RP)PORTE_INTRCTL |= 0X30000;
	*(RP)PORTE_INCTL |= (0X1<<8);
	*(RP)PORTE_INTRCLR |= (0X1<<8);

	SPISetup();

	PenRead();

	irq_enable(INT_EXT8);		//enable AD interrupt
	unmask_irq(INT_EXT8);

#else 
	irq_enable(INT_EXT15);    							// 中斷控制器使能
	
	touchinit();
	InitAC97();
		init_LCD();
    unmask_irq(INT_EXT15);                                               // 中斷unmask
#endif

}

U16 PenSPIXfer(U16 ADCommd)
{
	U16 data;

        /* set the command through the spi that let AD exchange data */     
	*(RP)SPITR = ADCommd;
	*(RP)SPICR |= transenable;
	while(!(( (*(RP)SPISR)) & 0x01));// wait for the data from spi

	data = *(RP)SPIRR; 

	return data;
}     
     
 void SPISetup(void)
{
	*(RP)SPICR = ctrlw;
	*(RP)SPIBR = bt256;	

	TurnOnADS7843();
} 

void TurnOnADS7843(void)
{
	/* turn on Pen AD chip selected */
	*(RP)PORTE_SEL |= 0X1<<9;
	*(RP)PORTE_DATA &=~( 0X1 << 9);
}

void TurnOFFADS7843(void)
{	
	/* turn off Pen AD chip selected */
	*(RP)PORTE_SEL |= 0X1<<9;
	*(RP)PORTE_DATA |=( 0X1 << 9);			
}

void PenEnable(void)
{
#ifdef GE00
       unmask_irq(INT_EXT8);
#else 
	clrcodecint();			//change mode into int; clear int source and clear GPIO int.
	
	unmask_irq(INT_EXT15);	
#endif

}

void PenDisable(void)
{
#ifdef GE00
       mask_irq(INT_EXT8);	
#else 
	mask_irq(INT_EXT15);	
#endif

}

STATUS PenRead(void)
{
#ifdef GE00
U16 TempX,TempY;
	U16 x_upper, x_lower, y_upper, y_lower;
	U16 retcmd, i;
	U32 penflag;

READXY:
	/* read x location */  
        retcmd = PenSPIXfer(x_location);
        x_upper= PenSPIXfer(val_upper);   // read the data from the external device
	 x_lower= PenSPIXfer(val_lower); 
/*
	TempX = ((((x_upper&0x00FF)<<8)|(x_lower&0x00FF))&0x7ff8)>>3;	//AD 的精度是12位
	TempX = 0xfff-TempX;
*/	
	TempX = ((((x_upper&0x00FF)<<8)|(x_lower&0x00FF))&0x7ff8)>>4;	//AD 的精度是11位
	TempX = 0x7ff-TempX;
	
	/* read y location */
        retcmd = PenSPIXfer(y_location);
        y_upper= PenSPIXfer(val_upper);   // read the data from the external device
	 y_lower= PenSPIXfer(val_lower); 
/*
	TempY = ((((y_upper&0x00FF)<<8)|(y_lower&0x00FF))&0x7ff8)>>3;	//AD 的精度是12位
   	TempY = 0xfff-TempY;
*/
	TempY = ((((y_upper&0x00FF)<<8)|(y_lower&0x00FF))&0x7ff8)>>4;	//AD 的精度是11位
   	TempY = 0x7ff-TempY;   	
	/* end conversion */

	DBG_Printf("Coordinate X=%d\tY=%d\n\n",TempX,TempY);
	
	for(i=0; i<10000; i++);
	penflag = *(RP)(INTC_IRSTAT);
	if((penflag&0x200) != 0)goto READXY;
     
     return 1;
   
#else 
	U32 tmpx,tmpy;
	U32 i;
	U16 ValueX;
	U16 ValueY;

	ValueY = (readx(tmpx) & 0x000003ff);
	ValueX = (ready(tmpy) & 0x000003ff);
	
READXY:
		/* check pen up? */
	 if(!(CheckPenUp()))
     {
     	ValueX=0;
        ValueY=0;
             return 0;
     }else{       
		ValueY = (readx(tmpx) & 0x000003ff);
		ValueX = (ready(tmpy) & 0x000003ff);
     }
   DBG_Printf("Coordinate X=%d\tY=%d\n\n",ValueX,ValueY);
    
	for(i=0; i<10000; i++);
	if((CheckPenUp()))goto READXY;
	
    return 1;
#endif

}

void tp_handler(void)
{
	PenDisable();

	PenRead();

	PenEnable();

	return ;
}
void init_LCD(void)
{
		
	*(RP)LECR = 0x0000001;     //enable the LCDC	

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
极品少妇一区二区三区精品视频| 欧美性大战久久久久久久蜜臀| 91免费版pro下载短视频| 91精品午夜视频| 国产精品电影一区二区| 蜜臀av性久久久久av蜜臀妖精| av一区二区久久| 久久久精品国产99久久精品芒果| 日韩激情视频网站| 91激情五月电影| 中文字幕一区日韩精品欧美| 另类欧美日韩国产在线| 欧美日韩在线免费视频| 亚洲精品综合在线| 成人性生交大片免费| 精品乱人伦小说| 青青国产91久久久久久| 91麻豆精品国产91久久久久久| 亚洲欧美激情插| 不卡区在线中文字幕| 国产亚洲va综合人人澡精品| 奇米精品一区二区三区在线观看一| 色屁屁一区二区| 成人免费在线播放视频| 成人黄色小视频| 欧美国产综合一区二区| 国产成人av电影免费在线观看| 日韩一区二区三| 免费看黄色91| 欧美一级片免费看| 日本不卡一二三| 欧美一区二区三区四区久久| 日韩电影网1区2区| 欧美精品电影在线播放| 日日嗨av一区二区三区四区| 欧美裸体bbwbbwbbw| 天使萌一区二区三区免费观看| 欧美性色综合网| 日韩精品三区四区| 日韩一区二区免费电影| 国模无码大尺度一区二区三区| 日韩女优av电影| 久久狠狠亚洲综合| 久久女同性恋中文字幕| 国产精一品亚洲二区在线视频| 国产三级欧美三级| av激情成人网| 一个色妞综合视频在线观看| 欧美日高清视频| 麻豆成人在线观看| 国产人成一区二区三区影院| 972aa.com艺术欧美| 亚洲国产精品久久不卡毛片| 91.com在线观看| 国产一区久久久| 亚洲视频一区二区在线观看| 欧美精品少妇一区二区三区| 老司机一区二区| 国产精品国产三级国产普通话蜜臀| 色中色一区二区| 免费不卡在线观看| 亚洲欧美影音先锋| 91超碰这里只有精品国产| 国产激情视频一区二区在线观看| 亚洲欧美日本在线| 欧美一级国产精品| 成人福利电影精品一区二区在线观看| 一区二区三区在线视频免费| 日韩欧美激情四射| 色综合天天综合给合国产| 五月综合激情婷婷六月色窝| 久久九九久久九九| 欧美日韩久久一区二区| 成人在线视频首页| 老司机免费视频一区二区 | 国产精品日韩成人| 欧美男生操女生| 成人久久视频在线观看| 亚洲成人黄色影院| 最新中文字幕一区二区三区| 日韩网站在线看片你懂的| 波多野结衣中文字幕一区| 日本亚洲视频在线| 亚洲福利国产精品| 国产精品高清亚洲| 久久青草欧美一区二区三区| 欧美片网站yy| 色综合av在线| 99精品欧美一区二区三区小说| 日本va欧美va瓶| 午夜国产精品影院在线观看| 亚洲欧美在线视频观看| 国产三区在线成人av| 欧美v国产在线一区二区三区| 欧美视频在线观看一区| 99久久精品免费看国产免费软件| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美高清视频在线高清观看mv色露露十八| 国产精品88888| 国产一区二区在线观看免费| 偷拍日韩校园综合在线| 亚洲综合自拍偷拍| 一区二区三区在线高清| 亚洲天堂av一区| 中文字幕制服丝袜一区二区三区 | 亚洲精品成人天堂一二三| 久久久久久一二三区| 久久综合九色综合97婷婷| 欧美成人一区二区三区在线观看| 日韩一区二区在线观看视频 | 国产久卡久卡久卡久卡视频精品| 秋霞电影一区二区| 毛片av一区二区| 日韩在线一区二区| 日本不卡中文字幕| 六月婷婷色综合| 国产真实乱子伦精品视频| 日本va欧美va瓶| 国产在线精品国自产拍免费| 国产美女在线精品| 国产99久久久国产精品潘金 | 7777精品久久久大香线蕉| 欧美日韩精品欧美日韩精品一 | 国产精品天美传媒| 中文字幕不卡一区| 亚洲欧洲性图库| 亚洲伦在线观看| 午夜欧美视频在线观看 | 国产成人8x视频一区二区| 国产很黄免费观看久久| 成人看片黄a免费看在线| 99久久久精品免费观看国产蜜| 91免费国产在线| 欧美日韩精品一区二区天天拍小说 | 96av麻豆蜜桃一区二区| 欧美日韩综合在线免费观看| 欧美美女一区二区三区| 日韩欧美国产不卡| 国产欧美日韩精品一区| 伊人性伊人情综合网| 蜜臀久久99精品久久久久久9| 国产一区二区三区免费在线观看| 国产91露脸合集magnet| 欧美亚洲国产怡红院影院| 日韩一级二级三级| 中文字幕精品一区二区精品绿巨人| 亚洲男人电影天堂| 日本成人在线一区| 99久久精品国产精品久久| 欧美日韩一区中文字幕| 欧美精品一区二区三区在线播放| 成人免费小视频| 六月丁香婷婷色狠狠久久| 99re热视频精品| www精品美女久久久tv| 亚洲激情av在线| 国产一区二区在线看| 欧美日韩免费一区二区三区视频| 亚洲精品在线免费播放| 亚洲一区二区三区四区中文字幕| 久久99精品久久久久婷婷| 在线免费观看日本一区| 国产午夜精品福利| 天堂va蜜桃一区二区三区漫画版| www.亚洲国产| 欧美精品一区二区久久婷婷| 亚洲午夜久久久久中文字幕久| 国产精品99久久久久久久女警| 欧美日韩国产123区| 综合分类小说区另类春色亚洲小说欧美| 日韩国产欧美在线播放| 色综合天天做天天爱| 欧美国产丝袜视频| 老司机精品视频一区二区三区| 欧美伊人精品成人久久综合97 | 日韩高清国产一区在线| 色爱区综合激月婷婷| 国产精品久久久久久久第一福利| 老汉av免费一区二区三区| 欧美日韩国产免费一区二区| 国产精品美女久久久久aⅴ国产馆| 麻豆国产欧美一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | gogo大胆日本视频一区| 欧美精品一区二区精品网| 日本在线不卡视频| 欧美在线观看一区二区| 亚洲人成人一区二区在线观看| 国产91色综合久久免费分享| 久久综合丝袜日本网| 久久aⅴ国产欧美74aaa| 日韩免费观看高清完整版在线观看 | 国产91精品一区二区麻豆亚洲| 日韩精品一区二区三区四区视频 | 亚洲第一久久影院| 在线亚洲欧美专区二区| 亚洲精品一二三| 色88888久久久久久影院野外| 亚洲六月丁香色婷婷综合久久| 99久精品国产|