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

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

?? msp430的i2c.txt

?? msp430和nrf905的例子,聯(lián)系qqliuyong007@163.com
?? TXT
字號:
/*********************************************************************************************
             MSP430系列單片機讀寫EEPROM--24WC02的C語言軟件包
               廣東萬山自動化儀表有限公司  陳平
24WC02有寫操作保護性延時,并允許頁讀256字節(jié),頁寫16字節(jié)。當(dāng)頁寫超過2字節(jié)時,要注意頁地址的轉(zhuǎn)換。
*************************************************************************************************/
#define sla  0xa0         //24wc02器件地址
//==SDA 接P2.2 ;SCL接 P2.3===WP接 P2.4=電源接P6.7====
#define SDA_1  (P2OUT |= 0x04)
#define SDA_0  (P2OUT &= ~0x04)
#define SCL_1  (P2OUT |=0x08)
#define SCL_0  (P2OUT &=~0x08)
#define WP_1   (P2OUT |= 0x10)      //禁 止寫
#define WP_0   (P2OUT &= ~0x10)     //寫允許
#define ee_on  (P6OUT ^= 0x80)      //24WC02供電
#define ee_off (P6OUT &=~0x80)      //24WC02斷電
//定義信息存儲器中的參數(shù)
#pragma memory= no_init           //請修改相應(yīng)的連接文件*.xcl 在Information memory 中添加如下語句: -Z(CODE)NO_INIT=1000-10FF   


unsigned int pass;  

#pragma memory= default
/*******************************************************************
                     起動總線函數(shù)               
函數(shù)原型: void  Start_I2c();  
功能:       啟動I2C總線,即發(fā)送I2C起始條件.
  
********************************************************************/
void Start_I2c(void)
{
  SDA_1;   /*發(fā)送起始條件的數(shù)據(jù)信號*/
  _NOP();
  SCL_1;
  _NOP();    /*起始條件建立時間大于4.7us,延時*/
  _NOP();
  _NOP();
  _NOP();
  _NOP();    
  SDA_0;   /*發(fā)送起始信號*/
  _NOP();    /* 起始條件鎖定時間大于4μs*/
  _NOP();
  _NOP();
  _NOP();
  _NOP();       
  SCL_0;   /*鉗住I2C總線,準(zhǔn)備發(fā)送或接收數(shù)據(jù) */
  _NOP();
  _NOP();
}




