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

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

?? i2c.c

?? 這個是汽車制動臺控制程序的C語言版本. 用于實際產品中.單片機用的是PIC16F877A.
?? C
字號:
#include <pic.h>
#include "total.h"	

/******************************************************************************************
* 函數名稱: void Check_Idle(void)
* 功能: 檢測總線是否處于空閑狀態
* 入口參數: 無
* 出口參數: 無
* 全局變量: 無
* 調用模塊: 無
* 設計者: 饒陽勝
* 日期: 05/3/1
******************************************************************************************/
void CheckIdle(void)
{
	while(STAT_RW != 0);	//總線正在向外發送數據
	while((SSPCON2 & 0x1F)!= 0);
}

/*****************************************************************************************
* 函數名稱: 	void WrtAckTest(void)
* 功能:		檢測器件的應答信號
* 入口參數: 	無
* 出口參數: 	無
* 全局變量: 	無
* 調用模塊: 	無
* 設計者: 	饒陽勝
* 日期:		05-3-1
*****************************************************************************************/
void WrtAckTest(void)
{
	SSPIF = 0;
	while(SSPIF == 0);	//等待總線應答信號
}

/******************************************************************************************
* 函數名稱: 	void I2C_Write_Byte(unsigned char Devive_Address,unsigned char address,unsigned char data)
* 功能: 		向EEPROM中寫入一個字節的數據
* 入口參數: 	address,(要寫入EEPROM的地址) data(要寫入的數據) Device_Address 器件地址
* 出口參數: 	無
* 全局變量:
* 調用模塊: 
* 設計者: 	饒陽勝
* 日期: 		05-3-1
******************************************************************************************/
void I2C_Write_Byte(unsigned char Device_Address,unsigned char Address,unsigned char Data)
{
	CheckIdle();				//查詢總線狀態,是否空閑
	SEN = 1;					//向總線發出起始信號
	while(SSPIF == 0);			//等待總線的應答信號
	SSPBUF = Device_Address;	//向總線發出器件地址
	WrtAckTest();				//查詢應答信號
	while(STAT_BF == 1);
	SSPBUF = Address;			//向總線發出要寫入的數據存放地址
	WrtAckTest();				//查詢應答信號
	while(STAT_BF == 1);
	SSPBUF = Data;				//向總線寫入數據
	WrtAckTest();				//查詢應答信號
	SSPIF = 0;
	PEN = 1;					//向總線發出停止信號
	while(SSPIF == 0);
	SSPIF = 0;					//清除總線中斷標志	
	Delay(16,250);				//延時,讓寫操作完成
}

/*******************************************************************************************
* 函數名稱: 	unsigned char I2C_Read_Byte(unsigned char Device_Address,unsigned char Address)
* 功能: 		從EEPROM中讀出一個字節的數據
* 入口參數: 	Device_Address(器件地址),Address(數據在EEPROM中的存放地址)
* 出口參數: 	Data(	讀出的數據)
* 全局變量:
* 調用模塊: 
* 設計者: 	饒陽勝
* 日期: 		05-3-2
********************************************************************************************/
unsigned char I2C_Read_Byte(unsigned char Device_Address,unsigned char Address)
{
	unsigned char Recieve;

	CheckIdle();
	SSPIF = 0;
	SEN = 1;
	while(SSPIF == 0);
	SSPBUF = Device_Address;		//向總線發送器件地址
	WrtAckTest();					//等待總線的應答信號
	SSPBUF = Address;				//向總線發出數據在EEPROM中的存儲地址
	WrtAckTest();					//等待總線的應答信號
	Delay(16,250);	
	CheckIdle();					//等待總線處于空閑狀態
	SSPIF = 0;						//清除總線的中斷標志
	RSEN = 1;						//發出重啟動信號
	while(SSPIF == 0);				//等待總線中斷信號,重啟動完成
	SSPBUF = (Device_Address + 1);	//發出器件地址(+1)表示讀操作
	WrtAckTest();					//等總線的應答信號
	SSPIF = 0;						//清總線中斷標志
	RCEN = 1;						//使能接收
	SSPIF = 0;
	while(SSPIF == 0);
	Recieve = SSPBUF;				//存放接收到的數據
	SSPIF = 0;						//清除總線的中斷標志
	ACKDT = 1;						//向總線發出應答信號
	ACKEN = 1;
	while(SSPIF == 0);
	PEN = 1;
	while(SSPIF == 0);
	SSPIF = 0;
	return(Recieve);
}
	
