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

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

?? iic0.c

?? 一個簡單得UART軟件哈哈哈好用得很啊
?? C
字號:
/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  Copyright (c)  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
$												肖遙電子(廣州)研發中心
$										Shawyoo Electronics (GuangZhou) R&D Center
$                       	http://www.shawyoo.com		 Email: autoele@qq.com
$								 QQ群:9069471/9069433/9524253		All rights reserved.	  
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  Copyright (c)  $$$$$$$$$$$$$$$$$$$$$$$$$$$ */
/*  
                                      文件描述
	文件名: 	  IIC0.c
	功能描述: IIC0底層驅動程序
	編譯環境: Keil for ARM + ARTX
	目標CPU:   LPC2000
	作者:	  肖建輝
	創建時間: 
	建議編輯環境:UltraEdit 11.00a+  制表符寬度為三個字符,程序可讀性更好。
					  Keil中可用配置工具
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
*/					  
#include		"RTOS.h"

#define		IIC0_GLOBALS	1

#include		"IIC0.h"


/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函數名稱:IIC_Read
   功能描述:按指定的從機地址的當前存儲地址和長度讀取數據
   入口參數:從機地址,任務命令,讀取的長度,接收緩沖
   出口參數:無
   全局變量: 無
   創建時間:
   修改時間:
*/ 	
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 以上原形聲明的函數供本函數調用
uchar        IIC_Read(uchar SlaveAddr,uchar Comm,uint16 Length,uchar *pBuffer)
{
	NOP();	NOP();
	if(IIC.Busy)
		return ERROR;
	IIC.Busy = TRUE;
	IIC.SlaverAddress = SlaveAddr;
	IIC.Command = Comm;
	IIC.RLen = Length;	
	IIC.ReadWrite = TW_READ;
	IIC.RW_Type = IIC_READ_COMM;
	IIC.pReadBuffer = pBuffer;
	TW_Start();		
	return OK;
}	// End of <IIC_Read> function




/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函數名稱:IIC_Write
   功能描述:寫數據到從機
   入口參數:從機地址,任務命令,長度,寫入的數據區指針
   出口參數:
   全局變量: 
   創建時間:
   修改時間:
*/ 	
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 以上原形聲明的函數供本函數調用
uchar        IIC_Write(uchar SlaveAddr,uchar Comm,uint16 Length,uchar *pBuffer)
{
	NOP();	NOP();
	if(IIC.Busy)
		return ERROR;
	IIC.Busy = TRUE;
	IIC.SlaverAddress = SlaveAddr;
	IIC.Command = Comm;
	IIC.WLen = Length;	
	IIC.ReadWrite = TW_WRITE;	
	IIC.RW_Type = IIC_WRITE_COMM;
	IIC.pWriteBuffer = pBuffer;
	TW_Start();	
	return OK;
	
}	// End of <IIC_Write> function



/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函數名稱:IIC_WriteRead
   功能描述:按指定的從機地址的隨機存儲地址讀取數據
   入口參數:器件地址,任務命令,寫長度和寫數據緩沖指針,讀長度和數據緩沖指針
   出口參數:無
   全局變量: 
   創建時間:
   修改時間:
*/ 	
void			Delay_mS(unsigned char  c);
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 以上原形聲明的函數供本函數調用
uchar       IIC_WriteRead(uchar Addr,uchar Comm,uint16 WLen,uchar *pW,uint16 RLen,uchar *pR)
{		  
	NOP();	NOP();
	if(IIC.Busy)
		return ERROR;
	IIC.Busy = TRUE;		
	IIC.SlaverAddress = Addr;
	IIC.Command = Comm;
	IIC.WLen = WLen;						// 寫長度
	IIC.ReadWrite = TW_WRITE;
	IIC.RW_Type = IIC_RW_COMM;	
	IIC.pWriteBuffer = pW;				// 寫緩沖
	////////////////////////////////////////	
	IIC.RLen = RLen;						// 讀長度
	IIC.pReadBuffer  = pR;	  			// 讀緩沖
	TW_Start();								// 啟動IIC
	return OK;
}	// End of <IIC_WriteRead> function

