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

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

?? i2c.c

?? Keil 8051 C example RS232 to I2c
?? C
字號:
#include <at89x52.H>              // SFR definition header file

#include "SystemEvent.h"
#include "Function.h"
#include "ExtVar.h" 
#include <intrins.h>
 // ********************************************************************************
// Function: i2c_start;                  
// Description:  Sending a start waveform to I2C bus.            				 		    
// Input parameters:   None.
// Output parameters:  None. 
// Return values:      None. 
// ********************************************************************************  
void i2cStart(void){ 

    _sda=1; 
    _sclk=1;
	_nop_();	_nop_();	_nop_();	_nop_();
    _sda=0; 
	_nop_();	_nop_();	_nop_();	_nop_();
 }

// ********************************************************************************
// Function: i2c_stop;                  
// Description:  Sending a stop waveform to I2C bus.           				 		    
// Input parameters:   None.
// Output parameters:  None. 
// Return values:      None. 
// ******************************************************************************** 
void i2cStop(void){
unsigned int _timeOut;
	_timeOut=0;
   _sda=0; 
	_nop_();	_nop_();	_nop_();	_nop_();
 	_sclk=1; 
 
if((_IDCodeOfI2C==0xb8)||(_IDCodeOfI2C==0xba)){
	while((_sclk==0)&&(_timeOut<0x4f00))
	{
		_nop_();
		_timeOut++;	
	}
}
	_sda=1; 	
	_nop_();	_nop_();	_nop_();_nop_();
}

// ********************************************************************************
// Function: i2cTransmit;                  
// Description:  Transmit a byte to the I2C slaver.           				 		    
// Input parameters:   unsigned char valueX: value to transmit.
// Output parameters:  unsigned char i: i=0; Ack from slaver was receved
//                                      i=1; Ack was not receved   
// Return values:      None. 
// ******************************************************************************** 
unsigned char i2cTransmit( unsigned char valueX )
{
unsigned char i;
unsigned int _Timeout;
unsigned char value=valueX;   
	_sda=0;
	_sclk=0; 
	_nop_();	_nop_();	_nop_();	_nop_();
    for (i=0; i<8; i++){ 		
   		_sclk=0;   
		_nop_();	_nop_();	_nop_();	_nop_();
   		if (value & 0x80) _sda=1; 	    
		else   _sda=0; 
		_nop_();	_nop_();	_nop_();	_nop_();
		_sclk=1; 
		_nop_();	_nop_();	_nop_();	_nop_();
		value <<= 1;
    }  
	_sclk=0;  
	_nop_();	_nop_();	_nop_();	_nop_();		
	_sda=1; 
	_nop_();	_nop_();	_nop_();	_nop_();
	_Timeout=0;	 	    
	_sclk=1; 
     while((_sda==1)&&(_Timeout<0x2)){             
               _Timeout++;
 	}
    i=(unsigned char)_sda; 
	_nop_();	_nop_();	_nop_();	_nop_();
   _sclk=0;  
	_nop_();	_nop_();	_nop_();	_nop_();
	return(i);  
} 

// ********************************************************************************
// Function: i2cLocate;                  
// Description:  Transmit ID and sub addr to the I2C slaver.           				 		    
// Input parameters:	unsigned char slave_addr: I2C device slave ID.
//			unsigned char sub_addr: sub address to access of the I2C slaver.
// Output parameters:  	unsigned char i: i=1; Ack from slave was receved
//                                      i=0; Ack was not receved   
// Return values:      None. 
// ******************************************************************************** 
unsigned char i2cLocate( unsigned char slave_addr, unsigned char  sub_addr )
{
     i2cStart();
	if(i2cTransmit(slave_addr)) {     i2cStop(); return(FALSE); }	
    else {	if(i2cTransmit(sub_addr))  {  i2cStop();   return(FALSE);}}
	return(TRUE);   
}

 
// ********************************************************************************
// Function: i2cNotAck;                  
// Description:  Return a "Hight" to I2C slaver   .           				 		    
// Input parameters:   None.
// Output parameters:  None.  
// Return values:      None. 
// ********************************************************************************    
void i2cNotAck( void )
{ 
	_sclk=0;  
	_sda=1;   
	_sclk=1;  
	_sclk=0;  
}
 
 
// ********************************************************************************
// Function: i2cReceive;                  
// Description:  Return 1 byte of data which received from I2C bus. 
// Input parameters:   None.
// Output parameters:  unsigned char value: data been received from I2C bus.  
// Return values:      None. 
// ********************************************************************************  
unsigned char i2cReceive( void )
{
    /*Read ack.*/
    unsigned char     i;
    unsigned char    value;     
	_sclk=0;    
   /*Set value bit by bit...MSB first*/
   value = 0;
   for (i=0; i<8; i++)
   {  
		value <<= 1;
		_sclk=0;   
		if(_sda==1) value|=0x01;
		_sclk=1;  
    } 
	_sclk=0; 
    return(value);
}

