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

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

?? iic.c

?? 2410開發板上鍵盤與LED的驅動實驗
?? C
字號:
/***************************************************************************\
	Copyright (c) 2004-2007 threewater@up-tech.com, All rights reserved.
	by threewter	2005.2.26
\***************************************************************************/
/***************************************************************************\
    #說明: iic接口驅動程序
	----------------------------------  Bug  --------------------------------------

	----------------------------------  TODO list  --------------------------------------

	----------------------------------修正--------------------------------------

	2005-2-26	創建

\***************************************************************************/

#include "../inc/macro.h"
#include "../inc/reg2410.h"
#include "../inc/iic.h"
#include "../inc/lib.h"
#include "../inc/isr.h"
#define GPIO_IIC_SCL			(GPIO_MODE_ALT0 | GPIO_PULLUP_DIS | GPIO_E14)
#define GPIO_IIC_SDA		(GPIO_MODE_ALT0 | GPIO_PULLUP_DIS | GPIO_E15)

#define IIC_READ				1

#define WAIT_IICACK()	do{int i=0; \
			while(!(rIICCON&IICCON_INTPEND)){ i++; hudelay(1);\
			 if(i>1000){ printk("iic ack time out!\n"); break;} }\
			}while(0)

void Set_IIC_mode(int nIICCON, int *poldIICCON)
{	
	if(poldIICCON){
		*poldIICCON=rIICCON;
	}
	rIICCON=nIICCON;
}

void IIC_init(void)
{
	static int time=0;

	if(time!=0)
		return;

	time++;
	
	set_gpio_ctrl (GPIO_IIC_SCL);
	set_gpio_ctrl (GPIO_IIC_SDA);

	//Enable ACK, Prescaler IICCLK=PCLK/512, Enable interrupt, Transmit clock value Tx clock=IICCLK/4
	// If PCLK 50.7MHz, IICCLK = 99KHz, Tx Clock = 25KHz
	rIICCON = IICCON_ACKEN |IICCON_CLK512 | IICCON_INTR | IICCON_CLKPRE(0x3);

	rIICADD  = 0x10;                    //2410 slave address = [7:1]
	rIICSTAT = 0x10;                    //IIC bus data output enable(Rx/Tx)
}

void Led_IIC_init(void)
{	//Enable ACK, Prescaler IICCLK=PCLK/512, Enable interrupt, Transmit clock value Tx clock=IICCLK/4
	// If PCLK 50.7MHz, IICCLK = 99KHz, Tx Clock = 25KHz
	rIICCON = IICCON_ACKEN |IICCON_CLK512 | IICCON_INTR | IICCON_CLKPRE(0x3);

	rIICADD  = 0x10;                    //2410 slave address = [7:1]
	//rIICSTAT = 0x10;                    //IIC bus data output enable(Rx/Tx)
	rIICSTAT = 0xd0;
}

void IIC_MasterTxStart(char data)
{
	int i;

	Disable_Irq(IRQ_IIC);
	
	rIICDS   = data;
	for(i=0;i<10;i++);                  //for setup time until rising edge of IICSCL
	rIICSTAT = IICSTAT_MODE_MT|IICSTAT_START|IICSTAT_OUTEN;	//MasTx,Start 0xf0
//	while(!(IICCON&IICCON_INTPEND));
	WAIT_IICACK();
}

void IIC_MasterTx(char data)
{
	U32 temp;
	int i;

	temp=rIICCON;
	temp  &= (~IICCON_INTPEND);	
	temp |= IICCON_ACKEN;

	rIICDS   = data;
	for(i=0;i<10;i++);                  //for setup time until rising edge of IICSCL
	rIICCON  = temp;	//Resumes IIC operation.
//	while(!(IICCON&IICCON_INTPEND));
	WAIT_IICACK();
}

char IIC_MasterRx(int isACK)
{
	char data;
	U32 temp;

	temp=rIICCON;
	if(isACK){//Resumes IIC operation with ACK
		temp  &= (~IICCON_INTPEND);	
		temp |= IICCON_ACKEN;
	}
	else{	//Resumes IIC operation with NOACK
		temp  &= ~(IICCON_INTPEND|IICCON_ACKEN);
	}

	rIICCON = temp;
//	while(!(IICCON&IICCON_INTPEND));
	WAIT_IICACK();
	data = rIICDS ;


	return data;
}

void IIC_MasterRxStart(char address)
{
	U32 temp;

	//Disable_Irq(IRQ_IIC);

	temp=rIICCON;
	temp  &= (~IICCON_INTPEND);	
	temp |= IICCON_ACKEN;

	rIICDS   = address;
	rIICSTAT = IICSTAT_MODE_MR|IICSTAT_START|IICSTAT_OUTEN; //MasRx,Start, 0xb0
	rIICCON = temp;
//	while(!(IICCON&IICCON_INTPEND));
	WAIT_IICACK();
}