/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函數名稱:ReadEEPROM
   功能描述:讀EEPROM
   入口參數:器件地址,存儲器地址,讀長度,讀取存儲指針
   出口參數:無
   全局變量: 
   創建時間:
   修改時間:
*/ 
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 以上原形聲明的函數供本函數調用
void			ReadEEPROM(uchar DAddr,uint16 RAddr,uint16 RLen,uchar *pData)
{
	uchar		sAddr[2];
	NOP();	NOP();
	sAddr[0] = RAddr>>8;
	sAddr[1] = RAddr;
	while(IIC_WriteRead(DAddr,0,2,sAddr,RLen,pData));
	os_dly_wait(1+(RLen/(I2C_FREQUENCY/1000)));			// 以適應讀數據時延時
	NOP();	NOP();
} // End of <ReadEEPROM> function



/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函數名稱:EEPROM_Write
   功能描述:寫EEPROM
   入口參數:器件地址,頁長度,寫存儲地址,寫長度,待寫數據指針
   出口參數:輸入成功與否(只判斷輸入EEPROM,不判斷是否寫成功),返回0表示成功
   全局變量: 
   創建時間:
   修改時間:
*/ 
#include		<string.h>
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 以上原形聲明的函數供本函數調用
uchar			WriteEEPROM(uchar  DAddr,uchar PageLen,uint16 WAddr,
                        uint16 WLen,uchar *pData)
{
	uchar		PageBuffer[68];
	uchar		owLen;		// One time Write Len
	NOP();	NOP();
	if(PageLen%8)		return ERROR;		// 頁長度必須為8的位數	
	////////////////////////////////////// 寫首址
	PageBuffer[0] = WAddr>>8;
	PageBuffer[1] = WAddr;
	if((WLen+(WAddr%PageLen))<=PageLen)
	{
		memmove(&PageBuffer[2],pData,WLen);
		IIC_Write(DAddr,0,(WLen+2),PageBuffer);
		os_dly_wait(1);
	}
	else
	{
		if(WAddr%PageLen)									// 不是從整頁地址開始寫
		{
			owLen = PageLen-WAddr%PageLen;			// 第一輪寫的長度
			memmove(&PageBuffer[2],pData,owLen);	// 第一輪寫的數據
			while(IIC_Write(DAddr,0,(owLen+2),PageBuffer));	// 輸入EEPROM
			os_dly_wait(1);
			WAddr += owLen;				// 下一頁地址
			pData += owLen;
			WLen -= owLen;	
		}
		/////////////////////////////////////////////////////////////
		while(WLen)
		{
			PageBuffer[0] = WAddr>>8;
			PageBuffer[1] = WAddr;							// 寫地址
			if(WLen>=PageLen)
				owLen = PageLen;
			else
				owLen = WLen;
			memmove(&PageBuffer[2],pData,owLen);		// 取數據到緩沖
			while(IIC_Write(DAddr,0,(owLen+2),PageBuffer));		// 輸入EEPROM
			os_dly_wait(1);
			WAddr += owLen;
			pData += owLen;
			WLen  -= owLen;
		}		
	}
	return OK;
}	// End of <WriteEEPROM> function


/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函數名稱:I2C0_INT
   功能描述:IIC0中斷服務程序
   入口參數:無
   出口參數:無
   全局變量: 
   創建時間:
   修改時間:
