• STC单片机EEPROM读写


     
    //**************************************************************** 
    //  STC单片机EEPROM读写--最简洁的的拿来就用保证没错^_^简洁至上! 
    //---------------------------------------------------------------- 
    
    //--------------------------------//-------------------------------- 
    //注意:以下为STC89系列的地址 
    //--------------------------------//-------------------------------- 
    
    sfr isp_data  = 0xe2;//ISP/IAP操作时的数据寄存器 
    sfr isp_addrh = 0xe3;//高地址 
    sfr isp_addrl = 0xe4;//低地址 
    sfr isp_cmd   = 0xe5;//命令模式寄存器 
    sfr isp_trig  = 0xe6;//命令触发寄存器 
    sfr isp_contr = 0xe7;//ISP/IAP控制寄存器 
    */ 
    /* 
    //--------------------------------//-------------------------------- 
    //注意:以下为1T新STC系列的地址 
    //--------------------------------//-------------------------------- 
    sfr isp_data  = 0xc2;//ISP/IAP操作时的数据寄存器 
    sfr isp_addrh = 0xc3;//高地址 
    sfr isp_addrl = 0xc4;//低地址 
    sfr isp_cmd   = 0xc5;//命令模式寄存器 
    sfr isp_trig  = 0xc6;//命令触发寄存器 
    sfr isp_contr = 0xc7;//ISP_IAP控制寄存器 
    
    //---------------------------------------------------------------- 
    uchar eeprom_read(uint addres);// 
    void  eeprom_write(uint address,uchar wdata);// 
    void  eeprom_eares(uint addres);//扇区擦除 
    //**************************************************************** 
    //  扇区擦除 
    //---------------------------------------------------------------- 
    void eeprom_eares(uint addres) 
    {      
        uchar i; 
         
        isp_addrl=addres;     //低位地址 
        isp_addrh=addres>>8;  //高位地址 
        isp_contr=0x01;  
        isp_contr=isp_contr|0x80; //设时间与充ISP操作。 
        isp_cmd=0x03;         //扇区命命令 
        isp_trig=0x46;        //触发 
        isp_trig=0xb9;        //触发启动。 
        for(i=0;i<3;i++) 
            ; 
        isp_addrl=0xff; 
        isp_addrh=0xff; 
        isp_contr=0x00; 
        isp_cmd=0x00; 
        isp_trig=0x00;  
    } 
    //**************************************************************** 
    //  读数据 
    //---------------------------------------------------------------- 
    unsigned char eeprom_read(unsigned int addres) 
    { 
        unsigned char i,z; 
         
        isp_addrl=addres;     //低位地址 
        isp_addrh=addres>>8;  //高位地址 
        isp_contr=0x01;  
        isp_contr=isp_contr|0x80; //设时间与充ISP操作。 
        isp_cmd=0x01;         //写命令 
        isp_trig=0x46;        //触发 
        isp_trig=0xb9;        //触发启动。 
        for(i=0;i<3;i++) 
            ; 
        isp_addrl=0xff; 
        isp_addrh=0xff; 
        isp_contr=0x00; 
        isp_cmd=0x00; 
        isp_trig=0x00; 
        z=isp_data; 
         
        return(z);         
    } 
    //**************************************************************** 
    //  写数据 
    //---------------------------------------------------------------- 
    void eeprom_write(unsigned int addres,unsigned char write_data) 
    { 
        unsigned char i; 
         
        isp_data=write_data;  //要写入的数据。 
        isp_addrl=addres;     //低位地址 
        isp_addrh=addres>>8;  //高位地址 
        isp_contr=0x01;  
        isp_contr=isp_contr|0x80; //设时间与充ISP操作。 
        isp_cmd=0x02;         //写命令 
        isp_trig=0x46;        //触发 
        isp_trig=0xb9;        //触发启动。 
        for(i=0;i<3;i++) 
            ; 
        isp_addrl=0xff; 
        isp_addrh=0xff; 
        isp_contr=0x00; 
        isp_cmd=0x00; 
        isp_trig=0x00;   
    } 

  • 相关阅读:
    由 Rest参数 和 Spread扩展运算符想到的...
    输出数组重复项
    echarts 踩坑记
    es6 Promise.all() 和 Promise.race() 区别
    关于Promise.all
    移动端弹出层平滑滚动和fix定位的冲突
    ES6 数组和字符串
    IE9以下 placeholder兼容
    jQuery设置聚焦并使光标位置在文字最后
    处理GitHub不允许上传大于100M文件问题
  • 原文地址:https://www.cnblogs.com/pulan/p/2921619.html
Copyright © 2020-2023  润新知