新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機學習——IIC總線及EEPROM實驗之一

        單片機學習——IIC總線及EEPROM實驗之一

        作者: 時間:2016-11-23 來源:網絡 收藏
        題目:簡單的流水燈實驗。用EEPROM實現。

        解決方案:(c語言編程)

        本文引用地址:http://www.104case.com/article/201611/320192.htm

        #include
        #include
        #define uchar unsigned char
        #define uint unsigned int
        uchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
        ,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
        void delay1(uint);
        sbit scl=P3^3;
        sbit sda=P3^4;
        void delay() //短延時子程序
        {
        ;;
        }
        void init()//初使化子程序
        {
        sda=1;
        scl=1;
        }

        void start() //開始子程序
        {
        sda=1;
        delay();
        scl=1;
        delay();
        sda=0;
        delay();
        }

        void stop()
        {
        sda=0;
        delay();
        scl=1;
        delay();
        sda=1;
        delay();
        }
        void write_byte(uchar dat) //寫入字節子程序
        {
        uchar a,temp;
        temp=dat;
        for(a=0;a<8;a++)
        {
        temp=temp<<1;
        scl=0;
        delay();
        sda=CY;
        delay();
        scl=1;
        delay();
        }
        scl=0;
        delay();
        sda=1;
        delay();
        }

        uchar read_byte() //讀出字節子程序
        {
        uchar a,b,c;
        scl=0;
        delay();
        sda=1;
        delay();
        for(a=0;a<8;a++)
        {
        scl=1;
        delay();
        b=sda;
        c=(c<<1)|b;
        scl=0;
        delay();
        }
        return c;
        }

        void respon()//響應子程序
        {
        uchar a;
        scl=1;
        delay();
        while((sda==1)&&(a<100))a++;
        scl=0;
        delay();

        }
        void write(uchar add,uchar dat) //寫入子程序
        {
        start();
        write_byte(0xa0);
        respon();
        write_byte(add);
        respon();
        write_byte(dat);
        respon();
        stop();
        }
        uchar read(uchar add) //讀出子程序
        {
        uchar dat;
        start();
        write_byte(0xa0);
        respon();
        write_byte(add);
        respon();
        start();
        write_byte(0xa1);
        respon();
        dat=read_byte();
        respon();
        stop();
        return dat;
        }
        void main() //main 函數
        {
        uchar i;
        init();
        while(1)
        {
        for(i=0;i<16;i++)
        {
        write(3,table[i]);
        delay1(10);
        P0=read(3);
        }
        }
        }
        void delay1(uint a) { //延時子函數
        uint i,j;
        for(j=a;j>0;j--)
        for(i=2500;i>0;i--) ;
        }



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宁安市| 响水县| 西吉县| 沁阳市| 鄂州市| 桓台县| 陇南市| 柯坪县| 彭州市| 芜湖县| 新宾| 福建省| 临洮县| 武清区| 固原市| 宜黄县| 马尔康县| 凉城县| 嘉黎县| 肃北| 长沙县| 凤山县| 连平县| 潜江市| 钦州市| 郴州市| 蓬溪县| 新兴县| 乐陵市| 蕉岭县| 莒南县| 锡林郭勒盟| 德清县| 昌吉市| 吴川市| 敦化市| 玛纳斯县| 玉树县| 万载县| 大荔县| 新干县|