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

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

?? 24c02.c

?? 24c02通用讀寫程序,比較詳細.內分頁讀寫
?? C
字號:
#include "..\inc\general.H"
/**************/
/*2404*/
/**************/

//#define SDA_24CXX	P36
//#define SCL_24CXX	P37
#define SDA_24CXX	P13
#define SCL_24CXX	P14

#if	0
sbit WP_24CXX=P2^7;
#define  CLR_WP_24CXX	WP_24CXX=0;
#define  SET_WP_24CXX	WP_24CXX=1;
#else
#define  CLR_WP_24CXX	
#define  SET_WP_24CXX	
#endif


uchar EepromType=M2464; //user define eprom type
uchar BYTE_PER_PAGE =M2464P;  //use define  page BYTE
uchar IICdevice_ID=0xa0;
void NAK_24CXX(void )
{
/*
	; Clock out a negative acknowledge bit (high).
	; SCL expected low on entry. Return with SCL low, SDA high.
*/
		SDA_24CXX=1;	//	; NAK bit
		 _nop_ ();  	//		; enforce SCL low and data setup
		 _nop_ ();	//;
		SCL_24CXX=1;//		; raise clock
		_nop_ ();//nop			; enforce SCL high
		_nop_ ();//			;
		_nop_ ();//			;
		SCL_24CXX=0;//		; drop clock
		
}

void ACK_24CXX(void)
{

//	; Clock out an acknowledge bit (low).
//	; SCL expected low on entry. Return with SCL, SDA low.

		SDA_24CXX=0;//		; ACK bit
		_nop_ (); //		//	; enforce SCL low and data setup
		_nop_ (); //		//	;
		SCL_24CXX=1;		//; raise clock
		_nop_ (); //		//	; enforce SCL high
		_nop_ (); //			;
		_nop_ (); //			;
		_nop_ (); //			;
		SCL_24CXX=0;//		; drop clock


}


unsigned char shin_24CXX()
{
unsigned char i,in_data=0;
//	; Shift in a byte from the AT24Cxx, most significant bit first.
//	; SCL expected low on entry. Return with SCL low.
//	; Returns received data byte in A.

		SDA_24CXX=1;//		; make SDA an input

		for (i=0;i<8;i++){
		in_data=in_data<<1;
		_nop_ (); //			; enforce SCL low and data setup
		_nop_ (); //			;
		_nop_ (); //			;
		SCL_24CXX=1;//		; raise clock
		_nop_ (); //			; enforce SCL high
		_nop_ (); //			;
		if(SDA_24CXX)in_data|=0x01;//		; input bit
		
		SCL_24CXX=0;//		; drop clock
	}
	return in_data;
}

bit shout_24CXX(unsigned char out_data)
{
unsigned char i;
	
/*	; Shift out a byte to the AT24Cxx, most significant bit first.
	; SCL, SDA expected low on entry. Return with SCL low.
	; Called with data to send in A.
	; Returns CY set to indicate failure by slave to acknowledge.
	; Destroys A.
*/
for (i=0;i<8;i++){
		if (out_data&0x80)SDA_24CXX=1;//		; move bit into CY
		else SDA_24CXX=0;		//	; output bit
		_nop_ (); //	//		; enforce SCL low and data setup
		SCL_24CXX=1;//		; raise clock
		_nop_ (); //			; enforce SCL high
		_nop_ (); //			;
		_nop_ (); //			;
		_nop_ (); //			;
		SCL_24CXX=0;//		; drop clock
		out_data=out_data<<1;
		}

		SDA_24CXX=1;//		; release SDA for ACK
		_nop_ (); //			; enforce SCL low and tAA
		_nop_ (); //			;
		SCL_24CXX=1;//		; raise ACK clock
		_nop_ (); //			; enforce SCL high
		_nop_ (); //			;
		_nop_ (); //			;
		_nop_ (); //
	
		if(SDA_24CXX){SCL_24CXX=0;return 1;}//		; get ACK bit
		else {SCL_24CXX=0;return 0 ;}
		
		

}		



void stop_24CXX()
{
//	; Send STOP, defined as low-to-high SDA with SCL high.
//	; SCL expected low on entry. Return with SCL, SDA high.

		SDA_24CXX=0;
		_nop_ (); //	//		; enforce SCL low and data setup
		_nop_ (); //
		SCL_24CXX=1;
		_nop_ (); //	//		; enforce setup delay
		_nop_ (); //			;
		_nop_ (); //			;
		_nop_ (); //			;
		_nop_ (); //			;
		SDA_24CXX=1;
		
}

