在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AT89C51ED2 的EEPROM 讀寫操作總結(jié)

            AT89C51ED2 的EEPROM 讀寫操作總結(jié)

            作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò) 收藏
            今天因?yàn)橐玫紼D2的EEPROM,寫點(diǎn)東西總結(jié)一下,以防日后忘了。

            先引用網(wǎng)上有朋友問(wèn)到的一個(gè)問(wèn)題。

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

            ////////

            哪位高手用過(guò)AT89C51EDEEPROM 保存數(shù)據(jù)

            下面程序?qū)憯?shù)據(jù)到EEPROM:

            #defineEEPROM_VC_ADD 0X0100

            adr =EEPROM_VC_ADD;
            // ACC = c1;
            while(EECON & 0x01);
            EA = 0;
            ACC = 44;
            EECON = 0x02;
            XBYTE[EEPROM_VC_ADD] = ACC;
            // *(unsigned char xdata*)adr = ACC;
            EECON = 0x00;
            EA = 1;

            下面程序讀數(shù)據(jù)從EEPROM:

            while(EECON & 0x01);
            EA = 0;
            EECON = 0x02;
            ACC = XBYTE[EEPROM_VC_ADD+1];
            // ACC = *(unsigned char xdata*)adr;
            EECON = 0x00;
            EA = 1;


            結(jié)果: 讀出的數(shù)據(jù)總是00;

            哪位大俠能賜教。在此先謝了。

            ///////////////////////////////////////////////////////////

            其實(shí)這個(gè)朋友的程序操作步驟是對(duì)。只是出現(xiàn)了一個(gè)小問(wèn)題,在讀EEPROM的時(shí)候,不能將數(shù)據(jù)暫存在ACC中,因?yàn)樵?執(zhí)行 ACC = XBYTE[EEPROM_VC_ADD+1]后,

            EECON=0x00編譯出來(lái)是:

            CLR A

            MOV EECON,A

            也就是ACC已經(jīng)被清零了,所以返回的值永遠(yuǎn)是零。

            下面我的一個(gè)測(cè)試程序。

            #include "REG51xD2.h"
            # include "ABSACC.H"
            unsigned int xdata test1 _at_ 0x500;
            unsigned long xdata test2 _at_ 0x6f0;
            unsigned int test3;
            unsigned long test4;
            unsigned char temp;
            unsigned char w_dat[10]={1,2,3,4,5,6,7,8,9,0};
            unsigned char r_dat[10];
            unsigned char R_EEPROM_BYTE(unsigned int addr)
            {
            bit ea_temp;
            unsigned char dat;
            while((EECON&0x01)!=0);//EEBUSY = 0? 等待
            ea_temp = EA;
            EA=0;
            EECON = 0x02; //EEE=1; 使能EEPROM
            dat = XBYTE[addr]; // Read DATA; //******不能暫存在ACC中。
            EECON= 0x00; // 編譯出來(lái)是 CLR A;MOV EECON,A
            EA=ea_temp;
            return dat; //返回讀出值
            }
            void R_EEPROM_nBYTE(unsigned int saddr,unsigned char num)
            {
            unsigned char i;
            for(i=0;i{
            r_dat[i]=R_EEPROM_BYTE(saddr++);
            }
            }

            void W_EEPROM_BYTE(unsigned int addr ,unsigned char dat)
            {
            bit ea_temp;
            while((EECON&0x01)!=0);
            ea_temp=EA;
            EA = 0;
            EECON = 0x02; // EEE=1;
            XBYTE[addr]=dat;
            EECON = 0x00;
            EA = ea_temp;
            }
            void W_EEPROM_nBYTE (unsigned char num,unsigned int saddr,unsigned char *s )
            {
            unsigned char i;
            for(i=0;i W_EEPROM_BYTE(saddr++,*s++);
            }

            void main()
            {
            while(1)
            {
            AUXR = 0x10;
            test1 = 0x1234;
            test2 = 0x98765432;
            test3=test1;
            test4 =test2;
            test1++;
            test2++;

            W_EEPROM_nBYTE(10,0x0000,w_dat);

            R_EEPROM_nBYTE(0x0000,10);

            }

            }



            關(guān)鍵詞: AT89C51ED2EEPROM讀寫操

            評(píng)論


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

            關(guān)閉