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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 2410iic.c

?? 2410得測(cè)試程序
?? C
字號(hào):
//====================================================================
// File Name : 2410IIC.c
// Function	: S3C2410 IIC-bus Master Tx/Rx mode Test Program
//			(Interrupt / Non Interrupt (Polling))
// Program	: Shin, On Pil (SOP)
// Date		: May 21, 2002
// Version	: 0.0
// History
//	0.0 : Programming start (March 11, 2002) -> SOP
//====================================================================

#include <string.h>
#include "2410addr.h"
#include "2410lib.h"
#include "def.h"
#include "2410IIC.h"

static U8 _iicData[IICBUFSIZE];
static volatile int _iicDataCount;
static volatile int _iicStatus;
static volatile int _iicMode;
static int _iicPt;

//===================================================================
//		SMDK2410 IIC configuration
//	GPE15=IICSDA, GPE14=IICSCL
//	"Interrupt mode" for IIC block
//=================================================================== 

//******************[ Test_Iic ]**************************************
void Test_Iic(void)
{
	unsigned int i,j,save_E,save_PE;
	static U8 data[256];

	Uart_Printf("[ IIC Test(Interrupt) using KS24C080 ]\n");

	save_E	= rGPECON;
	save_PE	= rGPEUP;
	rGPEUP	|= 0xc000;			//Pull-up disable
	rGPECON |= 0xa00000;		//GPE15:IICSDA , GPE14:IICSCL 

	pISR_IIC = (unsigned)IicInt;
	rINTMSK &= ~(BIT_IIC);

		//Enable ACK, Prescaler IICCLK=PCLK/16, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
		// If PCLK 50.7MHz, IICCLK = 3.17MHz, Tx Clock = 0.198MHz
	rIICCON = (1<<7) | (0<<6) | (1<<5) | (0xf);

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

	Uart_Printf("Write test data into KS24C080\n");

	for(i=0;i<256;i++)
		Wr24C080(0xa0,(U8)i,i);
			
	memset(data,0,256);

	Uart_Printf("Read test data from KS24C080\n");
	
	for(i=0;i<256;i++)
		Rd24C080(0xa0,(U8)i,&(data[i])); 

		//Line changed 0 ~ f
	for(i=0;i<16;i++)
	{
		for(j=0;j<16;j++)
			Uart_Printf("%2x ",data[i*16+j]);
		Uart_Printf("\n");
	}
	rINTMSK |= BIT_IIC;	
	rGPEUP	= save_PE;
	rGPECON = save_E;
}

//*************************[ Wr24C080 ]****************************
void Wr24C080(U32 slvAddr,U32 addr,U8 data)
{
	_iicMode	= WRDATA;
	_iicPt		= 0;
	_iicData[0]	= (U8)addr;
	_iicData[1]	= data;
	_iicDataCount = 2;
	
	rIICDS	= slvAddr;			//0xa0
	rIICSTAT = 0xf0;			//MasTx,Start
		//Clearing the pending bit isn't needed because the pending bit has been cleared.
	while(_iicDataCount!=-1);

	_iicMode = POLLACK;

	while(1)
	{
		rIICDS	= slvAddr;
		_iicStatus = 0x100;
		rIICSTAT	= 0xf0;		//MasTx,Start
		rIICCON	= 0xaf;			//Resumes IIC operation. 
			
		while(_iicStatus==0x100);
			
		if(!(_iicStatus&0x1))
			break;				//When ACK is received
	}
	rIICSTAT = 0xd0;			//Stop MasTx condition 
	rIICCON	= 0xaf;				//Resumes IIC operation. 
	Delay(1);					//Wait until stop condtion is in effect.
		//Write is completed.
}
		
