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

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

?? main.c

?? Catalyst Semiconductor的cat24c256存儲芯片例程
?? C
字號:

#include <msp430x14x.h>


//5.4接a2 a1 a0 and vcc腳 1.7接wp腳,高為寫保護
#define CAT24C256   0xAE                       //定義cat24c256的寫地址 
#define TMP100  0x90                       //定義從器件 TMP100 的寫地址 
//#define CAT24C256_R   0xAF                       //定義cat24c256的讀地址 
#define IICDIR  P2DIR
#define IICOUT  P2OUT
#define IICIN  P2IN
#define SDA  BIT1                      //I2C的兩個引腳 帶上拉電阻 2.1
#define SCL  BIT0                      //2.0
unsigned char ack;	//應(yīng)答標(biāo)志
unsigned char IIC_DATA_W[36];     //存儲芯片存放數(shù)據(jù)
unsigned char IIC_DATA_R[36];     //存儲芯片存放數(shù)據(jù)
float Temperature_Sensor;
// 函數(shù)定義
void IIC_Start(void);   // start
void IIC_Wait(void);	// wait
void IIC_Stop(void);    // stop
void Send_Ack(unsigned char ack);  
void IIC_Write(unsigned char c);//寫入一字節(jié)數(shù)據(jù)	

unsigned char IIC_WriteByte(unsigned char sla,unsigned char c);
unsigned char IIC_WriteNBytes(unsigned char sla,unsigned int suba,unsigned char *s,unsigned char n);
unsigned char IIC_Read(void);      // 讀數(shù)據(jù)
unsigned char IIC_ReadByte(unsigned char sla,unsigned char *c);
unsigned char IIC_ReadNBytes(unsigned char sla,unsigned int suba,unsigned char *s,unsigned char n);

//wait function
void IIC_Wait(void)
{
    _NOP();
    _NOP();
    _NOP();
    _NOP();
}
//start condidion
//當(dāng)SCL為高時,SDA由高到低,開始,然后SCL到低
void IIC_Start(void)
{
    IICDIR |= SDA+SCL;//設(shè)置為輸出  
    IICOUT |= SDA; //SDA = 1;
    IICOUT |= SCL; //SCL = 1;
    IIC_Wait();
    IICOUT &= ~SDA;//SDA = 0;
    IIC_Wait();
    IICOUT &= ~SCL;//SCL = 0;
}
//stop condition
//當(dāng)SCL為高時,SDA由低到高
void IIC_Stop(void) 
{
    IICOUT &= ~SDA;//SDA = 0;
    IICOUT |= SCL; //SCL=1;
    IIC_Wait();
    IICOUT |= SDA; //SDA = 1;
    //IIC_Wait();
    //IICOUT &= ~SCL;//SCL = 0;
}


//send ack(1 or 0) to slave device:ACK=0.NON-ACK=1
//應(yīng)答信號,ack=0為應(yīng)答,1為非應(yīng)答
void Send_Ack(unsigned char ack) 
{
   //SDA = ack;
    if(ack==1)
      IICOUT |= SDA; //SDA = 1;
    else
      IICOUT &= ~SDA; //SDA = 0;
    IICOUT |= SCL; //SCL = 1;
    IIC_Wait();
    IICOUT &= ~SCL;//SCL = 0;
    //SDA=~ack;
    if(ack==1)
      IICOUT &= ~SDA; //SDA = 0;
    else
      IICOUT |= SDA; //SDA = 1;
}

