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

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

?? 24c02.c

?? 基于iic總線的eeprom at24c02的讀寫程序
?? C
字號:
/*====================================
下為此程序的說明
功能:I2C總線驅(qū)動 
版本:Ver 1.0
日期:2007年
說明:由楊德富編寫,在硬件(24C04)上通過。但是在PROTEUS中不通過。
====================================*/

#define uint unsigned int
#define uchar unsigned char
#include<reg52.h>
#include<intrins.h>
#include<absacc.h>
#define uchar unsigned char 
#define uint unsigned int

#define NOP _nop_(); _nop_(); _nop_()
//定義數(shù)碼管的段選
uchar code tab[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//全局變量的定義

//uchar Step = 50;
bit ack;  //應(yīng)答信號檢測
//位操作定義
sbit SDA = P1^0;  
sbit SCL = P1^1;   //24C04的操作線


/*====================================
非關(guān)鍵函數(shù)申明
====================================*/
void Initial(void);                     //系統(tǒng)初始化
void Delay(uint n);          //普通延時
void Disp(uchar num);    //顯示數(shù)據(jù)


/*====================================
24C04函數(shù)申明
====================================*/void Start_I2C(void);                      
void Stop_I2C(void);
void  SendByte(uchar fdata);             /*24C04子函數(shù)*/
uchar  RecByte(void);
void Ack_I2C(bit a);
bit SendStr(uchar Slave, uchar SubAddress, uchar *Source, uchar Num);
bit RecStr(uchar Slave, uchar SubAddress, uchar *Source, uchar Num);

/*====================================
函數(shù)功能:主函數(shù)
入口參數(shù):
 說  明 :
=====================================*/
main()
{
 uchar Rec_data[2];
 uchar Sen_data[2]={1,4};
 uchar *ptr;
 ptr = Sen_data;
 Initial();    //初始化
 SendStr(0xa0, 0x20,ptr,2);   /*24C04的20H*/
 Delay(100);
 Delay(100);
 ptr=Rec_data;
 RecStr(0xa1,0x20,ptr,2);
 while(1)
	{
		P2=tab[Rec_data[0]];
	}
}

//初始化
void initial(void)
{
 P1=0xff;
 P0=0xff;
 P2=0xff;
 P3=0xff;
}
//////////////////////////////////////
void Delay(uint n) //延時主函數(shù)
{
 uchar i,k;
 for(k=0;k<n;k++)
   {
	 for(i=0;i<200;i++);
	}
}

/*************************************************************************************

                          對24C04進(jìn)行讀寫操作子函數(shù)                   

*************************************************************************************/
/*******************************************************************
void  Start_I2C();  
啟動I2C總線,即發(fā)送I2C起始條件。
********************************************************************/
void Start_I2C()
{
	SDA = 1;   /*發(fā)送起始條件的數(shù)據(jù)信號*/
	_nop_();
	SCL = 1;
	_nop_();		/*	起始條件建立時間大于4us,延時	*/
	_nop_();
	_nop_();
	_nop_();
	_nop_();    
	SDA = 0;		/*	發(fā)送起始信號	*/
	_nop_();		/*	起始條件鎖定時間大于4 us	*/
	_nop_();
	_nop_();
	_nop_();
	_nop_();       
	SCL = 0;		/*	準(zhǔn)備發(fā)送或接收數(shù)據(jù)	*/
	_nop_();
	_nop_();
}

/*******************************************************************
void  Stop_I2C();  
結(jié)束I2C總線,即發(fā)送I2C結(jié)束條件。
********************************************************************/
void Stop_I2C()
{
	SDA = 0;		/*	發(fā)送結(jié)束條件的數(shù)據(jù)信號	*/
	_nop_();		/*	發(fā)送結(jié)束條件的時鐘信號	*/
	SCL = 1;		/*	結(jié)束條件建立時間大于4 us	*/
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	_nop_();
	SDA = 1;		/*	發(fā)送I2C總線結(jié)束信號	*/
	_nop_();
	_nop_();
	_nop_();
	_nop_();
}

/*******************************************************************
void  SendByte(uchar data);
將數(shù)據(jù)data發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,并對此狀態(tài)
位進(jìn)行操作。(不應(yīng)答或非應(yīng)答都使ack = 0) 發(fā)送數(shù)據(jù)正常,ack=1;ack=0
表示接收器無應(yīng)答或損壞。
********************************************************************/
void  SendByte(uchar fdata)
{
	uchar BitCount;
	ack=0;
	for(BitCount = 0; BitCount < 8; BitCount ++)  /*	要傳送的數(shù)據(jù)長度為8位	*/
	{
		if((fdata << BitCount) & 0x80) SDA = 1;   /*	判斷發(fā)送位	*/
		else  SDA = 0;                
		_nop_();
		SCL = 1;					/*	置時鐘線為高,通知被控器開始接收數(shù)據(jù)位	*/
		_nop_(); 
		_nop_();					/*	保證時鐘高電平周期大于4 us	*/
		_nop_();
		_nop_();
		_nop_();
		SCL = 0; 
	}
	_nop_();
	_nop_();
	SDA = 0;					/*	8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位*/
	SCL=0;
	_nop_();
	_nop_();   
	SCL=1;
	_nop_();
	_nop_();
	_nop_();
	NOP;
	if(SDA == 1) ack = 0;     		/* 無應(yīng)答信號 */
	else ack = 1;					/*	判斷是否接收到應(yīng)答信號*/
	ack=1;
	SCL=0;
	_nop_();
	_nop_();
}

/*******************************************************************
uchar  RecByte();
功能:
用來接收從器件傳來的數(shù)據(jù),并判斷總線錯誤(不發(fā)應(yīng)答信號),發(fā)完后請用
應(yīng)答函數(shù)。  
********************************************************************/	
uchar  RecByte()
{
	uchar RecData;
	uchar BitCount;

	RecData = 0; 
	SDA = 1;				/*	置數(shù)據(jù)線為輸入方式	*/
	for(BitCount = 0; BitCount < 8; BitCount ++)
	{
		_nop_(); 
		SCL=0;			/*	置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)位	*/
		_nop_();
		_nop_();			/*	時鐘低電平周期大于4.7us	*/
		_nop_();
		_nop_();
		_nop_();
		SCL= 1;			/*	置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效	*/
		_nop_();
		_nop_();

		if(SDA==1) RecData = RecData +1;	/*	讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中	*/
		RecData = RecData << 1;
		_nop_();
		_nop_(); 
	}
	SCL= 0;    
	_nop_();
	_nop_();
	return(RecData);
}

/********************************************************************
void Ack_I2C(bit a);
主控器進(jìn)行應(yīng)答信號,,(可以是應(yīng)答或非應(yīng)答信號)
/********************************************************************/
void Ack_I2C(bit a)
{
	if(a == 0) SDA = 0;		/*	在此發(fā)出應(yīng)答或非應(yīng)答信號	*/
	else SDA=1;
	_nop_();
	_nop_();
	_nop_();      
	SCL = 1;
	_nop_();
	_nop_();				/*	時鐘低電平周期大于4us	*/
	_nop_();
	_nop_();
	_nop_();  
	SCL = 0;				/*	清除時鐘線,以便繼續(xù)接收	*/
	_nop_();
	_nop_();    
}
/*******************************************************************
bit  SendStr(uchar Slave, uchar SubAddress, uchar *Source, uchar Num);  
從啟動總線到發(fā)送地址,子地址,數(shù)據(jù),結(jié)束總線的過程。
Slave--從器件地址
SubAddress--子地址
Source--指向發(fā)送內(nèi)容的指針
Num--發(fā)送字節(jié)個數(shù)
返回值:
如果返回1表示操作成功,否則操作有誤。
********************************************************************/
bit SendStr(uchar Slave, uchar SubAddress, uchar *Source, uchar Num)
{
	uchar i;
	Start_I2C();			/*	啟動總線	*/
	SendByte(Slave);		/*	發(fā)送器件地址	*/
	if(ack == 0) return(0);
	SendByte(SubAddress);			/*	發(fā)送器件子地址	*/
	if(ack == 0) return(0);

	for(i = 0; i < Num; i++)
	{   
		SendByte(*Source);			/*	發(fā)送數(shù)據(jù)	*/
		if(ack == 0) return(0);
		Source ++;
	} 
	Stop_I2C();					/*	結(jié)束總線	*/ 
	return(1);
}
/*******************************************************************
bit  RecStr(BYTE Slave, BYTE SubAddress, BYTE *Source, BYTE Num);  
從啟動總線到發(fā)送地址,子地址,讀數(shù)據(jù),結(jié)束總線的過程。
參數(shù):
Slave--從器件地址。
SubAddress--子地址
Source--指向讀出的內(nèi)容放入的存儲區(qū)的指針
Num--讀字節(jié)個數(shù)。
返回值:	
如果返回1表示操作成功,否則操作有誤。
********************************************************************/
bit RecStr(uchar Slave, uchar SubAddress, uchar *Source, uchar Num)
{
	uchar i;
	Start_I2C();					/*	啟動總線	*/
	SendByte(Slave-1);				/*	發(fā)送器件地址	*/
	if(ack == 0) return(0);
	SendByte(SubAddress);			/*	發(fā)送器件子地址	*/
	if(ack == 0) return(0);

	Start_I2C();
	SendByte(Slave);
	if(ack == 0) return(0);

	for(i = 0; i < Num-1; i++)
	{   
		*Source = RecByte();			/*	接收數(shù)據(jù)	*/
		Ack_I2C(0);				/*	發(fā)送就答位	*/  
		Source++;
	} 
	*Source =RecByte();
	Ack_I2C(1);					/*	發(fā)送非應(yīng)位	*/
	Stop_I2C();					/*	結(jié)束總線	*/ 
	return(1);
}
/*****************************************************************************
--------------------------------程序結(jié)束-------------------------------------
*****************************************************************************/

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类中文字幕网| 欧美成人精精品一区二区频| 国产亚洲综合av| 国产精品系列在线播放| 国产亚洲午夜高清国产拍精品| 国产成人精品综合在线观看 | 久久久久久免费网| 成人av电影观看| 日韩美女精品在线| 欧美色图一区二区三区| 亚洲午夜久久久久久久久电影院| 3d动漫精品啪啪1区2区免费| 国内成+人亚洲+欧美+综合在线| 国产日产欧美一区二区视频| av午夜精品一区二区三区| 有码一区二区三区| 日韩欧美国产精品| 成人网页在线观看| 午夜精品福利一区二区蜜股av| 日韩一区二区精品葵司在线| 成人一区二区三区在线观看| 一区二区三区中文字幕在线观看| 91.com视频| 懂色av中文一区二区三区 | 正在播放亚洲一区| 国产一区二区免费看| 亚洲欧美一区二区在线观看| 91麻豆精品国产91久久久资源速度 | 欧美高清www午色夜在线视频| 久久er99精品| 亚洲黄色尤物视频| 精品少妇一区二区| 色婷婷综合久久久久中文一区二区| 天天综合网天天综合色| 国产精品视频一二三| 欧美日韩欧美一区二区| 国产成人精品影视| 亚洲成人激情综合网| 国产亚洲综合在线| 91精品蜜臀在线一区尤物| 成人福利视频网站| 麻豆91精品视频| 亚洲一区二区视频在线观看| 久久精品亚洲国产奇米99| 欧美三级在线看| 成人av在线播放网站| 美女在线一区二区| 一区二区日韩电影| 日本一区二区三区dvd视频在线| 欧美日韩久久久| 91啪亚洲精品| 国产不卡一区视频| 久久99日本精品| 天天影视网天天综合色在线播放| 中文字幕一区二区不卡| 久久久久久久综合色一本| 91精品婷婷国产综合久久竹菊| 日本精品视频一区二区三区| 国产成a人亚洲精| 国产一区二区主播在线| 日本一道高清亚洲日美韩| 亚洲一级二级三级在线免费观看| 国产精品污污网站在线观看| 久久影院视频免费| 精品少妇一区二区三区| 欧美不卡一区二区三区| 日韩一级黄色大片| 7777精品伊人久久久大香线蕉最新版| 91精彩视频在线| 一本大道久久a久久综合| 成人18视频日本| av不卡在线播放| 91在线视频在线| 99精品视频一区二区| 99这里只有久久精品视频| 成人h动漫精品| 成人午夜短视频| www.久久久久久久久| 成人综合婷婷国产精品久久| 国产iv一区二区三区| 国产成都精品91一区二区三| 风间由美性色一区二区三区| 高清国产一区二区| caoporen国产精品视频| 91在线国内视频| 在线视频你懂得一区| 欧美三级日韩三级| 在线综合+亚洲+欧美中文字幕| 日韩亚洲欧美高清| 久久蜜臀精品av| 日本一区二区成人在线| 国产精品青草久久| 亚洲欧美另类久久久精品2019| 亚洲精品国久久99热| 午夜精品成人在线| 国产一区二区在线看| 成人丝袜高跟foot| 在线日韩一区二区| 欧美精品久久天天躁| 精品久久久久久综合日本欧美| 久久久精品tv| 亚洲欧美另类小说| 免费人成精品欧美精品| 国产jizzjizz一区二区| 在线亚洲+欧美+日本专区| 欧美一区二区三区思思人| 久久久美女艺术照精彩视频福利播放| 国产精品女同一区二区三区| 亚洲一二三级电影| 九色综合国产一区二区三区| 成人av动漫网站| 91精品国产综合久久久蜜臀图片 | 欧美一区二区在线播放| 精品区一区二区| 亚洲人成7777| 免费的国产精品| 99r精品视频| 欧美一区二区三区四区五区| 国产精品久久精品日日| 日韩国产成人精品| 成人av网站在线| 欧美精品v国产精品v日韩精品 | 91免费精品国自产拍在线不卡| 欧美日韩国产电影| 国产精品视频一二三区| 美女在线视频一区| 欧美亚洲国产一区二区三区va | 99久久久国产精品免费蜜臀| 3d动漫精品啪啪| 亚洲精品一二三| 国产精品12区| 日韩一区二区三区在线观看| 亚洲久草在线视频| 粉嫩av一区二区三区粉嫩| 制服丝袜国产精品| 亚洲精品一卡二卡| 成人h动漫精品| 国产午夜精品一区二区三区嫩草 | 蜜桃一区二区三区在线| 色综合久久天天综合网| 国产欧美在线观看一区| 久久精品久久久精品美女| 91久久国产最好的精华液| 国产精品卡一卡二卡三| 国内精品久久久久影院薰衣草| 这里只有精品免费| 亚洲国产婷婷综合在线精品| 99精品在线观看视频| 久久人人爽人人爽| 麻豆精品视频在线观看| 欧美老女人在线| 亚洲国产中文字幕| 欧美日韩一区精品| 一区二区在线观看视频| 91丝袜呻吟高潮美腿白嫩在线观看| 久久久久99精品一区| 韩国女主播一区| 精品电影一区二区| 精品一区二区精品| 精品国产a毛片| 狠狠狠色丁香婷婷综合激情| 日韩一区二区在线观看视频| 麻豆极品一区二区三区| 日韩精品中午字幕| 麻豆精品视频在线| 精品国产91亚洲一区二区三区婷婷| 青青草伊人久久| 日韩美女一区二区三区四区| 日本欧美在线观看| 精品国产乱码久久久久久久久| 精品在线播放免费| 久久久久久久久久久久久女国产乱| 狠狠色综合日日| 日本一区二区在线不卡| www.99精品| 亚洲一区在线视频观看| 欧美美女一区二区三区| 日本免费新一区视频| 精品国内二区三区| 国产精品亚洲综合一区在线观看| 国产三级精品视频| 9色porny自拍视频一区二区| 亚洲黄色尤物视频| 69久久99精品久久久久婷婷| 久久国产综合精品| 久久久精品一品道一区| 91视频免费播放| 午夜精品在线视频一区| 欧美成人女星排名| 国产二区国产一区在线观看| 亚洲欧美在线高清| 欧美日韩国产电影| 精品中文字幕一区二区| 中文字幕一区二区三区视频| 欧美性一级生活| 国产一区二区在线免费观看| 亚洲欧洲综合另类| 日韩一区二区在线免费观看| 成人av免费在线播放| 视频一区在线播放|