//**********************[ Rd24C080 ] ***********************************
void Rd24C080(U32 slvAddr,U32 addr,U8 *data)
{
	_iicMode		= SETRDADDR;
	_iicPt		= 0;
	_iicData[0]	= (U8)addr;
	_iicDataCount = 1;

	rIICDS	= slvAddr;
	rIICSTAT = 0xf0;			//MasTx,Start	
		//Clearing the pending bit isn't needed because the pending bit has been cleared.
	while(_iicDataCount!=-1);

	_iicMode	= RDDATA;
	_iicPt		= 0;
	_iicDataCount = 1;
	
	rIICDS		= slvAddr;
	rIICSTAT	= 0xb0;			//MasRx,Start
	rIICCON		= 0xaf;			//Resumes IIC operation.	
	while(_iicDataCount!=-1);

	*data = _iicData[1];
}


//-------------------------------------------------------------------------
void __irq IicInt(void)
{
	U32 iicSt,i;
	
	rSRCPND = BIT_IIC;			//Clear pending bit
	rINTPND = BIT_IIC;
	iicSt	= rIICSTAT; 
	
	if(iicSt & 0x8){}			//When bus arbitration is failed.
	if(iicSt & 0x4){}			//When a slave address is matched with IICADD
	if(iicSt & 0x2){}			//When a slave address is 0000000b
	if(iicSt & 0x1){}			//When ACK isn't received

	switch(_iicMode)
	{
		case POLLACK:
			_iicStatus = iicSt;
			break;

		case RDDATA:
			if((_iicDataCount--)==0)
			{
				_iicData[_iicPt++] = rIICDS;
			
				rIICSTAT = 0x90;			//Stop MasRx condition 
				rIICCON	= 0xaf;				//Resumes IIC operation.
				Delay(1);					//Wait until stop condtion is in effect.
											//Too long time... 
											//The pending bit will not be set after issuing stop condition.
				break;	
			}		
			_iicData[_iicPt++] = rIICDS;	//The last data has to be read with no ack.

			if((_iicDataCount)==0)
				rIICCON = 0x2f;				//Resumes IIC operation with NOACK.	
			else 
				rIICCON = 0xaf;				//Resumes IIC operation with ACK
				break;

		case WRDATA:
			if((_iicDataCount--)==0)
			{
				rIICSTAT = 0xd0;			//Stop MasTx condition 
				rIICCON	= 0xaf;				//Resumes IIC operation.
				Delay(1);					//Wait until stop condtion is in effect.
						//The pending bit will not be set after issuing stop condition.
				break;	
			}
			rIICDS = _iicData[_iicPt++];	//_iicData[0] has dummy.
			for(i=0;i<10;i++);				//for setup time until rising edge of IICSCL
				
			rIICCON = 0xaf;					//resumes IIC operation.
			break;

		case SETRDADDR:
//			Uart_Printf("[ S%d ]",_iicDataCount);
			if((_iicDataCount--)==0)
				break;						//IIC operation is stopped because of IICCON[4]	
			rIICDS = _iicData[_iicPt++];
			for(i=0;i<10;i++);				//For setup time until rising edge of IICSCL
			rIICCON = 0xaf;					//Resumes IIC operation.
			break;

		default:
			break;		
	}
}

//===================================================================
//		SMDK2410 IIC configuration
//	GPE15=IICSDA, GPE14=IICSCL
//	"Non-Interrupt" mode for IIC block
//=================================================================== 

//*********************[ Test_Iic2 ]*********************************
void Test_Iic2(void)
{
	unsigned int i,j,save_E,save_PE;
	static U8 data[256];
	
	Uart_Printf("[ IIC Test(Polling) using KS24C080 ]\n");

	save_E	= rGPECON;
	save_PE	= rGPEUP;

	rGPEUP	|= 0xc000;		//Pull-up disable
	rGPECON |= 0xa00000;	//GPE15:IICSDA , GPE14:IICSCL	

	//Enable ACK, Prescaler IICCLK=PCLK/16, Enable interrupt, Transmit clock value Tx clock=IICCLK/16
	rIICCON	= (1<<7) | (0<<6) | (1<<5) | (0xf);

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

	Uart_Printf("Write test data into KS24C080\n");

	for(i=0;i<256;i++)
		_Wr24C080(0xa0,(U8)i,255-i);
	memset(data,0,256);

	Uart_Printf("Read test data from KS24C080\n");
	for(i=0;i<256;i++)
		_Rd24C080(0xa0,(U8)i,&(data[i])); 

	for(i=0;i<16;i++)
	{
		for(j=0;j<16;j++)
			Uart_Printf("%2x ",data[i*16+j]);
		Uart_Printf("\n");
	}
	
	rGPEUP	= save_PE;
	rGPECON = save_E;
}

