新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STC89C52內部的EEPROM

        STC89C52內部的EEPROM

        作者: 時間:2016-11-24 來源:網絡 收藏
        STC89C52內部自帶了4K大小的EEPROM,地址是從2000H~2FFFH。寫操作主要是編程和擦除。如果某個字節是“1111,1111B” ,則可將其中的“1”編程為“0” ,如果該字節中有位為“0” ,則須先將整個扇區擦除,因為只有“扇區擦除”才可以將“0”變為“1”。因此我們說,這不是真正意義上的EEPROM,稱之為Data Flash更為合理。

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

        幾個相關的功能寄存器:


        以下是幾個操作函數,供大家參考:

        void ISP_Enable()
        {
        EA_S=EA;
        EA=0;
        ISP_CONTR=0x82;
        }

        void ISP_Disable()
        {
        ISP_CONTR=0;
        ISP_CMD=0;
        ISP_TRIG=0;
        ISP_ADDRH=0xff;
        ISP_ADDRL=0xff;
        EA=EA_S;
        }

        void STC_EEPROM_Erase(uint addr)
        {//擦除
        ISP_ADDRL=addr&0x00ff;
        ISP_ADDRH=addr>>8;
        ISP_Enable();
        ISP_CMD=ISP_ERASE;
        ISP_TRIG=ISP_TRIG0;
        ISP_TRIG=ISP_TRIG1;
        _nop_();
        ISP_Disable();
        }

        void STC_EEPROM_Write(uint addr,uchar dat)
        {
        ISP_DATA=dat;
        ISP_ADDRL=addr&0x00ff;
        ISP_ADDRH=addr>>8;
        ISP_Enable();
        ISP_CMD=ISP_PROGRAM;
        ISP_TRIG=ISP_TRIG0;
        ISP_TRIG=ISP_TRIG1;
        _nop_();
        ISP_Disable();
        }

        uchar STC_EEPROM_Read(uint addr)
        {
        ISP_ADDRL=addr&0x00ff;
        ISP_ADDRH=addr>>8;
        ISP_Enable();
        ISP_CMD=ISP_READ;
        ISP_TRIG=ISP_TRIG0;
        ISP_TRIG=ISP_TRIG1;
        _nop_();
        ISP_Disable();
        return(ISP_DATA);
        }



        關鍵詞: STC89C52EEPRO

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 泾源县| 紫云| 宾阳县| 兴安县| 库车县| 盐边县| 关岭| 泗水县| 云南省| 正定县| 哈巴河县| 定结县| 吕梁市| 安新县| 平谷区| 赤城县| 达拉特旗| 义乌市| 若羌县| 营口市| 昆山市| 清水河县| 稷山县| 阜康市| 芦山县| 宜昌市| 贵德县| 周宁县| 白山市| 唐山市| 韶山市| 镇宁| 绥滨县| 江门市| 定陶县| 呼伦贝尔市| 岳西县| 德钦县| 游戏| 太和县| 罗山县|