欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: STC89C52單片機內部EEPROM程序 [打印本頁]

作者: GL510171877    時間: 2020-7-16 18:57
標題: STC89C52單片機內部EEPROM程序
實驗外部存儲期間不方便 看了內部有2K的數據

代碼如下 .C文件可直接移植

#include <STC89C5xRC.H>
#include <intrins.h>
#define Read   0x01                                        //讀指令
#define Write  0x02                                        //寫指令
#define Erase  0x03                                        //擦除指令
#define ENABLE_IAP   0x81                        //速度20Mhz
//操作完成一次之后 進入待機模式 等待下一次命令  無ISP操作
void ISP_IAP_disable(void)   
{   
    ISP_CONTR = 0x00;   
    ISP_CMD = 0x00;   
    ISP_TRIG = 0x00;   
}
//讀一個字節   addr是讀的地址
unsigned char ReadEeProm(unsigned int addr)
{
        unsigned char dat;
        ISP_CONTR = ENABLE_IAP;
        ISP_CMD = Read;
        ISP_ADDRH = (unsigned char)(addr>>8);
        ISP_ADDRL = (unsigned char)addr;
        ISP_TRIG = 0x46;
        ISP_TRIG = 0xB9;
        _nop_();
        ISP_IAP_disable();
        dat = ISP_DATA;
        return dat;
}
//擦除一個扇區的內容 addr擦除扇區的地址
void EraseEeProm(unsigned int addr)
{
        ISP_CONTR = ENABLE_IAP;
        ISP_CMD = Erase;
        ISP_ADDRH = (unsigned char)(addr>>8);
        ISP_ADDRL = (unsigned char)addr;
        ISP_TRIG = 0x46;
        ISP_TRIG = 0xB9;
        _nop_();
        ISP_IAP_disable();
}
//寫一個字節的內容 addr地址 dat待寫入數據
void WriteEeProm(unsigned int addr,unsigned char dat)
{
        //EraseEeProm(addr);    //一個字節需要先擦除這個扇區
        ISP_CONTR = ENABLE_IAP;
        ISP_CMD = Write;
        ISP_ADDRH = (unsigned char)(addr>>8);
        ISP_ADDRL = (unsigned char)addr;
        ISP_DATA = dat;
        ISP_TRIG = 0x46;
        ISP_TRIG = 0xB9;
        _nop_();
        ISP_IAP_disable();
}
//連續讀多個字節 *str存儲讀到數據緩沖區  addr從哪個地址開始讀 len讀多少個字節
void Reading(unsigned char *str,unsigned int addr,unsigned char len)
{
        while(len--)
        {
                *str++ = ReadEeProm(addr++);
        }
}
void ValToString(unsigned char *str,unsigned int dat)
{
        unsigned char len = 0; //計算當前轉換到多少
        unsigned char buf[5];
        do{
                buf[len] = dat%10 + '0';
                dat /=10;
                len++;
        }while(dat>0);
        
        while(len--)
        {
                *str++ = buf[len];
        }
        *str = '\0';
        
}

IMG_3416.JPG (1.59 MB, 下載次數: 64)

IMG_3416.JPG

內部EEPOM.zip

46.64 KB, 下載次數: 135, 下載積分: 黑幣 -5


作者: Jeff_BlindCat    時間: 2020-7-17 22:07
擦除保留經常用,
寄存內外多練習,
深入理解地址義,
寫入讀取無難題。



作者: lujuguo    時間: 2020-8-27 23:38
借程序一用
作者: tieq1952    時間: 2020-8-28 07:33
很好。謝謝分享!!!
作者: xmch    時間: 2021-2-20 17:13
沒有89C52RC.h文件嘛。感謝分享。
作者: cn_zhx    時間: 2021-2-20 17:49
好東西
作者: eb900001    時間: 2021-5-18 17:31
很有用的程序,學習了,感謝!
作者: liyago    時間: 2021-8-28 00:05
謝謝分享,開始學習內部存儲
作者: linfeng729    時間: 2021-11-12 08:45
樓主,請教一下為什么使用內部epprom后 屏幕就通訊不了了





歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1