*/ 
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 以上原形聲明的函數供本函數調用
void			I2C0_INT(void)   __irq      // IIC0 interrupt function
{
	uchar		s;
	NOP();	NOP();
	s = IIC.Status = I20STAT;
	NOP();	NOP();
	switch(s)
	{			
	   /// &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
		/// Start or repeat Start bit has been Transmitted
		case TW_MS_START:			// Start bit OK;
		case TW_MS_REP_START: 	// Repeat Start bit OK				
			I20DAT = (IIC.SlaverAddress|IIC.ReadWrite);
			break;			
		///&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
		// Master Transmitter Mode ///////////////////////////////////////////////				
		case TW_MT_SLA_ACK:		//	SLA+W has been transmitted; ACK has been received						
			I20DAT = *IIC.pWriteBuffer++;			
			break;
		case TW_MT_DATA_ACK:		// Data byte in I2DAT has been transmitted; 
										// ACK has been received			
			IIC.WLen--;
			if(IIC.WLen)
				I20DAT = *IIC.pWriteBuffer++;			
			else
			{
				if(IIC.RW_Type==IIC_RW_COMM)
				{
					IIC.ReadWrite = TW_READ;
					IIC.RW_Type = IIC_READ_COMM;
					I20CONCLR = (TW_INT_FLAG);    // 清除IIC中斷標志
					VICVectAddr = 0;					// 清除總中斷標志
					TW_Start();							// 再次啟動IIC
					return;
				}
				else			// 單寫完成
				{
					UserEvtFlag.IIC = IIC_WRITE_OK_EVT_FLAG;
					TW_Stop();        //  結束總線 
					IIC.Busy = FALSE;
				}
				//isr_evt_set(IIC_WRITE_EVT_OK,tidGetSpeedValue);
			}
			break;
		///&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
		// Master Receive Mode  //////////////////////////////////////////////////
		case TW_MR_SLA_ACK:		//	SLA+R has been transmitted; ACK has been received			
			if(IIC.RLen>1)
				TW_Ack();       	// 下次發送應答信號
			else
				TW_NoAck();      	// 下次發送非應答信號				
			break;		
		case TW_MR_DATA_ACK:		// Data byte has been received,ACK has been returned
			*IIC.pReadBuffer++ = I20DAT;						
			IIC.RLen--;
			if(IIC.RLen==1)			
				TW_NoAck();      	// 下次發送非應答信號
			break;		
		case TW_MR_DATA_NACK:	// Data byte has been received,NOT ACK has been returned
			*IIC.pReadBuffer++ = I20DAT;
			/////////////////////////////////////////////////////////
			if(IIC.Command==IIC_GET_GPS_COMMAND)					 	// GPS 任務操作IIC完成
			{
				UserEvtFlag.GPS = GPS_REC_OK_EVT_FLAG;
				isr_evt_set(GPS_REC_OK_EVT_FLAG,TaskID.GPS);
			}
			else if(IIC.Command==IIC_GET_T485_COMMAND)			  	// 讀485數據之任務操作IIC完成
			{
				UserEvtFlag.MainTask = MAIN_TASK_EVT_FLAG;
				isr_evt_set(MAIN_TASK_EVT_FLAG,TaskID.MainTask);
			}
			else if(IIC.Command==IIC_EEPROM_UART0)					  // 串口0任務中操作IIC完成
			{
				UserEvtFlag.UART0 = IIC_RW_OK_EVT_FLAG;
				isr_evt_set(IIC_RW_OK_EVT_FLAG,TaskID.UART0);
			}
			else if(IIC.Command==IIC_EEPROM_GSM_GPRS)					// GSM/GPRS 任務操作IIC完成
			{
				UserEvtFlag.GSM_GPRS = IIC_RW_OK_EVT_FLAG;
				isr_evt_set(IIC_RW_OK_EVT_FLAG,TaskID.GSM_GPRS);
			}	
			else if(IIC.Command==IIC_INIT_CHECK_COMM)					// 系統初始化任務操作IIC完成
			{
				UserEvtFlag.MainTask = IIC_INIT_CHECK_EVT_FLAG;
				isr_evt_set(IIC_INIT_CHECK_EVT_FLAG,TaskID.MainTask);
			}
			////////////////////////////////////////////////////////
			NOP();
			TW_Stop();           //  結束總線 			
			IIC.Busy = FALSE;
			break;
		///&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
		// Master 異常處理  //////////////////////////////////////////////////
		case TW_MR_SLA_NACK:		// 發送了地址沒收到應答
		case TW_MT_SLA_NACK:		// 發送了地址沒收到應答
		case TW_MT_DATA_NACK:	// 發送了數據沒收到應答
		case TW_MT_ARB_LOST:		// 丟失仲裁
		default: 
			TW_Stop();			
			IIC.Busy = FALSE;
			break;		
	}
	I20CONCLR = (TW_INT_FLAG);    // 清除中斷標志
	NOP();	NOP();
	VICVectAddr = 0;
}	// End of <I2C0_INT> function




