找回密码
 立即注册
查看: 331|回复: 9

关于EEPROM地址打印数据错误问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-17 16:11:00

28

主题

48

回帖

261

积分

中级会员

积分
261
发表于 2024-8-29 09:06:42 | 显示全部楼层 |阅读模式
是这样的,我的全局变量 u8 table 没有赋初值,程序如下,但是打印出来的不是200,是不是哪个环节除啦问题啊大神,我用STC8H的EEPROM 一直没有成功过,头疼!

打印出来是-56

打印出来是-56
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9138

积分

超级版主

DebugLab

积分
9138
发表于 2024-8-29 09:25:27 | 显示全部楼层
有没有startup.a51,如果没有还不初始化,RAM是上电随机数
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9138

积分

超级版主

DebugLab

积分
9138
发表于 2024-8-29 09:26:31 | 显示全部楼层
startup.a51初始化已使用的ram区域,不建议删除
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-16 09:44:50
已绑定手机

14

主题

1312

回帖

3298

积分

论坛元老

积分
3298
发表于 2024-8-29 10:06:42 | 显示全部楼层
Debu*** 发表于 2024-8-29 09:26
startup.a51初始化已使用的ram区域,不建议删除

一般写代码,RAM的使用都是先赋值/写再读,一般不初始化有什么风险呢?

点评

先赋值就没事了,默认为0不赋值就出错  详情 回复 发表于 2024-8-29 10:32
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:444
  • 最近打卡:2025-06-16 09:26:42
已绑定手机

39

主题

2059

回帖

7070

积分

论坛元老

积分
7070
发表于 2024-8-29 10:09:50 | 显示全部楼层
烧录附件的例子到芯片里试试

STC8-EEPROM多字节读写操作-通过串口1输出.zip

8.28 KB, 下载次数: 72

STC8-EEPROM基本操作-P32按键通过串口1输出.zip

9.15 KB, 下载次数: 72

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9138

积分

超级版主

DebugLab

积分
9138
发表于 2024-8-29 10:32:45 | 显示全部楼层
21cns*** 发表于 2024-8-29 10:06
一般写代码,RAM的使用都是先赋值/写再读,一般不初始化有什么风险呢?

先赋值就没事了,默认为0不赋值就出错
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-06-16 09:44:50
已绑定手机

14

主题

1312

回帖

3298

积分

论坛元老

积分
3298
发表于 2024-8-29 11:21:44 | 显示全部楼层
IAP的擦、写、读函数贴出来看看
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-17 16:11:00

28

主题

48

回帖

261

积分

中级会员

积分
261
发表于 2024-8-29 15:23:28 | 显示全部楼层
#include "pbdata.h"



void UART1_Initalize(void);
void TIM0_Initalize(void);
void INIT1_Initalize(void);


void Delay100ms(void);

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

char IapRead(int addr)
{
    char dat;

    IAP_CONTR = 0x80;                           //??IAP
    IAP_TPS = 22;                               //??????12MHz
    IAP_CMD = 1;                                //??IAP???
    IAP_ADDRL = addr;                           //??IAP???
    IAP_ADDRH = addr >> 8;                      //??IAP???
    IAP_TRIG = 0x5a;                            //?????(0x5a)
    IAP_TRIG = 0xa5;                            //?????(0xa5)
    _nop_();
    dat = IAP_DATA;                             //?IAP??
    IapIdle();                                  //??IAP??

    return dat;
}

void IapProgram(int addr, char dat)
       
{
    IAP_CONTR = 0x80;                           //??IAP
    IAP_TPS = 22;                               //??????12MHz
    IAP_CMD = 2;                                //??IAP???
    IAP_ADDRL = addr;                           //??IAP???
    IAP_ADDRH = addr >> 8;                      //??IAP???
    IAP_DATA = dat;                             //?IAP??
    IAP_TRIG = 0x5a;                            //?????(0x5a)
    IAP_TRIG = 0xa5;                            //?????(0xa5)
    _nop_();
    IapIdle();                                  //??IAP??
}

void IapErase(int addr)
{
    IAP_CONTR = 0x80;                           //??IAP
    IAP_TPS = 22;                               //??????12MHz
    IAP_CMD = 3;                                //??IAP????
    IAP_ADDRL = addr;                           //??IAP???
    IAP_ADDRH = addr >> 8;                      //??IAP???
    IAP_TRIG = 0x5a;                            //?????(0x5a)
    IAP_TRIG = 0xa5;                            //?????(0xa5)
    _nop_();                                    //
    IapIdle();                                  //??IAP??
}



