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

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

?? ambamse.c

?? at91rm9200 bsp at91rm9200 bsp
?? C
字號:
#include "copyright_wrs.h"/* includes */#include "vxWorks.h"#include "iv.h"#include "ioLib.h"#include "iosLib.h"#include "memLib.h"#include "tyLib.h"#include "errnoLib.h"#include "wdLib.h"#include "sysLib.h"#include "intLib.h"#include "taskLib.h"#include "ambakmi.h"/*#include "ambaKbd.c"*//* forward declarations */LOCAL void  mseHwInit();LOCAL int   mseOpen();LOCAL int   mseClose();LOCAL void  mseTxStart();LOCAL void  at91cMseIntr (MSE_DEVICE  *pDev);LOCAL void clkIntr();LOCAL void waitForCLK(int value);LOCAL void writeBit(UCHAR b)	;LOCAL unsigned char   in_char;LOCAL UCHAR bitCnt = 0;LOCAL UCHAR in_char;LOCAL UCHAR parity;LOCAL UCHAR byte2;LOCAL UCHAR parity2 = 1;LOCAL UCHAR bitCnt2 =0;/*lab used for ack receivelab=0,use int to send data lab =1,wait for an acklab =2 ,rec data */LOCAL UCHAR lab =2;	#include <ugl/sysWindML.h>/********************************************************************************* ambaPs2DevCreate - PS/2 mouse driver initialization routine** This routine creates a device for a PS/2 mouse.  The AMBA hardware is* initialized when the keyboard interface is initialized.** RETURNS: device number, if sucessful; otherwise ERROR.** SEE ALSO: */int  at91cPs2DevCreate    (    char         *name            /* name to be associated with device   */    )    {    int            mseDrvNum;    /* device number for this driver */    DEV_HDR     *  pHdr;    MSE_DEVICE  *  pMseDevice;    /* device descriptors */    char        *  pName;    WINDML_DEVICE *pDev;       /* if device is already present, do not create again */    pHdr = iosDevFind (name, &pName);    if ((pHdr != NULL) && (strcmp (name, pHdr->name) == 0))        return (OK);    pMseDevice = (MSE_DEVICE *)malloc (sizeof (MSE_DEVICE));    /* enable the mouse interrupt */        pDev = sysWindMLDevGet (WINDML_POINTER_DEVICE, 0, 0, 0);intDisable(KBD_MSE_INT_LVL);    intConnect(KBD_MSE_INT_VEC,clkIntr,(int)pMseDevice);	    /* Install the driver and return installation status */    mseDrvNum = iosDrvInstall(mseOpen, (FUNCPTR) NULL, mseOpen,                             (FUNCPTR) mseClose, tyRead, tyWrite, tyIoctl);    /* Create the channels for this device */    if (tyDevInit(&pMseDevice->ty_dev, 512, 512, (FUNCPTR)mseTxStart) != OK)        return (ERROR);    /* initialize the interface */    mseHwInit ();    KBD_INT_ENABLE;    MSE_INT_ENABLE;		/*taskDelay(120);*//*debug添加。。。。。*/    /* enable the pointer interrupt */    intEnable(KBD_MSE_INT_LVL);    /* add the device to the I/O system */    if (iosDevAdd(&pMseDevice->ty_dev.devHdr,name,mseDrvNum) == ERROR)        return (ERROR);    return (mseDrvNum);    }LOCAL void waitForCLK(int value)/*0,1		wait about 40us*/{  int i=0;  while ((MSE_CLK_READ != value) && (i++<2000));/*Wait for clk */}LOCAL void writeBit(UCHAR b)	/*	rise edge	*/{	waitForCLK(0);	MSE_DATA_WRITE(b);	waitForCLK(1);}void at91cMsWrite(unsigned char value){  int i=0;  UCHAR p=1;  MSE_INT_DISABLE;/*此處最好添加相應是否有數據收程序*/	MSE_CLK_OUTPUT;		/*clk,data as output*/	MSE_DATA_OUTPUT; 	MSE_CLK_WRITE(0);/*clk=0*/	MSE_DATA_WRITE(0);/*start bit=0*/	taskDelay(1);/*wait > 100us*/	 MSE_CLK_INPUT;	  for(i=0;i<8;i++)	  {	  	writeBit(value & 1);	/*bit write*/		p = p + value;				value = value >> 1;	  }	  writeBit(p & 1);/*check*/	  writeBit(1);		/*stop bit =1*/	  MSE_DATA_INPUT;/*data release ,data as input*/	   lab = 2;		/*表示直接接收數據*/	   bitCnt = 0;}/********************************************************************************* mseHwInit - initialize AMBA hardware for mouse support** This routine initializes the AMBA hardware for a PS/2 mouse.** RETURNS N/A** SEE ALSO: */LOCAL void mseHwInit (void)    {/*pio enable*/	*AT91C_PIOB_PER = MSE_CLK | MSE_DATA;/*	100K Pullup reg disable*/		*AT91C_PIOB_PPUDR = MSE_CLK | MSE_DATA; 	intDisable(AT91C_INT_LVL_PIOB);	*AT91C_PIOB_IDR = 0xffffffff;	*AT91C_AIC_SMR3 =  AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED + 2;/*	實際驗證0.5s比較好	*/	at91cMsWrite(0xff);	/*	reset cmd ,get into stream mode	*/	taskDelay(30);	/*	ack is 0xfa ,aa ,00	*/	at91cMsWrite(0xf2);	/*id */	taskDelay(30);		at91cMsWrite(0xf4);	/*enable*/	taskDelay(60);    return;    }/********************************************************************************* mseOpen - open file** This routine opens the PS2 device.* * RETURNS device structure** SEE ALSO: */LOCAL int mseOpen    (    MSE_DEVICE  *dev,    char        *name,    int         mode    )    {        return ((int)dev);    }/*******************************************************************************  mseTxStart - send data to mouse** This routine transmits data to the PS2 device** RETURNS  N/A** SEE ALSO: */LOCAL void mseTxStart    (    MSE_DEVICE  *dev    )    {    char          out_char;    while (tyITx(&dev->ty_dev,&out_char) == OK);    }/******************************************************************************* mseClose - close file**  This routine closes the PS2 device** RETURNS N/A** SEE ALSO: */LOCAL int mseClose    (    MSE_DEVICE  *dev    )    {    return((int)dev);    }/******************************************************************************* ambaMseIntr - handle interrupts** This routine is the PS2 interrupt handler** RETURNS  NA** SEE ALSO: */LOCAL void at91cMseIntr     (    MSE_DEVICE  *pDev          /* device control structure */    )    {    	UINT16 data;	int oldMask;		oldMask=intLock();		if((MSE_CLK_READ == 0)&&(lab != 0))	/*fall-readbyte */		{			data = MSE_DATA_READ;			switch(lab)			{				case 1:			/*ack*/				if(data==0)				{					lab = 2;				}				break;				case 2:			/*after ack*/				switch(bitCnt)				{					case 0:					parity = 0;		/*for odd parity*/					in_char = 0;					if(data == 0)		/*start bit*/						bitCnt++;					else					{						intUnlock(oldMask);						return;					}					break;					case 1:					case 2:					case 3:					case 4:					case 5:					case 6:					case 7:					case 8:/*in_char*/							bitCnt++;					in_char |= data<< (bitCnt -2);					parity += data;					break;					case 9:					bitCnt++;					parity += data;					if((parity & 1) == 0)	/*parity bit wrong*/					{						bitCnt=0; 					}					break;					case 10:		/*stop bit*/					bitCnt =0;					if(data!= 0)					{						logMsg("m-%02x\n",in_char,2,3,4,5,6);							        tyIRd (&pDev->ty_dev,in_char);                                                                                  					}					break;					default:					bitCnt=0;					break;				}				break;				default:				break;			}		}		else if(lab==0)		{			bitCnt2++;			if(bitCnt2<=8)	/*in_char 1-8*/			{					MSE_DATA_WRITE(byte2&1);					parity2 += byte2;					byte2 = byte2 >>1;			}						else if(bitCnt2 == 9)/*parity	*/			{					MSE_DATA_WRITE(parity2 & 1);			}			else if(bitCnt2 == 10)/*stop */			{					MSE_DATA_WRITE(1);									lab = 1;					bitCnt2 = 0;/*					parity2 =1;*/					MSE_DATA_INPUT;/*data release ,data as input*/			}		}	intUnlock(oldMask);	    }/********************************************************************************* clkInt-* * This routine is called as interrupt comes** RETURNS: N/A** NOMANUAL*/LOCAL void clkIntr	(    	MSE_DEVICE  *pDev          /* device control structure */	){	UINT16 mask,status;	mask = *AT91C_PIOB_IMR;	status = *AT91C_PIOB_ISR;	status &= mask;#if 0	logMsg("status %x \n",status,2,3,4,5,6);#endif	if((status & MSE_CLK) == MSE_CLK)	{		at91cMseIntr(pDev);	}	if((status & KBD_CLK) == KBD_CLK)	{		at91ckbdIntr();	}	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费视频大全| 免费在线看成人av| 欧美精品一区二| 在线播放国产精品二区一二区四区 | 婷婷综合在线观看| 亚洲影视资源网| 亚洲国产wwwccc36天堂| 亚洲电影欧美电影有声小说| 午夜视频久久久久久| 天堂av在线一区| 欧美aⅴ一区二区三区视频| 久久精品国产免费看久久精品| 精品在线播放午夜| 国产乱妇无码大片在线观看| 国产成人精品免费在线| 国产+成+人+亚洲欧洲自线| 99精品视频免费在线观看| 在线观看亚洲精品视频| 欧美一区二区在线免费播放| 日韩欧美一级特黄在线播放| 久久久久久麻豆| 玉米视频成人免费看| 亚洲成人中文在线| 久久99在线观看| av在线一区二区| 欧美丰满美乳xxx高潮www| 精品国产91久久久久久久妲己| 欧美极品少妇xxxxⅹ高跟鞋| 一区二区三区高清| 精品一区二区三区在线观看国产| av综合在线播放| 91精品婷婷国产综合久久竹菊| 亚洲精品一区二区在线观看| 亚洲图片另类小说| 麻豆一区二区在线| 色综合久久中文综合久久牛| 欧美一区二区美女| 日韩一区在线看| 国内久久精品视频| 欧美日韩不卡一区| 国产精品色婷婷| 麻豆精品一区二区综合av| 色激情天天射综合网| 精品久久久三级丝袜| 亚洲成人一二三| 成人av在线影院| 久久久久久亚洲综合| 日日欢夜夜爽一区| 99国产精品一区| 久久精品免视看| 美女视频一区二区三区| 色先锋久久av资源部| 国产精品伦一区| 国内国产精品久久| 日韩一区二区三免费高清| 一区二区三区毛片| 99国产精品国产精品毛片| 久久久一区二区| 国产自产视频一区二区三区| 7777精品伊人久久久大香线蕉超级流畅| 久久久国产午夜精品| 视频在线观看一区| 欧美日韩中文字幕一区二区| 亚洲女性喷水在线观看一区| 成人精品小蝌蚪| 中文字幕不卡在线| 国产激情精品久久久第一区二区 | 欧美高清性hdvideosex| 亚洲欧美日韩国产综合| 91在线视频免费91| 欧美激情中文不卡| 国产尤物一区二区在线| 日韩精品一区二区在线| 美女一区二区三区在线观看| 欧美日韩免费电影| 婷婷国产v国产偷v亚洲高清| 91黄色免费版| 亚洲一区二区三区在线看| 欧美天堂一区二区三区| 婷婷综合五月天| 欧美一区二区美女| 国产精品一区二区在线播放| 国产色综合一区| 99精品视频在线免费观看| 亚洲免费观看视频| 欧洲精品在线观看| 日韩中文字幕91| 精品国产99国产精品| 成人伦理片在线| 一区二区三区四区乱视频| 欧美丰满一区二区免费视频| 精品一区二区三区av| 亚洲国产精品传媒在线观看| 99精品国产91久久久久久| 亚洲va国产va欧美va观看| 日韩亚洲欧美成人一区| 国产大陆亚洲精品国产| 亚洲日韩欧美一区二区在线| 欧美久久久久久久久久| 国产一区欧美日韩| 亚洲黄网站在线观看| 欧美一级一区二区| 国产成人啪午夜精品网站男同| 亚洲天堂av老司机| 911国产精品| caoporm超碰国产精品| 午夜av电影一区| 国产欧美精品一区二区三区四区| 99久免费精品视频在线观看| 首页国产丝袜综合| 久久精品夜色噜噜亚洲aⅴ| 色吊一区二区三区| 国产在线播放一区三区四| 亚洲一区二区高清| 国产精品午夜春色av| 91精品啪在线观看国产60岁| 成+人+亚洲+综合天堂| 免费久久99精品国产| 亚洲男同1069视频| 久久久综合视频| 51精品国自产在线| 色狠狠av一区二区三区| 国产福利一区二区三区在线视频| 一区二区高清免费观看影视大全| 国产亚洲一区二区三区在线观看 | 色综合中文字幕国产 | 精品一区二区三区的国产在线播放| 亚洲天堂成人在线观看| 久久久噜噜噜久久中文字幕色伊伊 | 精品一区二区三区免费视频| 亚洲日穴在线视频| 国产欧美视频在线观看| 欧美一级片免费看| 欧美色视频一区| av不卡在线播放| 国产精选一区二区三区| 久久91精品国产91久久小草| 婷婷久久综合九色国产成人| 亚洲欧美经典视频| 国产精品久久久久久久久图文区 | 国产成人久久精品77777最新版本| 日本91福利区| 男女男精品视频网| 日本成人中文字幕在线视频| 日韩中文字幕1| 亚洲成人黄色小说| 亚洲国产日韩a在线播放| 亚洲男人电影天堂| 亚洲精品老司机| 一区二区三区四区激情| 亚洲乱码国产乱码精品精98午夜| 国产精品网友自拍| 一区在线观看免费| 亚洲欧美另类小说视频| 亚洲精品网站在线观看| 亚洲激情av在线| 婷婷六月综合网| 日本在线不卡一区| 捆绑紧缚一区二区三区视频| 国产精品资源网站| 成人免费毛片app| 色8久久人人97超碰香蕉987| 欧美日韩和欧美的一区二区| 91超碰这里只有精品国产| 日韩三级视频在线看| 久久精品视频一区| 日韩美女精品在线| 日韩影院在线观看| 韩国精品一区二区| 91香蕉视频黄| 91精品免费在线观看| 久久综合999| 亚洲欧美另类小说视频| 欧美a级一区二区| 丁香婷婷综合网| 欧美视频自拍偷拍| 精品成人私密视频| 中文字幕一区二区三区视频| 亚洲成人综合网站| 国产在线看一区| 91香蕉视频mp4| 精品日韩一区二区三区免费视频| 国产日韩精品一区二区浪潮av| 亚洲美女免费视频| 国内精品国产成人| 欧美午夜电影一区| 久久蜜桃av一区精品变态类天堂| 一级做a爱片久久| 极品少妇xxxx偷拍精品少妇| 色综合久久久久综合体| 精品免费国产一区二区三区四区| 综合欧美亚洲日本| 狠狠色丁香九九婷婷综合五月| 欧美主播一区二区三区美女| 欧美videos中文字幕| 亚洲一区自拍偷拍| 不卡的av中国片| 精品第一国产综合精品aⅴ| 亚洲激情图片一区| 暴力调教一区二区三区|