/*******************************************************************
                      結(jié)束總線函數(shù)               
函數(shù)原型: void  Stop_I2c();  
功能:       結(jié)束I2C總線,即發(fā)送I2C結(jié)束條件.
  
********************************************************************/
void Stop_I2c(void)
{
  SDA_0;  /*發(fā)送結(jié)束條件的數(shù)據(jù)信號*/
  _NOP();   /*發(fā)送結(jié)束條件的時鐘信號*/
  SCL_1;  /*結(jié)束條件建立時間大于4μs*/
  _NOP();
  _NOP();
  _NOP();
  _NOP();
  _NOP();
  SDA_1;  /*發(fā)送I2C總線結(jié)束信號*/
  _NOP();
  _NOP();
  _NOP();
  _NOP();
}
/*******************************************************************
                 字節(jié)數(shù)據(jù)傳送函數(shù)               
函數(shù)原型: void  SendByte(uchar c);
功能:  將數(shù)據(jù)c發(fā)送出去,可以是地址,也可以是數(shù)據(jù),發(fā)完后等待應(yīng)答,并對
     此狀態(tài)位進行操作.(不應(yīng)答或非應(yīng)答都使ack=0 假)     
     發(fā)送數(shù)據(jù)正常,ack=1; ack=0表示被控器無應(yīng)答或損壞。
********************************************************************/
void  SendByte(unsigned char  c)
{
 unsigned char  BitCnt;
 
 for(BitCnt=0;BitCnt<8;BitCnt++)  /*要傳送的數(shù)據(jù)長度為8位*/
    {
     if((c<<BitCnt)&0x80) SDA_1;   /*判斷發(fā)送位*/
       else  SDA_0;                
     _NOP();
     SCL_1;               /*置時鐘線為高,通知被控器開始接收數(shù)據(jù)位*/
      _NOP(); 
      _NOP();               /*保證時鐘高電平周期大于4μs*/
      _NOP();
      _NOP();
      _NOP();         
      SCL_0; 
    }
    
    _NOP();
    _NOP();
    SDA_1;               /*8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位*/
    _NOP();
    _NOP();   
    SCL_1;
    _NOP();
    _NOP();
    _NOP();
    if(TestAck()) ack_0;     
       else ack_1;        /*判斷是否接收到應(yīng)答信號*/
    SCL_0;
    _NOP();
    _NOP();
}
/*******************************************************************
                 字節(jié)數(shù)據(jù)傳送函數(shù)               
函數(shù)原型: uchar  RcvByte();
功能:  用來接收從器件傳來的數(shù)據(jù),并判斷總線錯誤(不發(fā)應(yīng)答信號),
     發(fā)完后請用應(yīng)答函數(shù)。  
********************************************************************/	
unsigned char  RcvByte(void)
{
  unsigned char  retc;
  unsigned char BitCnt;
  
  retc=0; 
  SDA_1;             /*置數(shù)據(jù)線為輸入方式*/
  for(BitCnt=0;BitCnt<8;BitCnt++)
      {
        _NOP();           
        SCL_0;       /*置時鐘線為低,準(zhǔn)備接收數(shù)據(jù)位*/
        _NOP();
        _NOP();         /*時鐘低電平周期大于4.7μs*/
        _NOP();
        _NOP();
        _NOP();
        SCL_1;       /*置時鐘線為高使數(shù)據(jù)線上數(shù)據(jù)有效*/
        _NOP();
        _NOP();
        retc=retc<<1;
        if(TestAck()) retc=retc+1; /*讀數(shù)據(jù)位,接收的數(shù)據(jù)位放入retc中 */
        _NOP();
        _NOP(); 
      }
  SCL_0;    
  _NOP();
  _NOP();
  return(retc);
}

/********************************************************************
                     應(yīng)答子函數(shù)
原型:  void Ack_I2c(bit a);
 
功能:主控器進行應(yīng)答信號,(可以是應(yīng)答或非應(yīng)答信號)
********************************************************************/
void Ack_I2c(unsigned char a)
{
  
  if(a==0) SDA_0;     /*在此發(fā)出應(yīng)答或非應(yīng)答信號 */
        else  SDA_1;
  _NOP();
  _NOP();
  _NOP();      
  SCL_1;
    _NOP();
    _NOP();              /*時鐘低電平周期大于4μs*/
    _NOP();
    _NOP();
    _NOP();  
 SCL_0;                /*清時鐘線,鉗住I2C總線以便繼續(xù)接收*/
    _NOP();
    _NOP();    
}