u8 table;



void main(void)
       


{
       
   P1M1=0x00;        P1M0=0x00;
         P3M1=0x00;        P3M0=0x00;               
         P5M1=0x00;        P5M0=0x00;
       

       
                 Delay100ms();
                 Delay100ms();
                 Delay100ms();
                 Delay100ms();
               
         UART1_Initalize();
           ADC_Initalize();
                TIM0_Initalize();
                 PWM_Initalize();
         INIT1_Initalize();
       
    IapErase(0x0000);
    IapProgram(0x0000, 200);
    table = IapRead(0x0000);                       //P1
               
       

               

                 

               
                 ADC_Process();
          
       
               
                while(1)
                {
               
                          Delay100ms();
                    Delay100ms();
                                 printf("EEPROMÖµ%bd\n",table );
                                Delay100ms();
                    Delay100ms();
               
               
               
                }

                 
                 
               
               



               



}


/************´®¿Ú1´òÓ¡º¯Êý************/

void UART1_Initalize(void)            //115200bps@22.1184MHz
{
        SCON = 0x50;                              //8λÊý¾Ý£¬¿É±ä²¨ÌØÂÊ
        AUXR |= 0x40;                              //¶¨Ê±Æ÷1ʱÖÓ1Tģʽ
        AUXR &= 0xFE;                        //Ñ¡Ôñ¶¨Ê±Æ÷1Ϊ²¨ÌØÂÊ·¢ÉúÆ÷
        TMOD &= 0x0F;                              //ÉèÖö¨Ê±Æ÷ģʽ
        TL1 = 0xD0;                                     
        TH1 = 0xFF;                       
        ET1 = 0;                                        //¹Ø±Õ¶¨Ê±Æ÷1ÖжÏ
        TR1 = 1;                                        //¿ªÆô¶¨Ê±Æ÷
}

/**********ÖØÐ¶¨Òå***************/

void UART1_SendChar(u8 udata)
{
       
        SBUF=udata;
        while(!TI);
        TI=0;

}


char putchar(char c)
{
        UART1_SendChar(c);
        return c;

}

/****************************¶¨Ê±Æ÷0Òç³öÂÊ*************************/

void TIM0_Initalize(void)                //3΢ÃëÒç³öÂÊ×÷ΪPWMʱÖÓÔ´
{
        AUXR |= 0x80;                        //?????1T??
        TMOD &= 0xF0;                        //???????
        TL0 = 0xea;                                //???????
        TH0 = 0xff;                                //???????
        TF0 = 0;                                //??TF0??
        TR0 = 1;                                //???0????
}


/************************ÍⲿÖжÏ1³õʼ»¯****************************/

void INIT1_Initalize(void)
{

                IT1 = 1;         //ϽµÑØ´¥·¢                           
    EX1 = 1;                                   
     EA = 1;

}

/******************************ÑÓʱº¯Êý****************************/





void Delay100ms(void)        //@22.1184MHz
{
        unsigned char data i, j, k;

        i = 12;
        j = 57;
        k = 122;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

/***************±£»¤ÍⲿÖжÏ1***********************/


void INT1_IRQ_Handler(void) interrupt 2
{
       
    CCAP0L=0;        CCAP0H=0;                                            //Õ¼¿Õ±È¿ØÖÆÎ»,¹Ø±ÕPWM
       
                Level_20=1; Level_40=1;        Level_60=1; Level_80=1; Level_100=1;       //ËùÓÐָʾµÆ¶¼¹Ø±Õ
   
          
}













回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-17 16:11:00

28

主题

48

回帖

261

积分

中级会员

积分
261
发表于 2024-8-29 15:25:28 | 显示全部楼层
    u8 table;

IapErase(0x0000);
    IapProgram(0x0000, 200);
    table = IapRead(0x0000);                       
我给地址0 擦除后 编程 地址0 ,数值为200,然后读取地址0,数值给table 然后打印出来就是-56
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-04-17 16:11:00

28

主题

48

回帖

261

积分

中级会员

积分
261
发表于 2024-8-29 15:41:03 | 显示全部楼层
问题找到啦哈哈
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 18:14 , Processed in 0.212590 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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