日本a√视频在线,久久青青亚洲国产,亚洲一区欧美二区,免费g片在线观看网站

        <style id="k3y6c"><u id="k3y6c"></u></style>
        <s id="k3y6c"></s>
        <mark id="k3y6c"></mark>
          
          

          <mark id="k3y6c"></mark>

          新聞中心

          STC12C5A60S2控制AT24C04 C程序

          作者: 時(shí)間:2013-05-11 來源:網(wǎng)絡(luò) 收藏
          /**************************************
          主芯片:(1T)
          工作頻率:12.000MHz
          **************************************/ #include"REG51.H"
          #include"INTRINS.H"
          typedefunsignedcharBYTE;
          typedefunsignedshortWORD; sbitSCL=P3^4;//的時(shí)鐘
          sbitSDA=P3^5;//的數(shù)據(jù) BYTEBUF[16];//數(shù)據(jù)緩存區(qū) BYTEcodeTESTDATA[]=
          {
          0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,
          0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF
          }; voidDelay5us();
          voidDelay5ms();
          void_Start();
          voidAT24C04_Stop();
          voidAT24C04_SenDACK(bitack);
          bitAT24C04_RecvACK();
          voidAT24C04_SendByte(BYTEdat);
          BYTEAT24C04_RecvByte();
          voidAT24C04_ReadPage();
          voidAT24C04_WritePage(); voidmain()
          {
          AT24C04_WritePage();
          Delay5ms();
          AT24C04_ReadPage(); while(1); } /**************************************
          向AT24C04寫1頁(yè)(16字節(jié))數(shù)據(jù)
          將TESTDATA開始的16個(gè)測(cè)試數(shù)據(jù)寫如設(shè)備的00~0F地址中
          **************************************/
          voidAT24C04_WritePage()
          {
          BYTEi; AT24C04_Start();//起始信號(hào)
          AT24C04_SendByte(0xa0);//發(fā)送設(shè)備地址+寫信號(hào)
          AT24C04_SendByte(0x00);//發(fā)送存儲(chǔ)單元地址
          for(i=0;i16;i++)
          {
          AT24C04_SendByte(TESTDATA[i]);
          }
          AT24C04_Stop();//停止信號(hào)
          } /**************************************
          從AT24C04讀取1頁(yè)(16字節(jié))數(shù)據(jù)
          將設(shè)備的00~0F地址中的數(shù)據(jù)讀出存放在DATA區(qū)的BUF中
          **************************************/
          voidAT24C04_ReadPage()
          {
          BYTEi; AT24C04_Start();//起始信號(hào)
          AT24C04_SendByte(0xa0);//發(fā)送設(shè)備地址+寫信號(hào)
          AT24C04_SendByte(0x00);//發(fā)送存儲(chǔ)單元地址
          AT24C04_Start();//起始信號(hào)
          AT24C04_SendByte(0xa1);//發(fā)送設(shè)備地址+讀信號(hào)
          for(i=0;i16;i++)
          {
          BUF[i]=AT24C04_RecvByte();
          if(i==15)
          {
          AT24C04_SendACK(1);//最后一個(gè)數(shù)據(jù)需要會(huì)NAK
          }
          else
          {
          AT24C04_SendACK(0);//回應(yīng)ACK
          }
          }
          AT24C04_Stop();//停止信號(hào)
          } /**************************************
          延時(shí)5微秒(@12M)
          不同的工作環(huán)境,需要調(diào)整此函數(shù)
          此延時(shí)函數(shù)是使用1T的指令周期進(jìn)行計(jì)算,與傳統(tǒng)的12T的MCU不同
          **************************************/
          voidDelay5us()
          {
          BYTEn=4; while(n--)
          {
          _nop_();
          _nop_();
          }
          } /**************************************
          延時(shí)5毫秒(@12M)
          不同的工作環(huán)境,需要調(diào)整此函數(shù)
          此延時(shí)函數(shù)是使用1T的指令周期進(jìn)行計(jì)算,與傳統(tǒng)的12T的MCU不同
          **************************************/
          voidDelay5ms()
          {
          WORDn=2500; while(n--)
          {
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          }
          } /**************************************
          起始信號(hào)
          **************************************/
          voidAT24C04_Start()
          {
          SDA=1;//拉高數(shù)據(jù)線
          SCL=1;//拉高時(shí)鐘線
          Delay5us();//延時(shí)
          SDA=0;//產(chǎn)生下降沿
          Delay5us();//延時(shí)
          SCL=0;//拉低時(shí)鐘線
          } /**************************************
          停止信號(hào)
          **************************************/
          voidAT24C04_Stop()
          {
          SDA=0;//拉低數(shù)據(jù)線
          SCL=1;//拉高時(shí)鐘線
          Delay5us();//延時(shí)
          SDA=1;//產(chǎn)生上升沿
          Delay5us();//延時(shí)
          } /**************************************
          發(fā)送應(yīng)答信號(hào)
          入口參數(shù):ack(0:ACK1:NAK)
          **************************************/
          voidAT24C04_SendACK(bitack)
          {
          SDA=ack;//寫應(yīng)答信號(hào)
          SCL=1;//拉高時(shí)鐘線
          Delay5us();//延時(shí)
          SCL=0;//拉低時(shí)鐘線
          Delay5us();//延時(shí)
          } /**************************************
          接收應(yīng)答信號(hào)
          **************************************/
          bitAT24C04_RecvACK()
          {
          SCL=1;//拉高時(shí)鐘線
          Delay5us();//延時(shí)
          CY=SDA;//讀應(yīng)答信號(hào)
          SCL=0;//拉低時(shí)鐘線
          Delay5us();//延時(shí) returnCY;
          } /**************************************
          向IIC總線發(fā)送一個(gè)字節(jié)數(shù)據(jù)
          **************************************/
          voidAT24C04_SendByte(BYTEdat)
          {
          BYTEi; for(i=0;i8;i++)//8位計(jì)數(shù)器
          {
          dat=1;//移出數(shù)據(jù)的最高位
          SDA=CY;//送數(shù)據(jù)口
          SCL=1;//拉高時(shí)鐘線
          Delay5us();//延時(shí)
          SCL=0;//拉低時(shí)鐘線
          Delay5us();//延時(shí)
          }
          AT24C04_RecvACK();
          } /**************************************
          從IIC總線接收一個(gè)字節(jié)數(shù)據(jù)
          **************************************/
          BYTEAT24C04_RecvByte()
          {
          BYTEi;
          BYTEdat=0; SDA=1;//使能內(nèi)部上拉,準(zhǔn)備讀取數(shù)據(jù)
          for(i=0;i8;i++)//8位計(jì)數(shù)器
          {
          dat=1;
          SCL=1;//拉高時(shí)鐘線
          Delay5us();//延時(shí)
          dat|=SDA;//讀數(shù)據(jù)
          SCL=0;//拉低時(shí)鐘線
          Delay5us();//延時(shí)
          } returndat;
          }


          關(guān)鍵詞: STC12C5A60S2 AT24C04 C程序

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