//send one byte
//寫入一字節(jié)數(shù)據(jù)
//功能:將數(shù)據(jù)c發(fā)出,可以是地址也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,
//并對此狀態(tài)位進行操作(不應(yīng)答或非應(yīng)答都使ack=0),如果發(fā)送正常
//則ack=1,如果ack=0表明被控器無應(yīng)答或損壞
void IIC_Write(unsigned char c)
{   
    unsigned char BitCnt;
    for(BitCnt=0;BitCnt<8;BitCnt++)	//傳送一個8位字節(jié)
    {
        if((c<<BitCnt)&0x80)	//判斷發(fā)送位
        	IICOUT |= SDA;  //SDA=1;
        else
        	IICOUT &= ~SDA; //SDA=0;
        _NOP();
        IICOUT |= SCL;    //SCL=1;	//置時鐘線高電平,通知從器件開始接收數(shù)據(jù)位
        IIC_Wait();
        IICOUT &= ~SCL;     //SCL=0;
     }
	_NOP();
	_NOP();
	IICOUT |= SDA;     //SDA=1;	//8位數(shù)據(jù)位發(fā)送完,釋放數(shù)據(jù)線,準(zhǔn)備接受應(yīng)答位
	_NOP();
	_NOP();
	IICOUT |= SCL;     //SCL=1;
	_NOP();
	_NOP();
	_NOP();
        IICDIR &= ~SDA;   //SDA置為輸入
	//if(SDA==1) ack=0;
        if((IICIN&SDA)==SDA)ack=0;
	else ack=1;	 //判斷是否接收到應(yīng)答信號
        IICDIR |= SDA;   //SDA置為輸出
	IICOUT &= ~SCL;  //SCL=0;
	_NOP();      
	_NOP();
}

//字節(jié)數(shù)據(jù)接收
//接收從器件傳來的數(shù)據(jù)并判斷總線錯誤(不發(fā)應(yīng)答信號)
//發(fā)完后用應(yīng)答函數(shù)
unsigned char IIC_Read(void)
{
	unsigned char retc,BitCnt;
	
	retc=0;
	IICOUT |= SDA;  //SDA=1;	//置數(shù)據(jù)線為輸入方式
        IICDIR &= ~SDA;    //SDA置為輸入
	for(BitCnt=0;BitCnt<8;BitCnt++)
	{
		_NOP();
		IICOUT &= ~SCL;  //SCL=0;	//置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)
		IIC_Wait();
		IICOUT |= SCL;     //SCL=1;	//置時鐘線高電平,通知從器件開始接收數(shù)據(jù)位
		_NOP();
		_NOP();
		retc=retc<<1;                
                if((IICIN&SDA)==SDA) //if(SDA==1)
			retc=retc+1;	//接收的數(shù)據(jù)位放入retc中
		_NOP();
		_NOP();
                
	}
	IICOUT &= ~SCL;  //SCL=0;			//置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)
	_NOP();
	_NOP();
        IICDIR |= SDA;   //SDA置為輸出
	return(retc);
}

//向從器件寫1字節(jié)數(shù)據(jù)
//啟動總線-發(fā)送地址-數(shù)據(jù)-結(jié)束總線
//從器件地址為sla。返回1表示操作成功,否則為失敗
unsigned char IIC_WriteByte(unsigned char sla,unsigned char c)
{
	IIC_Start();	//啟動總線
	IIC_Write(sla);	//發(fā)送器件地址
	if(ack==0)
		return(0);//無應(yīng)答,返回0
	IIC_Write(C);	//發(fā)送數(shù)據(jù)
	if(ack==0)
		return(0);//無應(yīng)答,返回0
	IIC_Stop();	//結(jié)束總線
	return(1);
}

//向從器件寫n字節(jié)數(shù)據(jù)
//啟動總線-發(fā)送地址-子地址-數(shù)據(jù)-結(jié)束總線
//從器件地址為sla,子地址為suba,發(fā)送內(nèi)容為指針s指向的內(nèi)容,發(fā)送n個字節(jié)。
//返回1表示操作成功,否則為失敗

unsigned char IIC_WriteNBytes(unsigned char sla,unsigned int suba,unsigned char *s,unsigned char n)
{
	unsigned char i;
	unsigned char suba_h,suba_l;             
        //P5OUT |=  BIT4;     //給IIC供電  
        P1OUT &=  ~BIT7;    //取消寫保護
        suba_h=(unsigned char) (suba>>8);
        suba_l=(unsigned char) (suba&0x00ff); 
        
	IIC_Start();	//啟動總線
	IIC_Write(sla);	//發(fā)送器件地址
	if(ack==0)
	    return(0);//無應(yīng)答,返回0
	IIC_Write(suba_h);	//發(fā)送器件子地址高位
	if(ack==0)
		return(0);//無應(yīng)答,返回0
        IIC_Write(suba_l);	//發(fā)送器件子地址低位
	if(ack==0)
		return(0);//無應(yīng)答,返回0
	for(i=0;i<n;i++)
	{
		IIC_Write(*s);	//發(fā)送數(shù)據(jù)
		if(ack==0)
		return(0);//無應(yīng)答,返回0
		s++;
	}
	IIC_Stop();	//結(jié)束總線
       // P5OUT &=  ~BIT4; 
        P1OUT |=   BIT7;    //打開寫保護
	return(1);
}