bit start_24CXX()
{/*
	; Send START, defined as high-to-low SDA with SCL high.
	; Return with SCL, SDA low.
	; Returns CY set if bus is not available.
*/
		SDA_24CXX=1;
		SCL_24CXX=1;

		//; Verify bus available.

		if(!SDA_24CXX)return 1; //0	; jump if not high
		if(!SCL_24CXX)return 1; //, x40	; jump if not high

		_nop_ (); //			; enforce setup delay and cycle delay
		SDA_24CXX=0;
		_nop_ (); //			; enforce hold delay
		_nop_ (); //			;
		_nop_ (); //			;
		_nop_ (); //			;
		_nop_ (); //			;
		SCL_24CXX=0;

		return 0;//	; clear error flag
}		



/*********************************
1:error
********************************/
bit read_current_24CXX(unsigned char  *buffer )
{

//	unsigned char R_addr;
/*
	; AT24Cxx Current Address Read function.
	; Called with programmable address in A. Returns data in A.
	; Returns CY set to indicate that the bus is not available
	; or that the addressed device failed to acknowledge.
*/
		if(start_24CXX())return 1;
				// abort if bus not available

		          //; programmable address to bits 3:1

			                   //; specify read operation
		if(shout_24CXX(IICdevice_ID|0x01))
		{stop_24CXX();return 1;}//		; send device address
			//; abort if no acknowledge

		*buffer=shin_24CXX();//		; receive data byte
		
		NAK_24CXX();	      //	; do not acknowledge byte
		stop_24CXX();
		return 0;     //	; clear error flag
}

bit set_epaddr(unsigned int data_addr)
{

		if(start_24CXX())return 1;
		//; abort if bus not available
		;	//; add fixed address
			                   //; specify read operation
		if(shout_24CXX(IICdevice_ID&0xfe))  //write op 
		{stop_24CXX();return 1;}	//; abort if no acknowledge

		if(EepromType>M2416){
		if(shout_24CXX(data_addr/256))
		{stop_24CXX();return 1;}//		; hibyte
		}

		if(shout_24CXX(data_addr%256))
		{stop_24CXX();return 1;}//		; lowaddr 

		return 0;
}

	
bit read_random_24CXX(unsigned int data_addr,unsigned char  *rd_buffer  )
{

/*
	; AT24Cxx Random Read function.
	; Called with programmable address in A, byte address in
	; register pair ADDR_HI:ADDR_LO. Returns data in A.
	; Returns CY set to indicate that the bus is not available
	; or that the addressed device failed to acknowledge.


		; Send dummy write command to set internal address.
*/
		if(set_epaddr(data_addr) )return 1;
		
       	
	    return(read_current_24CXX(rd_buffer));
	
}

bit	read_block_24cxx(unsigned int data_addr,unsigned char * buffer,int count,uchar IICID)
{
		IICdevice_ID=IICID ;
	 	if(set_epaddr(data_addr) )return 1;
		

        if(start_24CXX())return 1;// abort if bus not available
		if(shout_24CXX(IICdevice_ID|READ_OP))
		{stop_24CXX();return 1;}	//; abort if no acknowledge
		do{
			*buffer++=shin_24CXX();//		; receive data byte
			
			if(count==1){
						  NAK_24CXX();
						  break;
						}
			ACK_24CXX();


		  }while(--count!=0);
		
		 stop_24CXX();
		 return 0;
	
}
bit write_byte_24CXX(unsigned int data_addr,unsigned char data_out)
{/*
	; AT24Cxx Byte Write function.
	; Called with programmable address in A, byte address in
	; register pair ADDR_HI:ADDR_LO, data in register XDATA.
	; Does not wait for write cycle to complete.
	; Returns CY set to indicate that the bus is not available
	; or that the addressed device failed to acknowledge.
	; Destroys A.
*/
	 	CLR_WP_24CXX;
		if(start_24CXX())return 1;// abort if bus not available

	      
		if(set_epaddr(data_addr) )return 1;

		if(shout_24CXX(data_out))
		{stop_24CXX();return 1;}//		; abort if no acknowledge
		
		stop_24CXX();
		DelayXms(MEM_BUSY_TIME);
		SET_WP_24CXX;
		return 0;
		
		
}
bit	write_block_24cxx(unsigned int data_addr,unsigned char * buffer,int count)
{

	 	if(set_epaddr(data_addr) )return 1;

        
		do{
			if(shout_24CXX(*buffer++))
			{stop_24CXX();return 1;}//		; abort if no acknowledge


		  }while(--count!=0);
		
		 stop_24CXX();
		 return 0;
	
}

