<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > PIC16F877A單片機 I2C模塊 24CXXX存儲器實現(xiàn)路徑記憶

          PIC16F877A單片機 I2C模塊 24CXXX存儲器實現(xiàn)路徑記憶

          作者: 時間:2016-11-24 來源:網(wǎng)絡 收藏

          本文引用地址:http://www.ex-cimer.com/article/201611/321068.htm

          該過程的部分程序:


          void delay(uint x)
          {
          uint a,b;
          for(a=x;a>0;a--)
          for(b=110;b>0;b--);
          }
          void init() //端口初始化
          {
          TRISB=0X00;
          PORTB=0X00;
          TRISD=0x00;
          PORTD=0x00;
          TRISC=0XFF; //TRISC<4:3>=11即可
          // PORTC=0X00;
          SSPSTAT=0X80;
          SSPCON=0X38;
          SSPCON2=0X00;
          SSPADD=0x09;

          }
          void didi(uchar num) //蜂鳴器,檢測讀寫是否完成
          {
          uchar di_num;
          for(di_num=num;di_num>0;di_num--)
          {
          RD0=1;
          delay(500);
          RD0=0;
          delay(500);
          }
          }
          void write() //寫函數(shù)
          {
          uchar i;
          SSPIF=0;
          SEN=1; //啟動信號
          while(!SSPIF); //1的時候是真 0的時候是假 !SSPIF為非真,為假退出語句
          SSPIF=0; //軟件清零 不會自動清零
          SSPBUF=0XA0; //發(fā)送設備片選地址 即1010 A0 A1 A2 R/W
          while(!SSPIF); //判斷是否發(fā)送完畢
          SSPIF=0;
          SSPBUF=add; //發(fā)送E2PROM內存儲地址00~FF
          while(!SSPIF); //監(jiān)測數(shù)據(jù)是否發(fā)完
          SSPIF=0;
          //此處似乎缺ACK應答
          for(i=0;i<6;i++) //寫入數(shù)據(jù)
          {
          SSPBUF=ee_data[i];//每發(fā)送一個數(shù)據(jù)都要檢測是否成功
          while(!SSPIF); //判斷
          SSPIF=0;
          }
          PEN=1; //發(fā)送停止信號
          while(!SSPIF);//如果收到停止信號同樣會置位
          SSPIF=0;
          didi(1); //如果寫成功發(fā)出兩聲嘀嘀 此處可有可無

          }
          void read() //讀函數(shù)
          {
          uchar i;
          SSPIF=0;
          SEN=1; // 啟動信號
          while(!SSPIF);//如果啟動成功 置位
          SSPIF=0; //同樣清零
          SSPBUF=0XA0; //發(fā)送片選地址 即1010 A0 A1 A2 R/W
          while(!SSPIF); //判斷是否發(fā)送完畢
          SSPIF=0;
          //此處似乎也需要應答ACK
          SSPBUF=add; //E2PROM片內寫數(shù)據(jù)地址從00到FF中的任意一個
          while(!SSPIF); //監(jiān)測數(shù)據(jù)是否發(fā)完
          SSPIF=0;
          SSPIF=0;
          //又一個ACK應答
          RSEN=1; //重啟信號
          while(!SSPIF); //監(jiān)測數(shù)據(jù)是否發(fā)完
          SSPIF=0;
          SSPBUF=0XA1; //傳輸方向即開始讀取數(shù)據(jù)
          while(!SSPIF); //監(jiān)測數(shù)據(jù)是否發(fā)完
          SSPIF=0;
          for(i=0;i<6;i++) //接受的數(shù)據(jù)
          {
          RCEN=1;
          while(!SSPIF);
          read_data[i]=SSPBUF;//read_data[i]為SSPBUF中讀回來的數(shù) 每讀一次IIC地址自動加1
          while(!SSPIF);
          SSPIF=0; //等待read_data[i]將數(shù)據(jù)讀走標志位清零

          if(i>=5)
          { ACKDT=1;} //應答標志
          else { ACKDT=0;}

          ACKEN=1;
          while(!SSPIF);
          SSPIF=0;
          }
          //此處好像有一個ACK應答
          PEN=1; //讀操作完畢
          while(!SSPIF); //監(jiān)測
          SSPIF=0;
          didi(3);
          }


          上一頁 1 2 下一頁

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();