//====
unsigned char TestAck(void)
{
 unsigned char a;
 P2DIR &= ~0x04;  //P2.2設(shè)為輸入
 a=P2IN &0x04;
 P2DIR |= 0x04;  //P2.2恢復(fù)為輸出
 return(a); 
}
/*******************************************************************
                    向有子地址器件發(fā)送多字節(jié)數(shù)據(jù)函數(shù)               
函數(shù)原型: bit  ISendStr(uchar sla,uchar suba,ucahr *s,uchar no);  
功能:     從啟動總線到發(fā)送地址,子地址,數(shù)據(jù),結(jié)束總線的全過程,從器件
          地址sla,子地址suba,發(fā)送內(nèi)容是s指向的內(nèi)容,發(fā)送no個字節(jié)。
           如果返回1表示操作成功,否則操作有誤。
注意:    使用前必須已結(jié)束總線。
********************************************************************/
unsigned char ISendStr(unsigned char suba,unsigned char *s,unsigned char no)
{
   unsigned i;
   Start_I2c();               /*啟動總線*/
   SendByte(sla);            /*發(fā)送器件地址*/
     if(ack==0)return(0);
   SendByte(suba);            /*發(fā)送器件子地址*/
     if(ack==0)return(0);

   for(i=0;i<no;i++)
    {   
     SendByte(*s);               /*發(fā)送數(shù)據(jù)*/
       if(ack==0)return(0);
     s++;
    } 
 Stop_I2c();                 /*結(jié)束總線*/ 
  return(1);
}
/*******************************************************************
                    向有子地址器件讀取多字節(jié)數(shù)據(jù)函數(shù)               
函數(shù)原型: bit  ISendStr(uchar sla,uchar suba,ucahr *s,uchar no);  
功能:     從啟動總線到發(fā)送地址,子地址,讀數(shù)據(jù),結(jié)束總線的全過程,從器件
          地址sla,子地址suba,讀出的內(nèi)容放入s指向的存儲區(qū),讀no個字節(jié)。
           如果返回1表示操作成功,否則操作有誤。
注意:    使用前必須已結(jié)束總線。
********************************************************************/
unsigned char  IRcvStr(unsigned char suba1,unsigned char *s1,unsigned char no1)
{
   unsigned char i;
   Start_I2c();               /*啟動總線*/
   SendByte(sla);            /*發(fā)送器件地址*/
     if(ack==0)return(0);
   SendByte(suba1);            /*發(fā)送器件子地址*/
     if(ack==0)return(0);
   Start_I2c();
   SendByte(sla+1);          //D0=1為讀命令
      if(ack==0)return(0);

   for(i=0;i<no1-1;i++)
    {   
     *s1=RcvByte();               /*發(fā)送數(shù)據(jù)*/
      Ack_I2c(0);                /*發(fā)送就答位*/  
     s1++;
    } 
   *s1=RcvByte();
    Ack_I2c(1);                 /*發(fā)送非應(yīng)位*/
 Stop_I2c();                    /*結(jié)束總線*/ 
  return(1);
}
/******************************************************************************************************
當(dāng)使用flash系列單片機時,可將24WC02中的數(shù)據(jù)拷貝到MSP430單片機內(nèi)部的非易失性flash memory(信息存儲器)中。
EEprom數(shù)據(jù)拷貝到cpu非易失性flash memory,入口參數(shù)指明目標(biāo)是segmetn=0時是segment A 否則是 segment B.
********************************************************************************************************/
void DataCopy(unsigned char segment)
{
unsigned char * pram;
unsigned char  byte;
unsigned char i;
if (segment) segment=1;      //限制segment為0和1。
pram=(unsigned char *)&pass+segment*128; 
EraseRam(segment);
 repeat:
    Start_I2c();               /*啟動總線*/
    SendByte(sla);             /*發(fā)送器件地址*/
    if(ack==0)  goto repeat;
    SendByte(segment*128);               /*發(fā)送器件子地址*/
    if(ack==0)  goto repeat;
    Start_I2c();
    SendByte(sla+1);           //D0=1為讀命令
    if(ack==0)  goto repeat;
    //---- 
 _DINT();  
 while (FCTL3 & BUSY);         //檢查忙標(biāo)志
 FCTL3=FWKEY;                  //解鎖
 FCTL1=FWKEY+WRT;              //寫允許
 while (FCTL3 & BUSY);         //檢查忙標(biāo)志
 //----
 for (i=0;i<128;i++)
    {
     byte=RcvByte();               /*接收數(shù)據(jù)*/
     Ack_I2c(0);                   /*發(fā)送就答位*/  
     *pram++=byte;     
     while (FCTL3 & BUSY);            //檢查忙標(biāo)志 
     }
 //---------------
 byte=RcvByte();               /*接收一次無用數(shù)據(jù),以滿足時序要求*/
 Ack_I2c(1);                   /*發(fā)送非應(yīng)位*/
 Stop_I2c();                    /*結(jié)束總線*/ 
 FCTL1=FWKEY;
 FCTL3 ^=(FXKEY+LOCK);       //加鎖
 //  
 _EINT();       //開全局中斷
}
//--------------------------------------------------
//===信息存儲器的擦除,seg=0時,擦除A段,否則擦除B段.
//--------------------------------------------------
void EraseRam(unsigned char seg)
{ 
unsigned int *pe;
if (seg)    pe=(unsigned int *)0x10f0;  //segment B
else   pe=(unsigned int *)0x1000;    //segment A
 _DINT();  
 while (FCTL3 & BUSY);            //檢查忙標(biāo)志
 FCTL3=FWKEY;                     //解鎖
 while (FCTL3 & BUSY);            //檢查忙標(biāo)志
 FCTL1=FWKEY+ERASE;               //所有段擦除允許
 *pe=0;
 while (FCTL3 & BUSY);            //檢查忙標(biāo)志
 FCTL3 ^=(FXKEY+LOCK);            //加鎖
 while (FCTL3 & BUSY);            //檢查忙標(biāo)志 
  _EINT();       //開全局中斷
}
//==============================================================
感謝:
     利爾達電子公司的銷售助理 章榴媚 小姐!
     周立功單片機有限公司!




