打印

这个程序怎么用不了啊!对stc89c54EEPROM操作

[复制链接]
1710|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jack.king|  楼主 | 2008-4-26 20:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这个程序怎么用不了啊!对stc89c54EEPROM操作 

/***********************************************************************/
void ee_write(uchar i,uchar d)     
  {   
      ISP_DATA=d;
      ISP_ADDRH=0xf2;
      ISP_ADDRL=i;
      EA=0;
       ISP_CONTR=1;             //设置时间
      ISP_CONTR=ISP_CONTR|0x80;           //允许ISP操作
            ISP_CMD=0x02;                   //写字节命令
      ISP_TRIG=0x46;                   //ISP触发
      ISP_TRIG=0xb9;
      _nop_();
         ISP_CONTR=0x00;
      ISP_CMD=0x00;
      ISP_TRIG=0x00;
      ISP_ADDRL=0x00;
      EA=1;
  }         
/************************************************************************/
uchar ee_read(uchar ar)    
{   
      ISP_ADDRH=0xf2;         //地址
      ISP_ADDRL=ar;
      EA=0;
      ISP_CONTR=1;             //设置时间
      ISP_CONTR=ISP_CONTR|0x80;           //允许ISP操作
      ISP_CMD=0X01;                   //读字节命令
      ISP_TRIG=0x46;                   //ISP触发
      ISP_TRIG=0xb9;
      _nop_();
      ISP_CONTR=0x00;
      ISP_CMD=0x00;
      ISP_TRIG=0x00;
      ISP_ADDRL=0x00;
      EA=1;       
  return (ISP_DATA);
      }
 
 

相关帖子

沙发
jerkoh| | 2008-4-26 21:26 | 只看该作者

这是我用STC的例子汇编改写的C

这是我用STC的例子汇编改写的C,可以正确读写擦,
还有你在写时擦扇区了没



sfr  ISP_DATA  = 0xe2;       //STC use
sfr  ISP_ADDRH = 0xe3;
sfr  ISP_ADDRL = 0xe4;
sfr  ISP_CMD   = 0xe5;
sfr  ISP_TRIG  = 0xe6;
sfr  ISP_CONTR = 0xe7;

#define  ISP_IAP_BYTE_READ       1
#define  ISP_IAP_BYTE_PROGRAM    2
#define  ISP_IAP_SECTOR_ERASE    3
#define  TIME_WAIT               1   //<40M=0   <20M=1  <10M=2  <5M=3 
#define  OK                      1
/****************************************************************************************
函数功能:STC写EEPROM一字节 
入口参数:写的地址w_addr,写的数据w_data  
返    回:ok
备    注:无 
****************************************************************************************/
uchar StcWriteByte(uint w_addr,uchar w_data)  
{
 
    ISP_DATA    =   w_data;
    ISP_ADDRH    =    (uchar)(w_addr >> 8);
    ISP_ADDRL    =    (uchar)(w_addr & 0x00ff);
    EA=0;
    ISP_CONTR   =   TIME_WAIT;
    ISP_CONTR   =   ISP_CONTR|0X80;
    ISP_CMD     =   ISP_IAP_BYTE_PROGRAM;

    ISP_TRIG    =    0x46;        /* 触发ISP_IAP命令 */
    ISP_TRIG    =    0xb9;        /* 触发ISP_IAP命令 */
    _nop_();
    ISP_CONTR   =0x00;
    ISP_CMD     =0x00;
    ISP_TRIG    =0x00;
    ISP_ADDRH   =0x00;
    ISP_ADDRL   =0x00;
    EA=1;
    return    OK;



}
/****************************************************************************************
函数功能:STC读EEPROM一字节 
入口参数:读的地址r_addr  
返    回:一个读出的uchar
备    注:无 
****************************************************************************************/
uchar StcReadByte(uint r_addr)
{    

    ISP_ADDRH    =    (uchar)(r_addr >> 8);
    ISP_ADDRL    =    (uchar)(r_addr & 0x00ff);
    EA=0;
    ISP_CONTR   =   TIME_WAIT;
    ISP_CONTR   =   ISP_CONTR|0X80;
    ISP_CMD     =   ISP_IAP_BYTE_READ;

    ISP_TRIG    =    0x46;        /* 触发ISP_IAP命令 */
    ISP_TRIG    =    0xb9;        /* 触发ISP_IAP命令 */
    _nop_();

    ISP_CONTR   =0x00;
    ISP_CMD     =0x00;
    ISP_TRIG    =0x00;
    ISP_ADDRH   =0x00;
    ISP_ADDRL   =0x00;
    EA=1;
    return    (ISP_DATA);



}
/****************************************************************************************
函数功能:STC擦除一个512字节扇区 
入口参数:e_addr 扇区地址  
返    回:无 
备    注:无 
****************************************************************************************/
uchar  StcEraseSector(uint e_addr)
{
    ISP_ADDRH    =    (uchar)(e_addr >> 8);
    ISP_ADDRL    =    (uchar)(e_addr & 0x00ff);
    EA=0;
    ISP_CONTR   =   TIME_WAIT;
    ISP_CONTR   =   ISP_CONTR|0X80;
    ISP_CMD     =   ISP_IAP_SECTOR_ERASE;

    ISP_TRIG    =    0x46;        /* 触发ISP_IAP命令 */
    ISP_TRIG    =    0xb9;        /* 触发ISP_IAP命令 */
    _nop_();

    ISP_CONTR   =0x00;
    ISP_CMD     =0x00;
    ISP_TRIG    =0x00;
    ISP_ADDRH   =0x00;
    ISP_ADDRL   =0x00;
    EA=1;
    return    OK;


}
/*****************************************************************************************

使用特权

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

本版积分规则

488

主题

2158

帖子

1

粉丝