标题: eeprom的读写 [打印本页]

作者: llliiixxx    时间: 2018-7-27 19:12
标题: eeprom的读写
#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();

        }






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1