在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STC12C5A60S2控制AT24C04 C程序

            STC12C5A60S2控制AT24C04 C程序

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


            評論


            相關推薦

            技術專區(qū)

            關閉