• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > AT24C02開機記憶

    AT24C02開機記憶

    作者: 時間:2012-08-18 來源:網絡 收藏
    //************************************
    /*
    程序功能:記憶開機的次數,并顯示在
    */
    //************************************

    #includereg52.h>
    #define uint unsigned int
    #define uchar unsigned char
    uchar code num[]={0x80,0xed,0x42,0x48,0x2c,0x18,0x10,0xcc,0x00,0x08};
    //****管腳定義****
    sbit scl=P0^3;//艾方西的數據線
    sbit sda=P0^4;//艾方西的時鐘線

    sbit rck=P2^0;
    sbit sck=P2^1;
    sbit si=P2^2; //的串行數據輸入端

    sbit key1=P1^0;
    //====函數的聲明=====
    void delayus();//微秒級延時函數
    void delayms();//毫秒級延時函數
    void start();//起始函數
    void stop();//終止函數
    void ack();//應答函數
    void noack();//非應答函數
    void write_byte(uchar date);//寫字節函數
    uchar read_byte();//讀字節函數
    void xie(uchar add,uchar date);//寫操作函數
    uchar du(uchar add);//讀操作函數
    void write_595(uchar date);//
    void smg_595(uint j,uint i);
    //************************************
    void delayus()
    {
    ; ; ;
    }
    /*void delayms(uint time)
    {
    uint i,j;
    for(i=time;i>0;i--)
    for(j=110;j>0;j--);
    } */
    void start()
    {
    sda=1;
    delayus();
    scl=1;//時鐘線在高電平期間,數據線由高到底的跳變表示起始
    delayus();
    sda=0;
    delayus();
    }
    void stop()
    {
    sda=0;
    delayus();
    scl=1; //時鐘線在高電平期間,數據線由底到高的跳變表示終止
    delayus();
    sda=1;
    delayus();
    }
    void ack()
    {
    uint i=0;
    scl=1;
    if((sda==1)(i250))i++;
    scl=0;
    delayus();
    }
    void noack()
    {
    sda=1;
    delayus();
    scl=0;
    delayus();
    scl=1;
    delayus();
    scl=0;
    }
    void write_byte(uchar date)
    {
    uint i;
    scl=0;
    for(i=0;i8;i++)
    {
    if(date0x80)
    {
    sda=1;
    }
    else
    {
    sda=0;
    }
    scl=1;
    date=date1;
    delayus();
    scl=0;
    sda=1;
    delayus();
    }
    sda=1;
    delayus();
    }
    uchar read_byte()
    {
    uint i;
    uchar date=0x00;
    sda=1;
    delayus();
    scl=0;
    delayus();
    for(i=0;i8;i++)
    {
    scl=1;
    delayus();
    date=date1;
    if(sda)
    {
    date++;
    }

    scl=0;
    delayus();
    }

    return date;
    }
    void xie(uchar add,uchar date)
    {
    start();
    write_byte(0xa0);
    ack();
    write_byte(add);
    ack();
    write_byte(date);
    ack();
    stop();
    }
    uchar du(uchar add)
    {
    uchar k;
    start();
    write_byte(0xa0);
    ack();
    write_byte(add);
    ack();

    start();
    write_byte(0xa1);
    ack();
    k=read_byte();
    noack();
    stop();
    return k;
    }
    void chushihua()
    {
    sda=1;
    scl=1;
    }
    void main()
    {
    uchar k=0;
    k=du(7);
    k=k%10;
    smg_595(k,k);
    k++;
    xie(7,k);
    while(1);
    }
    void smg_595(uint j,uint i)
    {
    write_595(num[i]);
    write_595(num[j]);
    rck=0;
    rck=1;
    }
    void write_595(uchar date)
    {
    uint i;
    for(i=0;i8;i++)
    {
    date>>=1;
    sck=0;
    si=CY;
    sck=1;
    }
    }


    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 辉南县| 清水县| 襄汾县| 右玉县| 辉县市| 益阳市| 屏东市| 扎兰屯市| 崇明县| 横峰县| 武川县| 徐州市| 江孜县| 禹城市| 榆中县| 普洱| 鄂托克前旗| 普洱| 磴口县| 洛阳市| 永修县| 泰安市| 栾川县| 中方县| 莱州市| 容城县| 鄢陵县| 双辽市| 武川县| 贺州市| 普陀区| 栖霞市| 县级市| 搜索| 高清| 木里| 丹凤县| 中西区| 剑川县| 普格县| 海南省|