在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > STC單片機(jī)EEPROM功能模塊

            STC單片機(jī)EEPROM功能模塊

            作者: 時(shí)間:2016-11-23 來源:網(wǎng)絡(luò) 收藏
            // STC單片機(jī)EEPROM功能模塊

            #include
            #include

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

            // 聲明與IAP相關(guān)的SFR
            sfr IAP_DATA = 0xE2;
            sfr IAP_ADDRH = 0xE3;
            sfr IAP_ADDRL = 0xE4;
            sfr IAP_CMD = 0xE5;
            sfr IAP_TRIG = 0xE6;
            sfr IAP_CONTR = 0xE7;

            // 定義ISP/IAP/EEPROM命令
            #define CMD_IDLE 0
            #define CMD_READ 1
            #define CMD_PROGRAM 2
            #define CMD_ERASE 3

            // 定義IAP_CONTR的值ENABLE_IAP,根據(jù)時(shí)鐘頻率有所不同
            //#define ENABLE_IAP 0x80 // 時(shí)鐘頻率<30MHz
            //#define ENABLE_IAP 0x81 // 時(shí)鐘頻率<24MHz
            //#define ENABLE_IAP 0x82 // 時(shí)鐘頻率<20MHz
            #define ENABLE_IAP 0x83 // 時(shí)鐘頻率<12MHz
            //#define ENABLE_IAP 0x84 // 時(shí)鐘頻率<6MHz
            //#define ENABLE_IAP 0x85 // 時(shí)鐘頻率<3MHz
            //#define ENABLE_IAP 0x86 // 時(shí)鐘頻率<2MHz
            //#define ENABLE_IAP 0x87 // 時(shí)鐘頻率<1MHz

            // EEPROM數(shù)據(jù)保存的首地址
            #define IAP_ADDRESS 0x0800 // 應(yīng)跳過程序所占空間的位置

            // 禁止ISP/IAP/EEPROM功能
            void IapIdle()
            {
            IAP_CONTR = 0;
            IAP_CMD = 0;
            IAP_TRIG = 0;
            IAP_ADDRH = 0;
            IAP_ADDRL = 0;
            }

            // 從EEPROM中讀一個(gè)字節(jié)
            BYTE IapReadByte(WORD addr)
            {
            BYTE dat;

            IAP_CONTR = ENABLE_IAP;
            IAP_CMD = CMD_READ;
            IAP_ADDRL = addr;
            IAP_ADDRH = addr >> 8;
            // 注意對(duì)于STC12C2052(AD)單片機(jī),應(yīng)先寫入0x46,再寫入0xb9
            // 而對(duì)于STC12C5A60S2單片機(jī),應(yīng)先寫入0x5a,再寫入0xa5
            IAP_TRIG = 0x46;
            IAP_TRIG = 0xb9;
            _nop_();

            dat = IAP_DATA;
            IapIdle();

            return (dat);
            }

            // 寫一個(gè)字節(jié)到EEPROM
            void IapProgramByte(WORD addr, BYTE dat)
            {
            IAP_CONTR = ENABLE_IAP;
            IAP_CMD = CMD_PROGRAM;
            IAP_ADDRL = addr;
            IAP_ADDRH = addr >> 8;
            IAP_DATA = dat;
            IAP_TRIG = 0x46;
            IAP_TRIG = 0xb9;
            _nop_();

            IapIdle();
            }

            // 擦除EEPROM中的一個(gè)扇區(qū)
            void IapEraseSector(WORD addr)
            {
            IAP_CONTR = ENABLE_IAP;
            IAP_CMD = CMD_ERASE;
            IAP_ADDRL = addr;
            IAP_ADDRH = addr >> 8;
            IAP_TRIG = 0x46;
            IAP_TRIG = 0xb9;
            _nop_();

            IapIdle();
            }




            評(píng)論


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

            關(guān)閉