// ********************************************************************************
// Function:   i2c_write;                  
// Description: Transmit 1 byte of data to slave end with assigned ID and sub address.            				 		    
// Input parameters:   unsigned char slave_addr:   I2C slave ID of destination chip. 
//                     unsigned char sub_addr:  sub address of destination chip. 
//					   unsigned char _Count: count of data to write 	
//					   unsigned char *_DataX: pointer to the data stream will be tramsitted.
// Output parameters:  None. 
// Return values:      None. 
// ******************************************************************************** 
void i2c_write( unsigned char slave_addr, unsigned char sub_addr,unsigned char _Count,unsigned char *_DataX)
{
  unsigned int _ix;
  i2cStop();               
	if(((slave_addr&0xf0)!=0x20)&&(slave_addr!=0x78)&&((slave_addr&0xf0)!=0x60)){ 
     if (i2cLocate(slave_addr, sub_addr )){               
		for(_ix=0;_ix<(unsigned int)_Count;_ix++) 
			{ i2cTransmit(*(_DataX+(unsigned int)(_ix)));   } 
     } 	
	 i2cStop();
    }
    else {  
		for(_ix=0;_ix<_Count;_ix++) {         
    	 if (i2cLocate(slave_addr, sub_addr+_ix))   i2cTransmit(*(_DataX+_ix));  
		 i2cStop();   
		}  			   	 
	}
}
 
// ********************************************************************************
// Function: i2cAck;                  
// Description:  Return a "Low" to I2C slaver as a acknowledgment.           				 		    
// Input parameters:   None.
// Output parameters:  None.  
// Return values:      None. 
// ********************************************************************************     
void i2cAck( void )
{    //receive state, ack set by master  
 _sclk=0;  	 
 _sda=0;  		     
 _sclk=1; 
 _sclk=0;  
 _sda=1; 
}

