打印

STC89C51内部FLASH

[复制链接]
1653|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wlc824136|  楼主 | 2014-9-6 08:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
sfr  ISP_DATA   =   0xe2;       //ISP数据寄存器        Bit7    Bit6    Bit5    Bit4    Bit3    Bit2    Bit1    Bit0
                                //初始值=1111,1111      1       1       1       1       1       1       1       1

/////////////////////////////////

sfr  ISP_ADDRH  =   0xe3;       //ISP地址高位寄存器    Bit7    Bit6    Bit5    Bit4    Bit3    Bit2    Bit1    Bit0
                                //初始值=0000,0000      0       0       0       0       0       0       0       0

/////////////////////////////////

sfr  ISP_ADDRL  =   0xe4;       //ISP地址低位寄存器    Bit7    Bit6    Bit5    Bit4    Bit3    Bit2    Bit1    Bit0
                                //初始值=0000,0000      0       0       0       0       0       0       0       0

/////////////////////////////////

sfr  ISP_CMD    =   0xe5;       //ISP命令寄存器        Bit7    Bit6    Bit5    Bit4    Bit3    Bit2    Bit1    Bit0
                                //初始值=xxxx,xx00      x       x       x       x       x       0       0       0

#define ISP_IDLE    0x00        //ISP待机命令
#define ISP_READ    0x01        //ISP读字节数据命令
#define ISP_PROGRAM 0x02        //ISP字节编程命令
#define ISP_ERASE   0x03        //ISP扇区擦除命令(每扇区字节))

/////////////////////////////////

sfr  ISP_TRIG   =   0xe6;       //ISP命令触发寄存器    Bit7    Bit6    Bit5    Bit4    Bit3    Bit2    Bit1    Bit0
                                //初始值=xxxx,xxxx      x       x       x       x       x       x       x       x

#define ISP_TRIG0   0x46        //ISP功能触发命令
#define ISP_TRIG1   0xb9        //ISP功能触发命令

/////////////////////////////////

sfr  ISP_CONTR  =   0xe7;       //ISP控制寄存器        Bit7    Bit6    Bit5    Bit4    Bit3    Bit2    Bit1    Bit0
                                //位描述               ISPEN   SWBS    SWRST   -       -       WT2     WT1     WT0
                                //初始值=000x,x000      0       0       0       x       x       0       0       0

#define ISPEN       0x80        //ISP使能开关
#define SWBS        0x40        //软启动选择,0:从用户AP启动1:从ISP启动
#define SWRST       0x20        //触发软件复位
void isp_safe()
        {
                ISP_ADDRH=0X20;
                ISP_ADDRL=0X00;
                ISP_CMD=0X00;
                ISP_TRIG=0X00;
                ISP_CONTR=0X00;
        }
void write_i2c(uchar x,uchar z)
{
  ISP_DATA=z;//数据送ISP
  ISP_ADDRL=x&0x00ff;//送低位ISP地址/
  ISP_ADDRH=x>>8;//STC89C51的ISP地址,STC89C51的I2C地址在2000H单元开始的/
  ISP_CONTR=0x81;//充许ISP有效////设置响应时间,20M为1,6M以下是4/
  ISP_CMD=ISP_PROGRAM;//操作模式为写操作
  EA=0;
  ISP_TRIG=0x46;//发送命令字//
  ISP_TRIG=0xb9;//发送执行命令字,发送完执行,执行完后程序才继续//
  EA=1;
  isp_safe();
}

uchar read_i2c(uchar x)
{
  uchar z;
  ISP_ADDRL=x&0x00ff;//送低位ISP地址
  ISP_ADDRH=x>>8;//送高位ISP地址,STC89C51的I2C地址在2000H单元开始的!
  ISP_CONTR=0X81;//充许ISP有效//设置响应时间,20M为1,6M以下是4
  ISP_CMD=ISP_READ;//操作模式为读操作
  EA=0;
  ISP_TRIG=0x46;//发送命令字
  ISP_TRIG=0xb9;//发送执行命令字,发送完执行,执行完后程序才继续
  EA=1;
  z=ISP_DATA;//数据送ISP
  isp_safe();
  return(z);
}

void clear_i2c(uchar x)
{
  ISP_ADDRL=x&0x00ff;//送低位ISP地址
  ISP_ADDRH=x>>8;//送高位ISP地址,STC89C51的I2C地址在2000H单元开始的!
  ISP_CONTR=0X81;//充许ISP有效 //设置响应时间,20M为1,6M以下是4
  ISP_CMD=ISP_ERASE;//操作模式为擦除操作
  EA=0;
  ISP_TRIG=0x46;//发送命令字
  ISP_TRIG=0xb9;//发送执行命令字,发送完执行,执行完后程序才继续
  EA=1;
  isp_safe();
  
}
void main()
{
  clear_i2c(0x2000);
  clear_i2c(0x2200);
  write_i2c(0x2000,50);
  write_i2c(0x2200,30);
  read_i2c(0x2000);
  read_i2c(0x2200);
}
这样读出来为什么是两个30
如果将主程序的write_i2c(0x2200,30)和read_i2c(0x2000)位置对调就能读出50和30

相关帖子

沙发
wangch_sh| | 2014-9-6 08:50 | 只看该作者
void isp_safe()
这个没调用

使用特权

评论回复
板凳
wlc824136|  楼主 | 2014-9-6 08:57 | 只看该作者
wangch_sh 发表于 2014-9-6 08:50
void isp_safe()
这个没调用

这个不是在子程序里调用了吗,主程序还要调用?在哪里调用,能说说吗

使用特权

评论回复
地板
ningling_21| | 2014-9-6 09:20 | 只看该作者
wlc824136 发表于 2014-9-6 08:57
这个不是在子程序里调用了吗,主程序还要调用?在哪里调用,能说说吗

void clear_i2c(uchar x)

这里的参数 x 能使用0X2000这样的数吗?
其它的也是一样

使用特权

评论回复
5
wlc824136|  楼主 | 2014-9-6 11:54 | 只看该作者
ningling_21 发表于 2014-9-6 09:20
void clear_i2c(uchar x)

这里的参数 x 能使用0X2000这样的数吗?

果然,改了就好了,谢了!!

使用特权

评论回复
6
wangch_sh| | 2014-9-6 14:06 | 只看该作者
没看清楚,不好意思。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

58

帖子

0

粉丝