void IIC_MasterTxStop(void)
{
	U32 temp;

	temp=rIICCON;
	temp  &= (~IICCON_INTPEND);	
	temp |= IICCON_ACKEN;

	rIICSTAT = IICSTAT_MODE_MT|IICSTAT_OUTEN;                //Stop MasTx condition 0xd0
	rIICCON = temp;
	hudelay(1);                       //Wait until stop condtion is in effect.

	rIICSTAT = IICSTAT_MODE_SR|IICSTAT_OUTEN;                //slaveRx condition
	Enable_Irq(IRQ_IIC);
}

void IIC_MasterRxStop(void)
{
	U32 temp;

	temp=rIICCON;
	temp  &= (~IICCON_INTPEND);	
	temp |= IICCON_ACKEN;

	rIICSTAT = IICSTAT_MODE_MR|IICSTAT_OUTEN;                //Stop MasRx condition 0x90
	rIICCON = temp;
	hudelay(1);                       //Wait until stop condtion is in effect.

	rIICSTAT = IICSTAT_MODE_SR|IICSTAT_OUTEN;                //slaveRx condition
	Enable_Irq(IRQ_IIC);
}

U8 IIC_Read(char devaddr, char address)
{
	U8 data;

	IIC_MasterTxStart(devaddr);
	IIC_MasterTx(address);
	IIC_MasterRxStart(devaddr|IIC_READ);

	data=IIC_MasterRx(FALSE);

	IIC_MasterRxStop();

	return data;
}

void IIC_Write(char devaddr, char address, unsigned char data)
{
	IIC_MasterTxStart(devaddr);
	IIC_MasterTx(address);
	IIC_MasterTx(data);
	IIC_MasterTxStop();
}

void IIC_ReadSerial(char devaddr, char address, unsigned char* pdata, int n)
{
	if (n <=0 )
		return;
	n--;

	IIC_MasterTxStart(devaddr);
	IIC_MasterTx(address);
	IIC_MasterRxStart(devaddr|IIC_READ);

	for(;n>0;n--){
		*pdata=IIC_MasterRx(TRUE);
		pdata++;
	}

	*pdata=IIC_MasterRx(FALSE);

	IIC_MasterRxStop();
}

void IIC_WriteSerial(char devaddr, char address, unsigned char* pdata, int n)
{
	if (n <=0 )
		return;

	IIC_MasterTxStart(devaddr);
	IIC_MasterTx(address);

	for(;n>0;n--){
		IIC_MasterTx(*pdata);
		pdata++;
	}

//	*pdata=IIC_MasterRx(FALSE);

	IIC_MasterTxStop();
}