/* $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
	函數名稱:I2cInit
   功能描述:I2c0初始化函數
   入口參數:無
   出口參數:無
   全局變量: 
   創建時間:
   修改時間:
*/ 
// $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ 以上原形聲明的函數供本函數調用
void		I2C0_Init(void)
{
	I20CONCLR = 0x6C;                             	// 清除控制寄存器 
   VICIntEnClr = (1<<IIC0_INT_VECT);             	// 禁止能I2c中斷    	   
   PINSEL0 = (PINSEL0 & 0xffffff0f) | 0x50;      	// 選擇管腳為I2c 	
   I20SCLH = (Fpclk / I2C_FREQUENCY + 1) / 2;    	// 設置高電平時間 
   I20SCLL = (Fpclk / I2C_FREQUENCY) / 2;        	// 設置低電平時間               
   I20CONSET = 1<<TW_ENABLE;       	 					// Master model
   /////////////////////////////////////////////
   VICVectAddr6  = (uint32)I2C0_INT;
   VICVectCntl6  = (IRQ_ENABLE|IIC0_INT_VECT);
   VICIntEnable  |= (1<<IIC0_INT_VECT);				//    
	IIC.Busy = IIC.WLen = IIC.RLen = IIC.RW_Type = 0;
	IIC.Command = IIC.SlaverAddress = 0;
} //End of <I2C0_Init> Function