//向從器件讀1字節(jié)數(shù)據(jù)
//啟動總線-發(fā)送地址-數(shù)據(jù)-結(jié)束總線
//從器件地址為sla,返回值保存在c。
//返回1表示操作成功,否則為失敗
unsigned char IIC_ReadByte(unsigned char sla,unsigned char *c)
{
	IIC_Start();	//啟動總線
	IIC_Write(sla+1);	//發(fā)送器件地址
	if(ack==0)
		return(0);//無應(yīng)答,返回0
	*c=IIC_Read();		//讀取數(shù)據(jù)
	Send_Ack(1);		//發(fā)送非應(yīng)答位	
	IIC_Stop();	//結(jié)束總線
	return(1);
}

//向從器件讀n字節(jié)數(shù)據(jù)
//啟動總線-發(fā)送地址-子地址-數(shù)據(jù)-結(jié)束總線
//從器件地址為sla,子地址為suba,讀內(nèi)容放到指針s,讀n個字節(jié)。
//返回1表示操作成功,否則為失敗
unsigned char IIC_ReadNBytes(unsigned char sla,unsigned int suba,unsigned char *s,unsigned char n)
{
	unsigned char i;
        unsigned char suba_h,suba_l;             
        //P5OUT |=  BIT4;     //給IIC供電            
        suba_h=(unsigned char) (suba>>8);
        suba_l=(unsigned char) (suba&0x00ff); 
	
	IIC_Start();	//啟動總線
	IIC_Write(sla);	//發(fā)送器件地址
	if(ack==0)
		return(0);//無應(yīng)答,返回0
	IIC_Write(suba_h);	//發(fā)送器件子地址高位
	if(ack==0)
		return(0);//無應(yīng)答,返回0
        IIC_Write(suba_l);	//發(fā)送器件子地址低位
	if(ack==0)
		return(0);//無應(yīng)答,返回0
	IIC_Start();
	IIC_Write(sla+1);	//發(fā)送器件地址
	if(ack==0)
		return(0);//無應(yīng)答,返回0	
	for(i=0;i<n-1;i++)
	{
		*s=IIC_Read();
		Send_Ack(0);	//發(fā)送應(yīng)答位
		s++;
	}
	*s=IIC_Read();
	Send_Ack(1);	//發(fā)送非應(yīng)答位
	IIC_Stop();
       // P5OUT &=  ~BIT4; 
	return(1);
}
	




void port_init(void)//端口初始化
{   
  P5DIR |= BIT4;//5.4接電源a0~a2;
  P5OUT |= BIT4;
  P1DIR |= BIT7;//wp寫保護
  P1OUT |= BIT7;
  IICDIR |= SDA+SCL;
  IICOUT |= SDA+SCL;

}
// 100. 讀取 TMP100 溫度程序//
void read_TMP100(void) 
{        
        unsigned char SlvAdr;
        unsigned char tmp100_[2];
        unsigned int temperature;        
        SlvAdr = TMP100;
        
        IIC_Start();                       //設(shè)置 TMP100 
        IIC_Write(SlvAdr);
        if(ack==0)
		return;//無應(yīng)答,返回0		//NAck ();
        IIC_Write(0x01);                //P1 P0 =01 ,設(shè)置指針寄存器
        if(ack==0)
		return;//無應(yīng)答,返回0		//NAck ();
        IIC_Write(0xE1);               //設(shè)置轉(zhuǎn)換結(jié)果為12位; shutdown 模式; 置OS=1,開始溫度單次轉(zhuǎn)換
        if(ack==0)
		return;//無應(yīng)答,返回0		//NAck ();        
        IIC_Stop ();
//        while (i--);                  //延時,大于600ms, 保證溫度充分轉(zhuǎn)換                
        IIC_Start ();                     //設(shè)置 TMP100 
        IIC_Write(SlvAdr);
        if(ack==0)
		return;//無應(yīng)答,返回0		//NAck ();
        IIC_Write(0x00);               //P1 P0 =00 ,選取溫度寄存器
        if(ack==0)
		return;//無應(yīng)答,返回0	//NAck ();
        IIC_Start (); 
        IIC_Write(SlvAdr | 1);         //讀溫度寄存器
        if(ack==0)
		return;//無應(yīng)答,返回0		//NAck (); 
        tmp100_[0] = IIC_Read();
        Send_Ack(0);	//Ack();
        tmp100_[1] = IIC_Read();
        Send_Ack(0);	//Ack ();
        IIC_Stop (); 
        temperature = tmp100_[0];
        temperature = (temperature << 8);
        temperature += tmp100_[1];
        temperature = (temperature >> 4);
        
         if ((temperature & 0x0800) == 0x0800)    //溫度值小于0
        { 
          temperature = 0x1000 - temperature;  //取溫度值的絕對值
          Temperature_Sensor =  temperature  * (-0.0625);
        } 
        else    //溫度值大于0
        {
          Temperature_Sensor =  temperature  * 0.0625;
        }  
        
}