void STORE_CONFIG(void )
{
	
}

bit RESTORE_SHANLING()
{
	 return 1;
}	

void RESTORE_CONFIG()
{
	


}	
	










/**************************************************/
/*
void ReadString(unsigned char data *RamAddress,unsigned char RomAddress,unsigned char Number) 
{
        while(Number!=0) {
                read_random_24CXX(RomAddress,RamAddress);
                RamAddress++;
                RomAddress++;
                Number--;
                
        }
}

void WriteString(unsigned char data *RamAddress,unsigned char RomAddress,unsigned char Number) {
        
        if(Number==0) return;
        
        while(Number!=0) {
                write_byte_24CXX(RomAddress,*RamAddress);
                RamAddress++;
                RomAddress++;
                Number--;
                DelayXms(MEM_BUSY_TIME);
        }
}





              
                  


#define           ST_POS_CONFIG			0x20
void STORE_CONFIG(void )
{
	
	
	write_byte_24CXX(ST_POS_SHANLING ,MY_LOGO);
	DelayXms(MEM_BUSY_TIME);
 	WriteString(&M_Volume,ST_POS_CONFIG,10);
	
	
}
*/

/*
void RESTORE_CONFIG()
{
	
 ReadString(&Volume,ST_POS_CONFIG,10) ;	
	
	
}	
*/	



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品在线观看| 欧美一区二区成人| 99精品热视频| www.激情成人| 色噜噜狠狠色综合中国| 欧美日韩国产在线观看| 欧美美女直播网站| 日韩精品一区二区三区四区| 欧美精品一区二区三区蜜臀 | 26uuu精品一区二区在线观看| 91精品国产综合久久婷婷香蕉 | 国产精品久久久久aaaa樱花| 国产午夜精品一区二区三区嫩草 | 成人99免费视频| 欧美视频日韩视频| 欧美岛国在线观看| 亚洲日本韩国一区| 视频一区欧美精品| 91国偷自产一区二区开放时间 | 国产日韩视频一区二区三区| 亚洲高清视频在线| 精品制服美女久久| 色婷婷综合激情| 久久久久久久久久看片| 亚洲一区自拍偷拍| 成人不卡免费av| 国产精品乱码人人做人人爱| 国产精品久久久久毛片软件| 午夜亚洲福利老司机| 成人天堂资源www在线| 日韩一区二区中文字幕| 亚洲大尺度视频在线观看| 国产精一区二区三区| 精品国产91洋老外米糕| 视频精品一区二区| 一本一道波多野结衣一区二区| 精品久久久久久久人人人人传媒 | 国产资源精品在线观看| 91麻豆精品91久久久久久清纯| 亚洲资源中文字幕| 91久久精品一区二区三| 亚洲综合无码一区二区| 欧美丝袜丝交足nylons图片| 洋洋av久久久久久久一区| 91日韩在线专区| 亚洲一区二区三区四区在线观看| 91网站最新地址| 亚洲综合色在线| 91精品国产91久久久久久最新毛片| 亚洲午夜国产一区99re久久| 欧美综合亚洲图片综合区| 亚洲一区在线观看免费| 91精品国产免费| 国产一区二区按摩在线观看| 国产精品国产三级国产a| 欧美亚洲动漫另类| 日韩av中文在线观看| 久久亚洲二区三区| 99这里都是精品| 奇米色777欧美一区二区| 精品精品欲导航| av在线不卡网| 免费成人深夜小野草| 中文字幕一区二区视频| 欧美日韩国产三级| av激情亚洲男人天堂| 蜜桃视频在线一区| 亚洲图片欧美一区| 中文字幕制服丝袜一区二区三区| 欧美日韩精品专区| 99久久99久久久精品齐齐| 亚洲成人av免费| 亚洲人精品一区| 国产三区在线成人av| 91精品国产91热久久久做人人| 91在线看国产| av毛片久久久久**hd| 成人性色生活片免费看爆迷你毛片| 日韩高清不卡在线| 亚洲电影一级黄| 亚洲一二三四在线| 亚洲高清免费观看高清完整版在线观看 | 成人av一区二区三区| 国产传媒日韩欧美成人| 国产乱码精品一区二区三区av| 免费亚洲电影在线| 久久爱www久久做| 国产一区中文字幕| 国产真实乱子伦精品视频| 国产米奇在线777精品观看| 国产自产2019最新不卡| 92国产精品观看| 免费高清在线视频一区·| 国产亚洲欧美一级| 欧美激情一区二区三区不卡| 欧美高清一级片在线观看| 欧美经典一区二区三区| 国产精品视频免费看| 亚洲精品视频免费观看| 日韩av电影一区| 国产精品99久久久久久有的能看 | 95精品视频在线| 欧美三级午夜理伦三级中视频| 91精品国产高清一区二区三区蜜臀 | 欧美伊人久久大香线蕉综合69 | 美日韩一区二区| 成人激情动漫在线观看| 欧美男男青年gay1069videost| 精品国产露脸精彩对白| 亚洲你懂的在线视频| 精品在线一区二区三区| 色94色欧美sute亚洲线路一久 | 日本va欧美va精品| 99国产欧美另类久久久精品| 欧美乱妇20p| 亚洲人精品午夜| 国产一区999| 日韩欧美不卡在线观看视频| 亚洲欧美激情插| 成人午夜在线免费| 精品国产3级a| 麻豆视频观看网址久久| 欧美三级视频在线| 亚洲欧美电影院| 91啪亚洲精品| 亚洲欧洲精品天堂一级| 国产suv精品一区二区883| 日韩免费电影网站| 麻豆精品久久精品色综合| 欧美日韩精品一区视频| 亚洲国产精品一区二区www | 亚洲欧洲性图库| av成人动漫在线观看| 成人欧美一区二区三区1314| 国产精品亚洲一区二区三区妖精| 精品理论电影在线| 国产精品一卡二| 国产精品国模大尺度视频| 99久久伊人久久99| 亚洲一区二区av在线| 欧美伦理电影网| 国产乱子伦一区二区三区国色天香| 精品精品国产高清a毛片牛牛 | 精品电影一区二区| 国产成人精品免费视频网站| 国产人成亚洲第一网站在线播放| 成人aa视频在线观看| 亚洲成人激情自拍| 26uuu色噜噜精品一区二区| 成人激情黄色小说| 天堂一区二区在线| 欧美国产精品一区二区三区| 91美女片黄在线观看91美女| 亚洲一区二区三区免费视频| 精品免费视频.| 欧美性受xxxx| 99视频超级精品| 免费成人av资源网| 日韩美女久久久| 欧美不卡123| 欧美精品高清视频| 91一区二区在线| 国产伦理精品不卡| 午夜精品成人在线视频| 最新不卡av在线| 久久午夜羞羞影院免费观看| 欧美视频一区在线| 在线视频欧美区| 一本大道久久a久久精二百| 国内精品在线播放| 久久91精品久久久久久秒播| 亚洲国产精品欧美一二99| 亚洲图片另类小说| 一区二区三区自拍| 自拍偷拍亚洲综合| 成人欧美一区二区三区白人| 国产精品美女久久久久高潮| 久久精品欧美一区二区三区麻豆| 精品欧美乱码久久久久久1区2区 | 亚洲h精品动漫在线观看| 一区二区三区四区五区视频在线观看 | 精品国产伦一区二区三区观看方式 | 欧美日韩欧美一区二区| 7777精品伊人久久久大香线蕉的 | 亚洲精品美腿丝袜| 亚洲成人精品一区二区| 一区二区三区高清不卡| 亚洲成人精品影院| 国产一区高清在线| www.66久久| 7777精品伊人久久久大香线蕉超级流畅| 欧美在线影院一区二区| 日韩欧美中文字幕精品| 国产欧美日本一区二区三区| 悠悠色在线精品| 久久国产婷婷国产香蕉| 成人av网站在线| 69堂成人精品免费视频| 日本一区二区三区高清不卡| 亚洲综合久久av|