// ********************************************************************************
// Function:   i2c_read;                  
// Description: Read data stream from I2C slaver.            				 		    
// Input parameters:		unsigned char slave_addr:   I2C slave ID of destination chip. 
//                     	unsigned char sub_addr:  sub address of destination chip. 
//							   unsigned char _Count: count of data to write 	
//								unsigned char *_DataX: pointer to the data stream will be read.
// Output parameters:  None. 
// Return values:      None. 
// ******************************************************************************** 
void i2c_read( unsigned char slave_addr, unsigned char  sub_addr,unsigned char _Count,unsigned char *_DataX )
{
	unsigned char _ix;
	if(((slave_addr&0xf0)!=0x20)&&(slave_addr!=0x78)&&((slave_addr&0xf0)!=0x60)){
		if (i2cLocate(slave_addr,  sub_addr)) {
      	i2cStart();    
			if(i2cTransmit((unsigned char)(slave_addr | 0x0001))){
				i2cStop();   
	      	return; 
	    	}  
        	for(_ix=0;_ix<_Count;_ix++) { 
		  		*(_DataX+(unsigned int)_ix) = i2cReceive();  	       
	      	if(_ix==(_Count-1))  i2cNotAck();
		  		else i2cAck();	            
	    	} 
	   	i2cStop();
      }
    }
    else { 
		for(_ix=0;_ix<_Count;_ix++) {
      	if (i2cLocate(slave_addr,sub_addr+_ix)){  
				i2cStart(); 
    			if(i2cTransmit(slave_addr|0x0001)){    
					i2cStop();            
					return;	
				}  
      		*(_DataX+(unsigned int)_ix) = i2cReceive(); 
				i2cNotAck();  i2cStop();     
			}	                                  	                                      
      }
 	}
}

 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日产卡一卡二卡麻豆| 欧美国产日产图区| 欧美国产乱子伦| 激情图区综合网| 精品卡一卡二卡三卡四在线| 精品一二三四在线| 日韩欧美国产综合一区| 一区二区三区中文在线| 韩国一区二区视频| 亚洲色图一区二区| 欧美中文字幕一区二区三区亚洲| 一区在线观看免费| 91麻豆精品一区二区三区| 成人欧美一区二区三区1314| 99精品国产99久久久久久白柏| 亚洲视频图片小说| 欧美在线三级电影| 日韩成人免费电影| 国产日韩精品一区二区三区| 成人黄色大片在线观看| 亚洲综合999| 9191国产精品| 午夜私人影院久久久久| 欧美精品一区二区三区蜜臀| 国产乱人伦精品一区二区在线观看 | 午夜精品成人在线| 欧美亚洲禁片免费| 蜜臀av性久久久久蜜臀aⅴ| 欧美成人精品福利| 色天天综合久久久久综合片| 亚洲在线免费播放| 久久久综合精品| caoporen国产精品视频| 欧美午夜精品一区二区蜜桃 | 欧美日精品一区视频| 免费一级片91| 久久精品一区二区三区不卡| 在线免费亚洲电影| 毛片一区二区三区| 精品国产乱码久久久久久影片| 99久久国产综合精品麻豆| 亚洲一区二区三区四区五区中文| 国产亚洲一区二区三区| 色婷婷精品久久二区二区蜜臀av | 欧美视频日韩视频在线观看| 日韩电影在线观看电影| 17c精品麻豆一区二区免费| 91精品国产91热久久久做人人| 成人sese在线| 污片在线观看一区二区 | 国产欧美日产一区| 欧美这里有精品| 成人国产视频在线观看| 午夜久久久久久| 欧美色视频在线观看| 欧美日韩国产123区| 亚洲美女淫视频| 久久免费美女视频| 精品视频999| 色综合久久中文综合久久97 | 久久91精品久久久久久秒播| 中文字幕在线一区免费| 欧美一卡2卡三卡4卡5免费| 久久精品国产免费看久久精品| 亚洲欧美日韩国产手机在线 | 天天操天天干天天综合网| 国产欧美日韩综合| 日韩一区二区三区视频| 欧美日韩黄色一区二区| 成人av电影在线| 成人av在线一区二区三区| 美日韩黄色大片| 美女网站在线免费欧美精品| 一区二区三区免费网站| 国产精品网站在线观看| 2023国产精品自拍| 日韩一级完整毛片| 欧美日韩国产综合视频在线观看| av网站免费线看精品| 韩国女主播成人在线| 日日夜夜免费精品| 午夜精品久久久久久| 一区二区三区四区在线播放 | 最新国产の精品合集bt伙计| 欧美性色综合网| 成人黄色小视频| 国产精品一二三四| 国内精品伊人久久久久av影院 | 精品少妇一区二区三区在线播放| 欧洲另类一二三四区| 91美女视频网站| 91麻豆免费视频| 91视频精品在这里| 99re成人精品视频| 91丨九色丨国产丨porny| 成人免费视频一区| 国产成人免费av在线| 国产精品1区二区.| 国产精品123| 国产精品1区2区3区在线观看| 狠狠色丁香婷综合久久| 久久爱另类一区二区小说| 蜜臀av国产精品久久久久| 奇米综合一区二区三区精品视频| 日日噜噜夜夜狠狠视频欧美人| av在线播放不卡| 成人国产亚洲欧美成人综合网| 夫妻av一区二区| gogogo免费视频观看亚洲一| www.日韩大片| 在线观看日韩一区| 欧美日韩国产高清一区二区| 在线成人免费观看| 日韩欧美不卡在线观看视频| 精品盗摄一区二区三区| 欧美韩日一区二区三区四区| 亚洲少妇30p| 亚洲电影在线播放| 六月丁香婷婷色狠狠久久| 国产精品 欧美精品| 91玉足脚交白嫩脚丫在线播放| 日本韩国一区二区三区视频| 欧美精品久久久久久久多人混战| 日韩精品一区二区三区中文不卡| 国产视频一区不卡| 欧美高清激情brazzers| 99久久99久久精品免费看蜜桃| 一本大道久久a久久精品综合| 欧美日韩一级大片网址| 精品日韩在线观看| 欧美性videosxxxxx| 欧美精品日韩综合在线| 亚洲精品一区二区精华| 自拍偷拍亚洲欧美日韩| 奇米四色…亚洲| 99久久免费精品| 欧美一区二区三级| 一区在线观看视频| 蜜桃视频在线一区| 99久久国产综合色|国产精品| 91免费看`日韩一区二区| 精品日本一线二线三线不卡| 亚洲色图欧美激情| 精一区二区三区| 欧美专区亚洲专区| 精品奇米国产一区二区三区| 欧美激情一区二区三区全黄| 亚洲免费在线观看视频| 国产曰批免费观看久久久| jiyouzz国产精品久久| 日韩视频不卡中文| 国产精品久久久久久久久免费丝袜 | 欧美日韩一区二区三区不卡 | 国产成人在线看| 91精品91久久久中77777| ww亚洲ww在线观看国产| 午夜私人影院久久久久| av电影在线观看一区| 2022国产精品视频| 欧美日韩美少妇| 日韩欧美另类在线| 亚洲大尺度视频在线观看| 成人动漫在线一区| 久久久激情视频| 久久aⅴ国产欧美74aaa| 欧美色精品在线视频| 国产精品久久久久久户外露出| 国模娜娜一区二区三区| 欧美日韩不卡在线| 一区二区三区高清| 成人免费精品视频| 欧美经典一区二区| 激情图区综合网| 精品国产亚洲在线| 另类小说色综合网站| 日韩欧美国产一区二区三区 | 欧美色区777第一页| 一区二区三区四区在线| 波多野结衣中文一区| 国产欧美日韩另类一区| 国产精品一区二区三区四区| 精品免费国产二区三区| 久久99精品久久久| 日韩精品一区二区三区蜜臀 | 奇米四色…亚洲| 欧美一级xxx| 久久99国产精品免费网站| 欧美一卡二卡在线| 国产一区二区在线观看视频| 精品卡一卡二卡三卡四在线| 狠狠色综合播放一区二区| 久久夜色精品国产欧美乱极品| 九九热在线视频观看这里只有精品| 欧美一级片在线看| 麻豆91小视频| 久久精品在线免费观看| youjizz国产精品| 一区二区久久久| 制服丝袜一区二区三区| 久国产精品韩国三级视频|