?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产第一区二区三区观看体验| 成人免费一区二区三区在线观看| 国产欧美视频在线观看| 亚洲色图欧洲色图婷婷| 热久久一区二区| 91视频国产观看| 日韩美女在线视频| 一区二区三区产品免费精品久久75| 日韩电影一二三区| 99精品国产热久久91蜜凸| 日韩精品一区二区三区蜜臀| 一区二区三区中文字幕电影| 国产精品一区二区果冻传媒| 这里只有精品视频在线观看| 亚洲精品国产高清久久伦理二区| 国产不卡视频在线观看| 日韩一二在线观看| 亚洲成人精品一区| 99久久精品国产网站| 久久精品视频免费| 免费在线观看精品| 欧美日韩三级在线| 一区二区在线观看不卡| 丁香网亚洲国际| 久久综合久久久久88| 五月天丁香久久| 91福利国产成人精品照片| 国产精品家庭影院| 国产成人精品一区二| 久久综合久久鬼色| 国产一区二区美女诱惑| 久久综合九色综合97婷婷女人| 青青草伊人久久| 日韩一区二区三区免费观看| 丝袜国产日韩另类美女| 欧美久久久久久久久久| 亚洲va国产天堂va久久en| 在线观看区一区二| 亚洲一区二区三区爽爽爽爽爽 | 色哟哟在线观看一区二区三区| 国产欧美日韩另类一区| 国产91精品精华液一区二区三区| 一区二区三区在线视频免费 | 水野朝阳av一区二区三区| 在线观看日韩国产| 性欧美大战久久久久久久久| 欧美日韩精品一区视频| 首页国产丝袜综合| 欧美一区二区三区日韩视频| 日本va欧美va瓶| 久久蜜臀精品av| 成人精品在线视频观看| 亚洲女人的天堂| 欧美视频日韩视频| 免费成人在线影院| 久久久国产综合精品女国产盗摄| 丁香另类激情小说| 亚洲欧美视频在线观看| 欧美日韩国产首页在线观看| 午夜精品视频一区| 久久综合九色综合久久久精品综合| 国产福利一区二区三区视频在线| 中文字幕佐山爱一区二区免费| 色94色欧美sute亚洲线路一ni| 亚洲一区二区三区四区在线免费观看 | 国产精品卡一卡二| 色综合久久久久综合体| 日韩av网站免费在线| 欧美精品一区二区蜜臀亚洲| 成人高清视频免费观看| 午夜精品成人在线视频| 久久新电视剧免费观看| 日本道免费精品一区二区三区| 日本人妖一区二区| 国产精品福利影院| 6080亚洲精品一区二区| 不卡在线视频中文字幕| 首页国产欧美日韩丝袜| 欧美激情一区二区三区不卡| 欧美日产国产精品| 国产精品99久久久久久宅男| 亚洲chinese男男1069| 久久久久99精品一区| 欧美三级韩国三级日本一级| 国产一区999| 日日摸夜夜添夜夜添亚洲女人| 欧美国产综合色视频| 欧美久久久久久久久中文字幕| 不卡电影免费在线播放一区| 蜜桃av一区二区在线观看| 成人欧美一区二区三区白人| 精品精品国产高清一毛片一天堂| 在线视频你懂得一区二区三区| 国产在线精品免费| 日韩电影在线一区| 夜夜揉揉日日人人青青一国产精品| 久久夜色精品国产噜噜av| 欧美日韩国产精品自在自线| 99r国产精品| 国产91精品露脸国语对白| 极品少妇xxxx精品少妇偷拍 | 91麻豆精品国产| 91成人免费电影| www.欧美精品一二区| 国产乱码精品一区二区三区五月婷| 午夜精品福利一区二区三区蜜桃| 亚洲精品视频一区二区| 国产精品不卡视频| 亚洲国产精品传媒在线观看| 精品国产一区二区精华 | 欧美在线不卡视频| 波波电影院一区二区三区| 国产精品一区二区无线| 狠狠色狠狠色综合| 久久 天天综合| 精品一区二区三区蜜桃| 免费在线视频一区| 九九视频精品免费| 蜜臀av性久久久久蜜臀aⅴ| 日一区二区三区| 日本欧美加勒比视频| 美女网站一区二区| 日本欧美在线观看| 久久国产欧美日韩精品| 精品一区二区三区在线观看国产 | 日韩欧美资源站| 欧美一区二区日韩一区二区| 日韩一卡二卡三卡国产欧美| 日韩欧美在线不卡| 午夜精品在线看| 欧美精品色综合| 日韩欧美国产三级电影视频| 精品国产电影一区二区| 久久久久国产精品麻豆| 欧美国产成人精品| 亚洲欧美一区二区三区国产精品 | 国产精品美日韩| 亚洲欧美激情一区二区| 一级做a爱片久久| 天天射综合影视| 久久不见久久见免费视频7| 国产精品77777| 97久久久精品综合88久久| 欧美三级在线播放| 日韩欧美国产午夜精品| 中文字幕精品综合| 亚洲一卡二卡三卡四卡| 日本欧美加勒比视频| 国产成人精品亚洲777人妖| 色综合久久综合网欧美综合网| 欧美日韩成人在线一区| 久久欧美一区二区| 亚洲女与黑人做爰| 美女网站一区二区| 成人午夜视频福利| 欧美熟乱第一页| 久久综合中文字幕| 亚洲国产精品一区二区www | 亚洲精品在线三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 在线观看日韩一区| 精品福利一二区| 亚洲亚洲精品在线观看| 久草热8精品视频在线观看| 99久久久无码国产精品| 日韩午夜在线观看视频| 亚洲免费毛片网站| 91国产丝袜在线播放| 精品精品欲导航| 亚洲精品免费看| 国产成人在线色| 91精品一区二区三区久久久久久 | 国产成人精品一区二区三区四区 | 午夜国产精品影院在线观看| 成人免费视频一区| 欧美成人国产一区二区| 一区二区三区在线影院| jiyouzz国产精品久久| 日韩欧美中文一区二区| 亚洲第一主播视频| 色综合久久88色综合天天| 久久毛片高清国产| 日韩高清一级片| 欧美亚洲免费在线一区| 国产精品久久二区二区| 国产一区二区在线观看免费| 91精品国产一区二区人妖| 亚洲另类在线视频| 99免费精品在线| 中文字幕免费一区| 国产成人午夜精品5599| 精品成人私密视频| 麻豆精品视频在线| 欧美一区二区大片| 日韩成人免费电影| 91精品欧美福利在线观看| 亚洲va国产va欧美va观看| 欧美色精品在线视频| 亚洲国产综合视频在线观看| 在线免费亚洲电影|