在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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) > 設(shè)計(jì)應(yīng)用 > 淺談單片機(jī)c語言模塊化編程-附ds1302時(shí)鐘芯片驅(qū)動(dòng)程序

            淺談單片機(jī)c語言模塊化編程-附ds1302時(shí)鐘芯片驅(qū)動(dòng)程序

            作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
            單片機(jī)c語言編程中,模塊化編程顯得非常重要。我覺得,模塊化恰恰體現(xiàn)了c語言很好的可移植性。嵌入式編程中,硬件模塊區(qū)分非常明顯,所以驅(qū)動(dòng)程序用模塊化編程顯得十分方便簡(jiǎn)潔。
            報(bào)錯(cuò)原因,修改了不能修改的變量。

            本文引用地址:http://www.biyoush.com/article/201611/318723.htm

            C51中為了節(jié)省ram資源,數(shù)組用code定義在rom中,這樣定義數(shù)組就不能重新賦值。

            自己對(duì)著例程一條一條的看。真心表示沒有發(fā)現(xiàn)錯(cuò)誤。最后把函數(shù)一個(gè)一個(gè)替換成例程中的。最終確定在ds1302_write_byte中。發(fā)現(xiàn)了一個(gè)很奇特的事情。錯(cuò)誤是因?yàn)閒ou循環(huán),我用for(i=0;i<8;i++)替換成為for(i=8;i>0;i--)解決了問題。

            extern可以置于變量或者函數(shù)前,以表示變量或者函數(shù)的定義在別的文件中,提示編譯器遇到此變量和函數(shù)時(shí)在其他模塊中尋找其定義。另外,extern也可用來進(jìn)行鏈接指定。

            使用模塊化編程的時(shí)候,在.h里聲明了數(shù)組。.c文件直接使用數(shù)組,在連接時(shí)會(huì)出現(xiàn)錯(cuò)誤multiple public definition。

            在.h文件用extren聲明數(shù)組,在.c文件聲明賦值。錯(cuò)誤解決。

            附ds1302時(shí)鐘芯片驅(qū)動(dòng)程序

            void ds1302_write_byte(unsigned char d)
            {

            unsigned char i;
            ACC=d;
            for(i=0;i<8;i++)//改成i=0;i<8;沒有現(xiàn)象。。為嘛呀。。。
            {
            io=ACC0;
            //delayus(1);
            sck=1;
            //delayus(1);
            sck=0;
            ACC=ACC>>1;
            }
            }

            void ds1302_write(uchar ad,uchar dat)
            {
            rst=0;
            sck=0;
            rst=1;
            //delayus(1);
            ds1302_write_byte(ad);
            ds1302_write_byte(dat);
            sck=1;
            rst=0;
            }
            unsigned char ds1302_read_byte()
            {

            unsigned char i;
            for(i=0;i<8;i++)
            {
            ACC=ACC>>1;
            ACC7 =io;
            sck=1;
            //delayus(1);
            sck=0;
            //delayus(1);
            }
            return (ACC);

            }
            unsigned char ds1302_read(unsigned char add)
            {
            unsigned char ucdat;
            rst=0;
            sck=0;
            rst=1;
            //delayus(1);
            ds1302_write_byte(add);
            ucdat=ds1302_read_byte();
            sck=1;
            rst=0;
            return ucdat;
            }


            void ds1302_init()
            {

            ds1302_write(0x8E,0x00);

            }




            評(píng)論


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

            關(guān)閉