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

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

?? ambamse.c

?? Vxworks下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在线视频网址| 国产麻豆精品一区二区| 久久99日本精品| 国产成人在线视频播放| av一区二区三区四区| 欧美最新大片在线看| 久久午夜免费电影| 亚洲精品中文字幕在线观看| 天堂久久一区二区三区| 成人精品免费网站| 欧美猛男男办公室激情| 亚洲国产精品v| 日韩激情在线观看| av在线一区二区三区| 精品婷婷伊人一区三区三| 欧美精品一区二区三区四区| 亚洲精品国产第一综合99久久| 六月丁香婷婷色狠狠久久| heyzo一本久久综合| 日韩色视频在线观看| 亚洲精品高清视频在线观看| 欧美日韩一本到| 亚洲黄色尤物视频| 97精品超碰一区二区三区| 久久久久久亚洲综合| 免费成人在线网站| 精品国产伦理网| 国产精品亚洲午夜一区二区三区 | av一区二区不卡| 欧美国产精品专区| 国产乱码字幕精品高清av | 久久日韩粉嫩一区二区三区| 日韩精品亚洲专区| 91精品一区二区三区久久久久久 | 欧美一区二区三区思思人| 一区二区不卡在线播放| 欧美三级日韩三级| 午夜欧美2019年伦理| 欧美视频完全免费看| 午夜精品久久久久久久99樱桃| 欧美又粗又大又爽| 蜜臀av一区二区在线免费观看| 日韩一级二级三级精品视频| 蜜臀久久久99精品久久久久久| 日韩欧美中文字幕精品| 国产在线视频精品一区| 国产精品动漫网站| 在线电影一区二区三区| 国产精品888| 亚洲午夜在线视频| 国产亚洲综合在线| 欧美中文字幕一二三区视频| 精品一区二区三区影院在线午夜| 国产精品视频观看| 91精品免费观看| 粉嫩久久99精品久久久久久夜 | 成人午夜精品一区二区三区| 亚洲一区二区三区在线播放| 欧美一区二区久久| www.欧美精品一二区| 蜜臀a∨国产成人精品| 亚洲欧美一区二区在线观看| 欧美变态tickle挠乳网站| 91麻豆免费视频| 国产精品一区二区无线| 免费成人在线网站| 亚洲一区二区视频在线观看| 国产日韩精品一区二区三区| 欧美日韩激情一区二区三区| 成人动漫在线一区| 国产精品69毛片高清亚洲| 久久激情五月婷婷| 日本vs亚洲vs韩国一区三区| 亚洲综合图片区| 亚洲精品v日韩精品| 亚洲欧美日韩国产中文在线| 国产精品女主播在线观看| 久久久久久麻豆| 国产女人aaa级久久久级 | 91丨porny丨户外露出| 粉嫩在线一区二区三区视频| 成人免费福利片| 色婷婷综合久久| 欧美日韩另类一区| 欧美一区二区黄| 久久亚区不卡日本| 中文乱码免费一区二区| 亚洲精品成人悠悠色影视| 一区二区在线看| 亚洲国产一二三| 国产一区二区三区精品视频| 91最新地址在线播放| 制服丝袜日韩国产| 中文字幕的久久| 午夜精品影院在线观看| 成人午夜激情片| 91麻豆精品国产91久久久| 久久影院视频免费| 亚洲欧美一区二区三区久本道91 | 911国产精品| 国产日韩精品一区| 天堂在线亚洲视频| 91丨porny丨户外露出| 91精品国产色综合久久不卡蜜臀 | 久久99热99| 色欧美日韩亚洲| 欧美国产97人人爽人人喊| 亚洲成人av在线电影| 91麻豆.com| 国产精品高潮呻吟久久| 国精品**一区二区三区在线蜜桃| 欧美日韩精品一区视频| 椎名由奈av一区二区三区| 国产伦精品一区二区三区免费迷| 欧美日韩精品一区视频| 亚洲最色的网站| 91福利国产成人精品照片| 中文字幕一区二区三中文字幕| 国产精品系列在线播放| 日韩美女在线视频| 日本中文字幕不卡| 在线不卡一区二区| 日韩精品午夜视频| 日韩免费福利电影在线观看| 日韩高清不卡一区二区| 欧美三级中文字幕| 免费在线看成人av| 久久综合999| 成人午夜电影网站| 亚洲欧美日韩国产成人精品影院| 成人av网址在线观看| 亚洲免费观看在线视频| 欧美中文字幕一区| 免费看精品久久片| 亚洲国产色一区| 2021国产精品久久精品| 国产精品系列在线观看| 一区二区三区免费网站| 欧美亚男人的天堂| 日本一不卡视频| 国产精品私房写真福利视频| 91麻豆国产香蕉久久精品| 日韩av二区在线播放| 欧美—级在线免费片| 欧美美女网站色| 国产99精品国产| 日本系列欧美系列| 亚洲高清免费视频| 国产精品久久久久久久久免费桃花| 色嗨嗨av一区二区三区| 国产一区二区三区四区五区美女 | 日本丶国产丶欧美色综合| 亚洲三级免费电影| 日韩午夜av电影| 色综合亚洲欧洲| 国产伦精品一区二区三区视频青涩 | 青青青爽久久午夜综合久久午夜| 国产校园另类小说区| 欧美精品一区二区三区久久久 | 亚洲一区二区四区蜜桃| 久久综合色8888| 欧美精品日韩精品| 成人高清视频免费观看| 日本不卡视频在线| 一区二区三区在线高清| 久久这里只精品最新地址| 一本久道中文字幕精品亚洲嫩| 精品一区二区三区日韩| 亚洲动漫第一页| 亚洲bt欧美bt精品| 亚洲综合久久av| 伊人色综合久久天天| 一区二区三区自拍| 亚洲国产综合视频在线观看| 亚洲国产日韩一区二区| 亚洲成人激情av| 日日夜夜一区二区| 精品制服美女丁香| 麻豆成人在线观看| 国产麻豆精品在线| 99麻豆久久久国产精品免费 | 国产精品嫩草久久久久| 久久青草欧美一区二区三区| 26uuu国产电影一区二区| 久久精品欧美一区二区三区麻豆| 欧美不卡视频一区| 中文字幕欧美日韩一区| 精品女同一区二区| 亚洲三级在线免费观看| 蜜臀精品一区二区三区在线观看| 国产iv一区二区三区| 99久久婷婷国产综合精品| 夜夜爽夜夜爽精品视频| 国产精品成人一区二区三区夜夜夜| 午夜久久久影院| 91久久精品一区二区三区| 国产人成亚洲第一网站在线播放| 日本欧美一区二区在线观看| 成人动漫精品一区二区|