void IIC_Send(char devaddr, const char* pdata, int n)
{
	if (n <=0 )
		return;

	IIC_MasterTxStart(devaddr<<1);
	
	for(;n>0;n--){
		IIC_MasterTx(*pdata);
		pdata++;
	}

	IIC_MasterTxStop();
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品无码永久免费888| 肉色丝袜一区二区| 日韩精品乱码免费| 粉嫩av一区二区三区| 欧美三级三级三级爽爽爽| 久久久91精品国产一区二区三区| 亚洲一区二区视频| 国产一二精品视频| 91精品在线一区二区| 一区二区三区四区乱视频| 国产一区二区三区不卡在线观看 | 极品销魂美女一区二区三区| 成人性色生活片免费看爆迷你毛片| 欧美在线你懂得| 国产精品激情偷乱一区二区∴| 麻豆中文一区二区| 欧美日韩美少妇| 一区二区欧美精品| 色婷婷亚洲婷婷| 亚洲欧洲无码一区二区三区| 国产精品一区久久久久| 精品国产在天天线2019| 麻豆精品一区二区av白丝在线| 91九色02白丝porn| 亚洲欧美国产毛片在线| 92精品国产成人观看免费| 国产精品色哟哟| 粉嫩av一区二区三区粉嫩| 久久精品欧美日韩| 国产乱码精品一区二区三区忘忧草| 欧美一区二区三区在| 三级一区在线视频先锋| 欧美高清视频一二三区| 天天亚洲美女在线视频| 日韩一区二区三免费高清| 蜜臀99久久精品久久久久久软件| 91精品国产入口在线| 午夜不卡av免费| 欧美一区二区三区小说| 麻豆91在线观看| 久久综合色播五月| 福利一区二区在线观看| 欧美激情一区二区三区蜜桃视频 | 日本韩国欧美一区二区三区| 国产精品国产三级国产aⅴ原创| 成人福利在线看| 亚洲欧美乱综合| 欧美日韩在线播放| 日本午夜精品一区二区三区电影 | 国产精品久久久久久久岛一牛影视| 国产成人日日夜夜| 亚洲欧美自拍偷拍| 51午夜精品国产| 国产一区二区精品久久| 国产精品理论片在线观看| 在线视频国内一区二区| 青青草国产成人av片免费| 精品久久一二三区| 91一区在线观看| 香蕉av福利精品导航| 精品国产乱码久久久久久影片| 成人午夜电影网站| 五月激情六月综合| 久久久久国产精品麻豆| 91视频在线观看免费| 日韩二区三区四区| 国产欧美一区二区精品仙草咪 | 日韩一区二区在线看| 国产乱码精品一区二区三| 自拍偷拍国产精品| 日韩午夜在线影院| 色香色香欲天天天影视综合网| 日韩综合在线视频| 国产精品美日韩| 欧美一区二区三区免费视频| 国产91精品露脸国语对白| 水野朝阳av一区二区三区| 国产午夜精品美女毛片视频| 欧美三级资源在线| 成人动漫视频在线| 久久av中文字幕片| 亚洲国产精品人人做人人爽| 久久精品人人做人人综合 | 日韩**一区毛片| 中文字幕一区二区视频| 欧美成人精品福利| 欧美日本在线一区| 91年精品国产| 国产成人在线看| 六月婷婷色综合| 午夜视频久久久久久| 亚洲欧美日韩在线| 亚洲国产高清在线| 国产日本欧美一区二区| 欧美变态tickle挠乳网站| 欧美最新大片在线看| www.日本不卡| 成人av在线资源网站| 国产一区二区在线电影| 美国十次综合导航| 午夜精品久久久久久久久| 一区2区3区在线看| 亚洲美女区一区| 最新热久久免费视频| 国产精品久久久久久久久免费桃花| 精品国产一区二区三区不卡| 欧美三区免费完整视频在线观看| 色婷婷国产精品久久包臀| 91亚洲精品久久久蜜桃| 暴力调教一区二区三区| av在线不卡电影| av不卡免费在线观看| 成人成人成人在线视频| 国产91富婆露脸刺激对白| 国产精品18久久久久| 国产精品538一区二区在线| 国产91露脸合集magnet| 成人自拍视频在线| 99re6这里只有精品视频在线观看| 成人午夜激情视频| 99久久综合狠狠综合久久| aaa亚洲精品| 色哟哟在线观看一区二区三区| 色狠狠色狠狠综合| 欧美日本高清视频在线观看| 777午夜精品免费视频| 欧美成人一区二区三区| 国产日韩欧美一区二区三区乱码| 国产精品丝袜久久久久久app| 国产精品久久久久aaaa樱花| 亚洲欧美乱综合| 日本人妖一区二区| 国产美女av一区二区三区| 国产suv精品一区二区883| 色综合久久久久综合体桃花网| 欧美视频中文一区二区三区在线观看 | 亚洲一级片在线观看| 五月婷婷欧美视频| 激情综合五月天| 97精品久久久午夜一区二区三区| 在线中文字幕一区| 欧美一区二区三区免费在线看| 久久久精品免费网站| 亚洲人成伊人成综合网小说| 亚洲国产一二三| 国产丶欧美丶日本不卡视频| 99re在线视频这里只有精品| 欧美日韩成人综合天天影院 | 色屁屁一区二区| 欧美一区二区三区婷婷月色| 国产欧美一区二区在线观看| 一区二区在线观看免费| 国产综合色产在线精品| 91成人在线精品| 久久久久久**毛片大全| 一区二区三国产精华液| 国产91精品精华液一区二区三区| 欧美日韩中文字幕精品| 国产欧美日韩亚州综合| 午夜精品一区在线观看| 国产99一区视频免费| 日韩午夜在线影院| 一区二区三区国产精品| 国产成人aaa| 欧美一卡二卡三卡四卡| 亚洲欧美日韩小说| 精品一区二区三区蜜桃| 欧美性受极品xxxx喷水| 国产精品区一区二区三| 免费观看30秒视频久久| 91麻豆自制传媒国产之光| 久久网站最新地址| 日韩影视精彩在线| 日本二三区不卡| 国产精品久久久久久户外露出| 激情综合网av| 日韩欧美亚洲一区二区| 亚洲一区在线观看免费观看电影高清| 国产麻豆成人传媒免费观看| 67194成人在线观看| 亚洲一区二区三区四区五区中文| 成人晚上爱看视频| 国产午夜亚洲精品羞羞网站| 美女www一区二区| 欧美疯狂性受xxxxx喷水图片| 亚洲一线二线三线久久久| 99精品视频中文字幕| 国产精品久久久久天堂| 国产福利精品一区二区| www国产精品av| 狠狠色丁香久久婷婷综| 欧美成人a在线| 国产一区二区主播在线| 久久亚洲一区二区三区明星换脸| 奇米亚洲午夜久久精品| 日韩一区二区在线观看视频播放| 日韩专区中文字幕一区二区| 欧美日本韩国一区| 久久精品久久综合| 欧美大片在线观看一区二区|