找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 981|回复: 0
打印 上一主题 下一主题
收起左侧

eeprom的读写

[复制链接]
跳转到指定楼层
楼主
ID:379985 发表于 2018-7-27 19:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include  "reg51.h"
#include  "intrins.h"
#include  "stdio.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;

# define char unsigned char
#define int unsigned int
sfr WDT_CONTR=0xc1;
sfr IAP_DATA=0xC2;
sfr IAP_ADDRH=0xC3;
sfr IAP_ADDRL=0xC4;
sfr IAP_CMD=0xC5;
sfr IAP_TRIG=0xC6;
sfr IAP_CONTR=0xC7;
sfr AUXR=0x8E;
sfr T2H=0xD6;
sfr T2L=0xD7;

#define  CMD_IDLE 0
#define  CMD_READ 1
#define  CMD_PROGRAM 2
#define  CMD_ERASE 3
#define  ENABLE_IAP 0x83
#define  IAP_ADDRESS 0x0400
sbit  ssa=P3^6;
/*
sbit  sa=P0^0;
sbit  sb=P0^1;
sbit  sc=P0^2;
sbit  sd=P0^3;
sbit  se=P0^4;
sbit  sf=P0^5;
sbit  sg=P0^6;
sbit  sh=P0^7;
sbit  s1=P1^0;
sbit  s2=P1^1;
sbit  s3=P1^2;
sbit  s4=P1^3;
sbit  s5=P1^4;

                  */
char dat,ia,ib,ka,kb,kc,ja,jb,jc,jd,cj,dj;
int  Addr,i,nn,oo,pp;
unsigned long   mm,ma,je,jf,fn,ff0;
float tt0, t0pl,tnpl,tn;
char data  dis[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
char  dis_7[17]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0x0F8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E,0xFF};
char  scan_con[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
char data  sd[5]={0x00,0x00,0x00,0x00,0x00};
char data  hd[9]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

void IapIdle()
   {
         IAP_CONTR=0;
         IAP_CMD=0;
         IAP_TRIG=0;
         IAP_ADDRH=0x80;
         IAP_ADDRL=0;
   }

BYTE  IapReadByte(Addr)                                   //读一字节
  {
       
        IAP_CONTR=ENABLE_IAP;
        IAP_CMD=CMD_READ;
        IAP_ADDRL=Addr;
        IAP_ADDRH=Addr>>8;
        IAP_TRIG=0x5a;
        IAP_TRIG=0xa5;
        _nop_();
        dat=IAP_DATA;
        IapIdle();
        return dat;
  }
void IapProgramByte( Addr, dat)                        //写一字节

   {
         IAP_CONTR=ENABLE_IAP;
         IAP_CMD=CMD_PROGRAM;
         IAP_ADDRL=Addr;
        IAP_ADDRH=Addr>>8;
        IAP_DATA=dat;
        IAP_TRIG=0x5a;
        IAP_TRIG=0xa5;
        _nop_();
        IapIdle();
   }
void IapEraseSector(Addr)                        //扇区擦除
        {
         IAP_CONTR=ENABLE_IAP;
         IAP_CMD=CMD_ERASE;
         IAP_ADDRL=Addr;
        IAP_ADDRH=Addr>>8;       
        IAP_TRIG=0x5a;
        IAP_TRIG=0xa5;
        _nop_();
        IapIdle();

        }

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表