/*
 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  End of File $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久黄色级2电影| 欧美美女一区二区在线观看| 一区二区三区在线免费| 日韩一区二区三区在线| 欧美三级电影网| 欧美夫妻性生活| 精品理论电影在线| 亚洲精品一区二区三区在线观看| 精品蜜桃在线看| 亚洲综合久久久久| 日韩中文字幕麻豆| 久久99久久久久久久久久久| 日韩av在线播放中文字幕| 三级久久三级久久久| 日本大香伊一区二区三区| 欧美亚洲综合另类| 精品久久久久av影院| 亚洲一区二区四区蜜桃| av一区二区三区黑人| 在线精品视频免费播放| 91精品国模一区二区三区| 欧美成人女星排行榜| 天天影视涩香欲综合网| 国产一区二区在线免费观看| 岛国一区二区在线观看| 色哟哟欧美精品| 欧美视频第二页| 一区二区三区在线免费观看| 97aⅴ精品视频一二三区| 欧美日韩在线亚洲一区蜜芽| 亚洲精品菠萝久久久久久久| 亚洲国产视频直播| 久久国产剧场电影| 日韩精品一区二区三区中文精品| 亚洲欧美综合另类在线卡通| 亚洲无线码一区二区三区| 色悠悠久久综合| 亚洲影视在线播放| 欧美性一区二区| 亚洲午夜精品17c| 91麻豆精品91久久久久同性| 青青草精品视频| 在线亚洲免费视频| 亚洲国产精品久久久久秋霞影院| 欧美性受极品xxxx喷水| 午夜伊人狠狠久久| 春色校园综合激情亚洲| 亚洲人成人一区二区在线观看| 麻豆精品久久精品色综合| 欧洲人成人精品| 日韩成人免费在线| 亚洲精品一区二区三区福利| 高清免费成人av| 精品福利一区二区三区免费视频| 国产精品亚洲一区二区三区在线 | 国产精品美女久久久久aⅴ国产馆| 一区二区三区在线观看国产 | 欧美日韩成人一区| 亚洲天堂免费在线观看视频| 精品一区二区三区香蕉蜜桃| 国产欧美精品一区aⅴ影院 | 欧美一区二区三区婷婷月色| 亚洲欧美一区二区视频| 欧美色图12p| 麻豆传媒一区二区三区| 国产精品国产三级国产有无不卡| 麻豆国产精品一区二区三区| 中文字幕第一区二区| 国产精品影音先锋| 一个色综合网站| 欧美成人aa大片| 色综合久久天天| 精彩视频一区二区| 一级女性全黄久久生活片免费| 日韩一级片网站| caoporen国产精品视频| 日韩经典中文字幕一区| 国产精品欧美经典| 欧美一激情一区二区三区| 成年人网站91| 亚洲视频香蕉人妖| 精品少妇一区二区三区免费观看 | 欧美精品少妇一区二区三区| 国产精品白丝av| 首页国产丝袜综合| 亚洲蜜臀av乱码久久精品蜜桃| 日韩精品资源二区在线| 欧美亚洲丝袜传媒另类| jlzzjlzz亚洲日本少妇| 国内精品视频一区二区三区八戒| 一区二区三区高清不卡| 欧美日韩高清一区二区| 色偷偷久久一区二区三区| 国产一区欧美二区| 免费观看30秒视频久久| 香蕉久久夜色精品国产使用方法| 成人欧美一区二区三区| 久久精品一区二区三区av| 国产999精品久久久久久绿帽| 蜜桃视频在线一区| 亚洲成人综合视频| 亚洲综合色丁香婷婷六月图片| 国产精品无码永久免费888| 久久久久久电影| 91福利视频网站| 99国产麻豆精品| 成人网在线免费视频| 国产99精品视频| 国产精品一区二区久久不卡| 国产麻豆精品久久一二三| 免费的国产精品| 久久国产三级精品| 美女性感视频久久| 久久疯狂做爰流白浆xx| 国产做a爰片久久毛片| 精品一区二区在线视频| 狠狠色丁香婷综合久久| 国产一级精品在线| 国产成人啪免费观看软件| 亚洲在线观看免费视频| 亚洲中国最大av网站| 亚洲高清免费观看高清完整版在线观看| 日韩理论片在线| 一区二区欧美国产| 午夜a成v人精品| 理论电影国产精品| 国产九色sp调教91| caoporm超碰国产精品| 在线观看成人免费视频| 欧美一区二区三区免费大片 | 亚洲高清免费视频| 奇米777欧美一区二区| 精品一区二区精品| 成人性生交大片免费看视频在线| 99r精品视频| 欧美日韩视频在线一区二区 | 国产揄拍国内精品对白| 国产精品1区2区| 色婷婷综合久久久久中文| 国产日韩亚洲欧美综合| 国产精品免费久久久久| 亚洲男女毛片无遮挡| 视频一区国产视频| 国产精品一二三四区| 欧美在线一二三四区| 久久婷婷国产综合国色天香| 欧美片在线播放| 欧美精品一区二区在线播放| 亚洲欧洲色图综合| 午夜av一区二区三区| 国产在线精品一区二区不卡了| av欧美精品.com| 欧美一区二区三区公司| 国产精品久久久久四虎| 日韩影院在线观看| 成人精品gif动图一区| 7777女厕盗摄久久久| 中文字幕av不卡| 天天做天天摸天天爽国产一区| 国产高清一区日本| 欧美日韩精品一二三区| 国产校园另类小说区| 视频一区视频二区中文| 波多野结衣在线一区| 精品剧情v国产在线观看在线| 亚洲色欲色欲www| 国产大陆a不卡| 欧美一激情一区二区三区| 亚洲激情第一区| 成人精品视频一区| 日韩免费在线观看| 午夜精品久久久久久久久| 99国产精品99久久久久久| 26uuu精品一区二区三区四区在线| 亚洲成人在线观看视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲大型综合色站| 91美女片黄在线观看91美女| 欧美三级在线看| 亚洲人精品午夜| 成人高清视频在线观看| 欧美精品一区二区在线播放| 日韩高清在线电影| 欧美色精品在线视频| 亚洲人成精品久久久久久| 成人国产精品免费观看视频| 欧美国产视频在线| 国产成人午夜高潮毛片| 精品久久国产老人久久综合| 蜜臂av日日欢夜夜爽一区| 欧美日韩国产精品自在自线| 一区二区三区在线播放| 色哟哟一区二区三区| 亚洲婷婷国产精品电影人久久| 不卡的av在线播放| 中文字幕中文字幕一区二区| 不卡电影一区二区三区| 最新久久zyz资源站| 91日韩一区二区三区| 一区二区三区四区精品在线视频 |