/******************************************************************************************
* 函數名稱: 	unsigned char MyWrite(unsigned char *Data,unsigned char Number,
*														unsigned char Address)
* 功能: 		向EEPROM中寫入標定數據
* 入口參數: 	*Data(指向要寫入EEPROM的數據的指針) Number(要寫入的數據個數)
*		   	Address(數據在EEPROM中的存放地址)
* 出口參數: 	unsigned char(0: 寫入不成功, 1: 寫入成功)
* 全局變量: 
* 調用模塊: 	I2C_Write_Byte(向EEPROM中寫入一個字節的數據)
* 設計者: 	饒陽勝
* 日期: 		05/3/4
* 說明: 		數據在EEPROM中的存儲格式為:以字節的形式
*      		而數據在RAM中的存儲形式為unsigned short(半字形式),所以要進行轉換
******************************************************************************************/
unsigned char My_Write(bank1 short *data,unsigned char number,unsigned char address)
{
	static bit change;			//用于將RAM中以半字形式存儲的數據拆成在便于在EEPROM中存儲的字節形式
	unsigned char writedata;	//要寫入EEPROM中的數據變量

	change = 0;

	for(;number > 0; number--){		//向EEPROM中寫入數據循環
		do{	
			if(change == 0){
				writedata = (unsigned char)(*data & 0xFF);	//得到低字節數據	
				change = 1;
			}else{
				writedata = (unsigned char)(*data >> 8);	//得到高字節數據
				change = 0;		
			}	
			I2C_Write_Byte(0xA0,address,writedata);		//向EEPROM寫數據
			++address;									//數據在EEPROM中的存放地址加1
		}while(change == 1);
		++data;		//指向下一個數據
	}	
	return(1);
}