void main (void)
{  
  
  unsigned char i,a;
  WDTCTL=WDTPW+WDTHOLD;//關(guān)狗
  _DINT();
  port_init();//系統(tǒng)初始化 
  a=0;
  while(1)
  {
    for(i=0;i<36;i++)
        IIC_DATA_W[i]=a+i;
    IIC_WriteNBytes(CAT24C256,0x0000,IIC_DATA_W,35); 
    for(i=0;i<36;i++)
        IIC_DATA_R[i]=0;
    IIC_ReadNBytes(CAT24C256,0x0000,IIC_DATA_R,36);
    
     
    
  }
  
  
}


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国精产品一区一区三区mba视频 | 成人国产精品免费| 精品国产一区二区精华| 麻豆国产精品官网| 久久理论电影网| 成人精品免费看| 亚洲欧洲日韩av| 欧美性大战久久久久久久蜜臀| 亚洲国产日韩精品| 欧美一区二区不卡视频| 国产精品一区2区| 亚洲精品欧美激情| 日韩欧美国产高清| jlzzjlzz亚洲女人18| 亚洲国产精品久久人人爱| 日韩三级伦理片妻子的秘密按摩| 国产成人在线看| 亚洲欧美一区二区三区极速播放| 欧美日韩国产综合久久| 国产美女av一区二区三区| 亚洲视频香蕉人妖| 日韩欧美一区二区久久婷婷| 欧美一激情一区二区三区| 国产精品一区二区在线看| 亚洲免费av高清| 精品久久久久久最新网址| 99久久国产综合精品女不卡| 美女网站在线免费欧美精品| 亚洲欧美另类在线| 精品剧情v国产在线观看在线| 一本色道亚洲精品aⅴ| 久久精品国产久精国产爱| 亚洲欧美一区二区视频| 日韩欧美国产1| 欧美性猛交一区二区三区精品| 国产乱一区二区| 五月婷婷另类国产| 亚洲欧洲性图库| 久久综合久色欧美综合狠狠| 欧亚洲嫩模精品一区三区| 高清beeg欧美| 另类综合日韩欧美亚洲| 亚洲国产一区二区三区 | 国产精品美女久久久久久久网站| 欧美色窝79yyyycom| 国产河南妇女毛片精品久久久| 亚洲韩国一区二区三区| 日韩毛片一二三区| 国产色91在线| 精品日韩在线观看| 日韩一区二区在线看片| 欧美色区777第一页| 94-欧美-setu| 不卡电影一区二区三区| 国产乱人伦精品一区二区在线观看| 天天爽夜夜爽夜夜爽精品视频| 日韩一区在线播放| 中文字幕一区二区不卡| 久久女同性恋中文字幕| 欧美va亚洲va香蕉在线| 欧美电视剧免费观看| 欧美日韩国产小视频| 91久久线看在观草草青青| 91亚洲精品久久久蜜桃| www.视频一区| kk眼镜猥琐国模调教系列一区二区| 激情久久五月天| 久久精品99国产精品日本| 日韩成人av影视| 日韩av午夜在线观看| 天堂影院一区二区| 日本视频中文字幕一区二区三区 | 另类小说一区二区三区| 热久久一区二区| 免费成人结看片| 国内精品第一页| 国产成人免费视频一区| 国产凹凸在线观看一区二区| 国产精品夜夜爽| 成人免费看片app下载| 成人av在线播放网站| 99久久99久久免费精品蜜臀| 97se亚洲国产综合自在线观| 97精品超碰一区二区三区| 在线免费观看成人短视频| 欧美日韩国产片| 日韩欧美亚洲国产另类| 26uuu亚洲| 国产精品久久久久久亚洲伦| 亚洲欧美激情插| 丝袜美腿高跟呻吟高潮一区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产成人三级在线观看| proumb性欧美在线观看| 欧美亚洲另类激情小说| 日韩三级精品电影久久久| 久久久蜜桃精品| 国产精品美日韩| 亚洲狠狠爱一区二区三区| 精品综合久久久久久8888| 成人一区在线观看| 欧美日韩一区二区三区高清| 久久综合999| 亚洲天堂网中文字| 丝袜诱惑制服诱惑色一区在线观看| 久久 天天综合| 波多野结衣在线一区| 欧美男生操女生| 欧美激情综合五月色丁香| 亚洲高清久久久| 国产精品一区专区| 欧美日韩性生活| 国产校园另类小说区| 亚洲狠狠爱一区二区三区| 国产在线精品国自产拍免费| 色综合中文综合网| 亚洲午夜久久久久久久久电影网| 精品一区二区综合| 一本色道a无线码一区v| 欧美哺乳videos| 亚洲一区自拍偷拍| 丰满亚洲少妇av| 在线不卡一区二区| 国产精品蜜臀av| 蜜臀av亚洲一区中文字幕| 99精品视频免费在线观看| 精品入口麻豆88视频| 亚洲综合免费观看高清完整版 | 国产一区在线看| 欧美日韩日日摸| 国产精品午夜在线| 免费亚洲电影在线| 欧美日韩亚洲高清一区二区| 国产精品久久久一本精品 | 91精品国产aⅴ一区二区| 亚洲色图一区二区| 国产91露脸合集magnet| 精品免费视频一区二区| 五月婷婷综合在线| 欧美专区在线观看一区| 国产精品麻豆欧美日韩ww| 国产在线不卡一区| 日韩片之四级片| 亚洲午夜免费视频| 在线观看日韩av先锋影音电影院| 国产精品美女一区二区三区| 国产精品一区二区x88av| 精品三级在线看| 久久精品国产一区二区三区免费看 | 色综合久久66| 亚洲日本在线视频观看| 国产91综合一区在线观看| 日韩精品一区二区三区视频 | 国产成人亚洲综合a∨婷婷| 日韩情涩欧美日韩视频| 天天色综合成人网| 欧美性受xxxx黑人xyx性爽| 亚洲免费av网站| 在线观看一区二区精品视频| 亚洲激情成人在线| 一本色道久久综合狠狠躁的推荐| 日韩理论片网站| 97超碰欧美中文字幕| 亚洲免费三区一区二区| 一本在线高清不卡dvd| 一二三区精品视频| 欧美日韩精品一区二区三区 | 国产欧美精品一区| 国产福利视频一区二区三区| 久久午夜羞羞影院免费观看| 国产精品一区二区久久精品爱涩| 国产午夜精品在线观看| 国产高清不卡一区| 国产精品久久久久影院亚瑟| 91丨国产丨九色丨pron| 一区二区三区免费网站| 欧美日韩国产精品自在自线| 日日欢夜夜爽一区| 精品国产免费人成在线观看| 国产精品1区2区| 日韩一区在线播放| 欧美三级资源在线| 麻豆视频观看网址久久| 国产亚洲欧美色| 91免费国产在线| 日本不卡中文字幕| 久久欧美中文字幕| 99久久精品情趣| 天天亚洲美女在线视频| 久久久久久久久久久久久女国产乱| 成人激情图片网| 亚洲国产成人高清精品| 精品国产91洋老外米糕| 99re免费视频精品全部| 日韩不卡在线观看日韩不卡视频| 久久久精品国产免大香伊 | 99视频在线精品| 香蕉加勒比综合久久| 久久综合九色综合97婷婷女人| av亚洲精华国产精华|