專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

STC單片機(jī)內(nèi)部EEPROM程序

作者:liumei   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年03月31日   【字體:

#include <reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
 
sfr ISP_DATA  = 0x00E2;    //EEPORM數(shù)據(jù)寄存器
sfr ISP_ADDRH = 0x00E3;    //地址寄存器高八位
sfr ISP_ADDRL = 0x00E4;    // 地址寄存器低八位
sfr ISP_CMD   = 0x00E5;    //EEPORM命令寄存器
sfr ISP_TRIG  = 0x00E6;    //EEPROM(ISP/IAP) 命令觸發(fā)寄存器
sfr ISP_CONTR = 0x00E7;    //(ISP/IAP)控制寄存器
 
/********打開(kāi)ISP,IAP功能********/
void ISP_IAP_enable(void)
{
  //  EA=0;
      ISP_CONTR |= 0X18;
      ISP_CONTR |= 0X00;
      ISP_CONTR |= 0X80;
}
/********關(guān)閉ISP,IAP功能********/
void ISP_IAP_disable(void)
{
      ISP_CONTR &= 0X7f;
      ISP_TRIG   = 0X00;
  //  EA=1; 
}
/********公用的觸發(fā)代碼*********/
void ISPgoon(void)
{
      ISP_IAP_enable();
      ISP_TRIG = 0X46;
      ISP_TRIG = 0Xb9;
      _nop_();_nop_();
}
/*******讀字節(jié)*****************/
uchar byte_read(uint byte_adder)
{
      ISP_ADDRH = (uchar)(byte_adder>>8);
      ISP_ADDRL = (uchar)(byte_adder & 0x00ff);
      ISP_CMD   = ISP_CMD & 0xf8;
      ISP_CMD   = ISP_CMD | 0X01;
      ISPgoon();
      ISP_IAP_disable();
      return(ISP_DATA);
}
/********擦除扇區(qū)*************/
void SectorErase(uint sector_adder)
{
      static uint iSector;
      iSector     = sector_adder & 0xfe00;
      ISP_ADDRH   = (uchar)(iSector>>8);
      ISP_ADDRL   = 0X00;
      ISP_CMD    &= 0XF8;
      ISP_CMD    |= 0X03;
      ISPgoon();
      ISP_IAP_disable();
}
/***********寫字節(jié)***********/
void byte_write(uint byte_adder,uchar orginal_data)
{
      ISP_ADDRH    =  (uchar)(byte_adder>>8);
      ISP_ADDRL    =  (uchar)(byte_adder & 0X00FF);
      ISP_CMD     &= 0xf8;
      ISP_CMD     |= 0x02;
      ISP_DATA     =  orginal_data;
      ISPgoon();
      ISP_IAP_disable();
}

關(guān)閉窗口

相關(guān)文章