/****************************************************************************************
* 函數名稱: 	unsigned char MyRead(unsigned short *Data,unsigned char Number,
*										unsigned char Address)
* 功能: 		將EEPROM中的數據讀出到RAM中
* 入口參數: 	unsigned short *Data(指向讀出數據存放到RAM中的地址指針)
*		   	unsigned char Number 要讀出的數據個數
*		   	unsigned char Address 數據在EEPROM中的存放地址
* 出口參數: 	unsigned char(0: 讀出不成功,1:讀出成功)
* 全局變量:
* 調用模塊: 	unsigned char I2C_Read_Byte(unsigned char Device_Address,unsigned char Address)
*           從EEPROM中讀出一個字節數據的函數
* 設計者: 	饒陽勝
* 日期: 		05/3/5
* 說明: 		每次從EEPROM中讀出的數據是一個字節,而讀出的數據在EEPROM中的存儲形式是半字形式,所以要進行轉換
****************************************************************************************/
unsigned char My_Read(bank1 short *data,unsigned char number,unsigned char address)
{
	static bit change;		//用于將讀出的數據合成一個半字形式
	unsigned char readdata;	//從EEPROM中的讀出的數據變量

	change = 0;

	for(;number > 0; number--){		//從EEPROM中讀出數據的循環
		do{
			readdata = I2C_Read_Byte(0xA0,address);	//從EEPROM中讀取數據
			++address;								//EEPROM地址加1
			if(change == 0){
				*data = readdata;					//存儲低字節
				change = 1;
			}else{
				*data = (readdata << 8) | (*data & 0xff);	//存儲高字節
				change = 0;
			}
		}while(change == 1);
		++data;						//指向一個字節
	}
	return(1);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃精品视频在线| 亚洲一区二区三区在线| 精品制服美女久久| 欧美mv日韩mv亚洲| 国产精品一区2区| 中文字幕久久午夜不卡| eeuss鲁片一区二区三区| 亚洲成人1区2区| 蜜桃久久久久久| 在线视频国内一区二区| 亚洲最大的成人av| 欧美日韩一区二区三区四区 | 欧美视频日韩视频| 日韩中文欧美在线| 久久综合久久综合九色| 欧美日韩另类国产亚洲欧美一级| 亚洲狠狠爱一区二区三区| 91精品国产欧美日韩| 国产一区亚洲一区| 国产精品女主播av| 欧美日韩在线一区二区| 狠狠色狠狠色综合系列| **欧美大码日韩| 欧美精品123区| 成人综合在线网站| 视频一区二区欧美| 国产精品污网站| 欧美一区二区三区四区高清| 国产91丝袜在线18| 日韩不卡一二三区| 亚洲国产精品av| 6080日韩午夜伦伦午夜伦| 国产成人精品一区二| 亚洲电影视频在线| 国产欧美日韩激情| 欧美一区二区三区免费观看视频| 国产精品一级在线| 日本中文字幕一区二区有限公司| 国产精品美女久久久久久久久久久 | 丁香网亚洲国际| 五月天激情小说综合| 中文字幕乱码亚洲精品一区| 5858s免费视频成人| av电影天堂一区二区在线| 日本女优在线视频一区二区| √…a在线天堂一区| 久久免费美女视频| 欧美一区二区三区思思人| 99精品欧美一区二区蜜桃免费| 日韩一区精品视频| 亚洲综合在线观看视频| 欧美经典一区二区| 精品久久国产字幕高潮| 欧美精品xxxxbbbb| 欧美午夜电影一区| 91蜜桃婷婷狠狠久久综合9色| 国产精品香蕉一区二区三区| 欧美aa在线视频| 香蕉成人伊视频在线观看| 亚洲男人的天堂一区二区| 久久精品一区二区三区四区| 日韩欧美国产高清| 欧美精品久久99久久在免费线| 一本一道综合狠狠老| 成人国产精品免费观看动漫| 国产一区二区三区四区五区入口 | 日韩精品一区二区三区swag| 欧美三级乱人伦电影| 91美女蜜桃在线| 久久久777精品电影网影网| 欧美一区二区视频网站| 欧美无砖专区一中文字| 色激情天天射综合网| 色综合久久久久久久| 99热99精品| 99精品偷自拍| 色婷婷亚洲精品| 91福利在线导航| 在线免费一区三区| 欧美午夜精品久久久久久超碰| 在线免费观看日本一区| 在线视频国内一区二区| 欧美性xxxxxxxx| 欧美区一区二区三区| 欧美裸体bbwbbwbbw| 欧美一区二区大片| 日韩写真欧美这视频| 精品美女在线播放| 久久精品亚洲精品国产欧美kt∨| 国产日韩欧美一区二区三区乱码| 久久久精品欧美丰满| 国产精品国产三级国产| 尤物av一区二区| 午夜av区久久| 激情亚洲综合在线| 岛国精品在线观看| 色综合视频一区二区三区高清| 欧洲亚洲国产日韩| 日韩免费高清av| 日本一二三不卡| 亚洲午夜国产一区99re久久| 午夜精彩视频在线观看不卡| 精品一区二区综合| 成人免费观看视频| 欧美羞羞免费网站| 精品国产亚洲在线| 亚洲欧美一区二区视频| 亚洲成人动漫在线免费观看| 日本午夜精品一区二区三区电影| 久久99久久久久| 91免费看视频| 日韩无一区二区| 国产精品乱码妇女bbbb| 亚洲图片欧美综合| 国产一区二区三区在线观看免费 | 天天影视网天天综合色在线播放| 麻豆久久一区二区| 99热精品国产| 日韩欧美国产系列| 亚洲老司机在线| 另类人妖一区二区av| 成人短视频下载| 91精品国产综合久久国产大片 | 99精品国产视频| 日韩欧美二区三区| 亚洲嫩草精品久久| 狠狠色丁香婷综合久久| 日本精品一区二区三区四区的功能| 欧美一区二区免费视频| 中文字幕一区二区三区不卡| 久久99热99| 欧美裸体一区二区三区| 国产精品久线观看视频| 久久不见久久见中文字幕免费| 91成人看片片| 国产精品久久三| 免费成人在线观看视频| 欧美中文字幕一二三区视频| 国产视频一区二区在线观看| 日韩电影免费在线观看网站| av电影在线观看一区| 精品日韩在线一区| 日韩精品亚洲专区| 色综合天天综合网天天狠天天 | 国产精品电影一区二区三区| 美日韩黄色大片| 欧美日韩一二三区| 亚洲理论在线观看| 成人aa视频在线观看| 久久久99精品久久| 黄页网站大全一区二区| 777午夜精品免费视频| 亚洲欧美在线aaa| 成人白浆超碰人人人人| 国产丝袜欧美中文另类| 久久国产福利国产秒拍| 欧美一区二区三区婷婷月色| 一区二区三区不卡在线观看 | 在线观看国产精品网站| 日韩一区在线播放| 懂色av噜噜一区二区三区av| 精品久久久久久亚洲综合网| 免费观看91视频大全| 7777精品伊人久久久大香线蕉| 亚洲综合色区另类av| 91在线视频免费91| 亚洲人成网站精品片在线观看| 国产宾馆实践打屁股91| 国产欧美日韩另类视频免费观看| 激情六月婷婷久久| 久久久欧美精品sm网站| 国产一区三区三区| 日本一二三不卡| www.久久久久久久久| 中文字幕一区二区视频| 不卡一区二区在线| 亚洲男同性视频| 欧美三级在线视频| 日韩电影在线观看网站| 日韩亚洲欧美成人一区| 国产一区二区三区香蕉| 欧美激情一区二区在线| 色伊人久久综合中文字幕| 亚洲手机成人高清视频| 欧美三级视频在线播放| 天堂蜜桃一区二区三区 | 国产suv精品一区二区883| 国产欧美一区二区在线| www.日本不卡| 亚洲一区二区三区中文字幕| 在线播放91灌醉迷j高跟美女 | 精品一区二区三区的国产在线播放| 日韩女优av电影| 成人福利电影精品一区二区在线观看| 自拍偷拍亚洲综合| 欧美精品三级日韩久久| 国产一区二区伦理片| 综合分类小说区另类春色亚洲小说欧美| 在线影视一区二区三区| 奇米影视7777精品一区二区|