//**************[ _Wr24C080 ]*****************************************
void _Wr24C080(U32 slvAddr,U32 addr,U8 data)
{
	_iicMode	= WRDATA;
	_iicPt		= 0;
	_iicData[0]	= (U8)addr;
	_iicData[1]	= data;
	_iicDataCount = 2;
	
	rIICDS		= slvAddr;			//0xa0
	//Master Tx mode, Start(Write), IIC-bus data output enable
	//Bus arbitration sucessful, Address as slave status flag Cleared,
	//Address zero status flag cleared, Last received bit is 0
	rIICSTAT		= 0xf0;		
	//Clearing the pending bit isn't needed because the pending bit has been cleared.
	while(_iicDataCount!=-1)
		Run_IicPoll();

	_iicMode = POLLACK;

	while(1)
	{
		rIICDS	= slvAddr;
		_iicStatus = 0x100;			//To check if _iicStatus is changed 
		rIICSTAT	= 0xf0;			//Master Tx, Start, Output Enable, Sucessful, Cleared, Cleared, 0
		rIICCON	= 0xaf;				//Resumes IIC operation. 
		while(_iicStatus==0x100)	
			Run_IicPoll();
				
		if(!(_iicStatus & 0x1))
			break;					//When ACK is received
	}
	rIICSTAT = 0xd0;				//Master Tx condition, Stop(Write), Output Enable
	rIICCON	= 0xaf;					//Resumes IIC operation. 
	Delay(1);						//Wait until stop condtion is in effect.
	//Write is completed.
}
		
//************************[ _Rd24C080 ]********************************
void _Rd24C080(U32 slvAddr,U32 addr,U8 *data)
{
	_iicMode		= SETRDADDR;
	_iicPt		= 0;
	_iicData[0]	= (U8)addr;
	_iicDataCount = 1;

	rIICDS	= slvAddr;
	rIICSTAT = 0xf0;				//MasTx,Start	
		//Clearing the pending bit isn't needed because the pending bit has been cleared.
	while(_iicDataCount!=-1)
		Run_IicPoll();

	_iicMode		= RDDATA;
	_iicPt		= 0;
	_iicDataCount = 1;
	
	rIICDS	= slvAddr;
	rIICSTAT = 0xb0;				//Master Rx,Start
	rIICCON	= 0xaf;					//Resumes IIC operation.	
	while(_iicDataCount!=-1)
		Run_IicPoll();

	*data = _iicData[1];
}

//**********************[ Run_IicPoll ]*********************************
void Run_IicPoll(void)
{
	if(rIICCON & 0x10)				//Tx/Rx Interrupt Enable
		IicPoll();
}		
	
//**********************[IicPoll ]**************************************
void IicPoll(void)
{
	U32 iicSt,i;
	
	iicSt = rIICSTAT; 
	if(iicSt & 0x8){}				//When bus arbitration is failed.
	if(iicSt & 0x4){}				//When a slave address is matched with IICADD
	if(iicSt & 0x2){}				//When a slave address is 0000000b
	if(iicSt & 0x1){}				//When ACK isn't received

	switch(_iicMode)
	{
		case POLLACK:
			_iicStatus = iicSt;
			break;
		case RDDATA:
			if((_iicDataCount--)==0)
			{
				_iicData[_iicPt++] = rIICDS;
			
				rIICSTAT = 0x90;	//Stop MasRx condition 
				rIICCON	= 0xaf;		//Resumes IIC operation.
				Delay(1);			//Wait until stop condtion is in effect.
									//Too long time... 
									//The pending bit will not be set after issuing stop condition.
				break;	
			}		
			_iicData[_iicPt++] = rIICDS;
						//The last data has to be read with no ack.
			if((_iicDataCount)==0)
				rIICCON = 0x2f;		//Resumes IIC operation with NOACK.	
			else 
				rIICCON = 0xaf;		//Resumes IIC operation with ACK
			break;
		case WRDATA:
			if((_iicDataCount--)==0)
			{
				rIICSTAT = 0xd0;		//stop MasTx condition 
				rIICCON	= 0xaf;			//resumes IIC operation.
				Delay(1);				//wait until stop condtion is in effect.
						//The pending bit will not be set after issuing stop condition.
				break;	
			}
			rIICDS = _iicData[_iicPt++];//_iicData[0] has dummy.
			for(i=0;i<10;i++);			//for setup time until rising edge of IICSCL
			rIICCON = 0xaf;				//resumes IIC operation.
			break;
		case SETRDADDR:
//			Uart_Printf("[S%d]",_iicDataCount);
			if((_iicDataCount--)==0)
			{
				break;					//IIC operation is stopped because of IICCON[4]	
			}
			rIICDS = _iicData[_iicPt++];
			for(i=0;i<10;i++);			//for setup time until rising edge of IICSCL
			rIICCON = 0xaf;				//resumes IIC operation.
			break;
		default:
			break;		
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99riav一区二区三区| 色先锋aa成人| 亚洲国产aⅴ成人精品无吗| 91精品国产aⅴ一区二区| 成人免费福利片| 捆绑紧缚一区二区三区视频| 日韩一区日韩二区| 久久综合九色综合久久久精品综合| eeuss鲁片一区二区三区在线观看| 热久久国产精品| 一区二区三区四区在线| 国产三级三级三级精品8ⅰ区| 欧美视频你懂的| 91在线porny国产在线看| 国产精品69毛片高清亚洲| 天天色综合天天| 亚洲美女视频一区| 国产日韩欧美精品综合| 精品欧美一区二区久久 | 成人av电影免费观看| 青青青伊人色综合久久| 夜夜亚洲天天久久| 中文字幕一区二区三区乱码在线| 欧美mv日韩mv亚洲| 精品久久久久久无| 91精品国产欧美一区二区成人| 在线观看日韩精品| 91网页版在线| 97精品国产97久久久久久久久久久久| 久88久久88久久久| 久久精品国内一区二区三区| 婷婷开心激情综合| 日韩成人精品在线观看| 午夜精品久久久久久久久久 | 欧洲日韩一区二区三区| 91麻豆蜜桃一区二区三区| av色综合久久天堂av综合| 丁香啪啪综合成人亚洲小说| 成人一道本在线| av在线不卡电影| 91麻豆免费看| 欧美日韩日日骚| 欧美浪妇xxxx高跟鞋交| 欧美日产国产精品| 欧美夫妻性生活| 欧美电影免费观看高清完整版 | 中文字幕在线不卡| 中文字幕在线播放不卡一区| 18欧美乱大交hd1984| 亚洲六月丁香色婷婷综合久久| 国产精品进线69影院| 亚洲欧美日韩在线| 亚州成人在线电影| 免费看黄色91| 国产精品99久久久久久有的能看| 国产成人av电影免费在线观看| 成人h动漫精品一区二区| 97精品视频在线观看自产线路二| 色婷婷久久久综合中文字幕 | 加勒比av一区二区| 国产69精品久久久久毛片| eeuss国产一区二区三区| 欧美自拍偷拍午夜视频| 欧美一区二区三区视频免费| 久久午夜国产精品| 一区视频在线播放| 亚洲大片免费看| 久久电影网电视剧免费观看| 成人短视频下载| 一本大道久久精品懂色aⅴ| 欧美福利一区二区| 中文字幕不卡的av| 一区二区三区精品视频在线| 麻豆精品国产91久久久久久| 国产成人精品免费网站| 欧洲色大大久久| 久久精品亚洲精品国产欧美 | 五月激情六月综合| 国产乱子轮精品视频| 91小视频在线| 日韩小视频在线观看专区| 中文字幕av免费专区久久| 亚洲国产日韩综合久久精品| 国模大尺度一区二区三区| 91麻豆.com| 欧美成人免费网站| 一区二区三区不卡视频在线观看| 天堂成人国产精品一区| 懂色av中文一区二区三区| 欧美日韩亚洲丝袜制服| 国产精品少妇自拍| 蜜桃视频在线观看一区二区| 97久久超碰国产精品电影| 精品久久五月天| 亚洲欧洲日韩女同| 国产综合色产在线精品| 欧美精品在线一区二区| 中文字幕一区二区三区在线播放 | 99国产欧美另类久久久精品| 欧美一区二区三区小说| 亚洲日本va在线观看| 狠狠色狠狠色综合日日91app| 欧洲视频一区二区| 最新热久久免费视频| 国产成人在线看| 精品粉嫩aⅴ一区二区三区四区| 国产麻豆91精品| 制服丝袜中文字幕一区| 亚洲婷婷综合色高清在线| 国产一区二区女| 日韩欧美一级二级| 午夜精品久久久久久| 97aⅴ精品视频一二三区| 欧美激情一区在线观看| 久久99日本精品| 欧美一区二区免费观在线| 亚洲一区日韩精品中文字幕| 成人高清免费观看| 国产清纯在线一区二区www| 日韩一区二区高清| 午夜视频一区在线观看| 在线视频欧美精品| 亚洲欧美日韩一区| gogo大胆日本视频一区| 欧美激情一区二区三区不卡| 久久66热re国产| 欧美成人乱码一区二区三区| 秋霞电影网一区二区| 欧美一级电影网站| 日韩精品福利网| 欧美一区二区三区四区在线观看 | 欧美激情在线看| 国产成人精品三级麻豆| 国产欧美日韩久久| 国产成人av网站| 国产精品第一页第二页第三页| 国产精品1024| 中文字幕一区二区不卡 | 欧美视频精品在线| 亚洲综合色区另类av| 欧美丝袜丝交足nylons图片| 亚洲一区中文日韩| 欧美日韩国产123区| 日韩二区三区四区| 日韩欧美精品在线| 激情综合网av| 国产欧美日韩视频一区二区| 成人黄色av电影| 亚洲欧美国产三级| 欧美性受极品xxxx喷水| 午夜不卡av免费| 精品欧美久久久| 成人蜜臀av电影| 亚洲免费观看高清完整| 欧美日韩国产bt| 国内精品国产成人| 亚洲少妇30p| 欧美偷拍一区二区| 久久精品国产一区二区| 久久久精品人体av艺术| 97se亚洲国产综合自在线| 亚洲h动漫在线| 精品福利二区三区| 99精品桃花视频在线观看| 一区二区三区欧美日韩| 日韩一区二区三区电影| 国产成人免费视频网站高清观看视频| 国产精品网站导航| 欧美日韩综合在线| 精品一区二区av| ...av二区三区久久精品| 制服丝袜中文字幕亚洲| 国产麻豆视频精品| 亚洲综合免费观看高清完整版| 欧美日韩国产精选| 国产精品 日产精品 欧美精品| 亚洲精选在线视频| 精品久久久久一区二区国产| 不卡的看片网站| 亚洲a一区二区| 国产人妖乱国产精品人妖| 欧美中文一区二区三区| 国产精品一区二区在线观看网站| 一区二区三区精品在线观看| 久久蜜桃一区二区| 欧美影院一区二区| 国产成人免费视频一区| 亚洲成人免费视| 中文字幕欧美激情| 91精品国产91热久久久做人人| 播五月开心婷婷综合| 日本不卡123| 亚洲精品菠萝久久久久久久| 精品毛片乱码1区2区3区| 欧美视频在线一区| 成人福利电影精品一区二区在线观看| 秋霞成人午夜伦在线观看| 一区二区三区精密机械公司| 国产亚洲综合av| 欧美一级片在线观看|