找回密码
 立即注册
楼主: Rex_D8sA0

STC8G1K08A Keil5所有变量都成了随机数

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:709
  • 最近打卡:2026-04-30 16:15:32

6

主题

327

回帖

3061

积分

论坛元老

积分
3061
发表于 2026-4-10 21:24:58 | 显示全部楼层
看看是否有数组越界,之前我也出现过这种情况,后来发现是数组越界了。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-13 09:43:31

1

主题

19

回帖

51

积分

注册会员

积分
51
发表于 2026-4-11 08:19:09 | 显示全部楼层
宁阳*** 发表于 2026-4-10 21:24
看看是否有数组越界,之前我也出现过这种情况,后来发现是数组越界了。

只是初始化时候赋值,还没进入main函数。变量默认就是被分配在xdata区域,xdata区域的变量出现u32赋值就会出现问题。idata和data区域就是正常的

第一步:debug第一步

第一步:debug第一步

第二步:初始化赋值操作一

第二步:初始化赋值操作一

第三步:初始化赋值完成,变成随机数

第三步:初始化赋值完成,变成随机数
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-13 09:43:31

1

主题

19

回帖

51

积分

注册会员

积分
51
发表于 2026-4-11 08:20:15 | 显示全部楼层
_奶*** 发表于 2026-4-10 09:27
所以你出现问题的测试工程呢?

请看最新的下面回复,谢谢。有截图,最最简单的赋值操作代码,截图说的明白些
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:709
  • 最近打卡:2026-04-30 16:15:32

6

主题

327

回帖

3061

积分

论坛元老

积分
3061
发表于 2026-4-11 22:52:41 | 显示全部楼层
Rex_D*** 发表于 2026-4-11 08:19
只是初始化时候赋值,还没进入main函数。变量默认就是被分配在xdata区域,xdata区域的变量出现u32赋值就 ...

看看汇编语言两个数据是否地址有重叠的地方
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:709
  • 最近打卡:2026-04-30 16:15:32

6

主题

327

回帖

3061

积分

论坛元老

积分
3061
发表于 2026-4-11 22:54:04 | 显示全部楼层
Rex_D*** 发表于 2026-4-11 08:19
只是初始化时候赋值,还没进入main函数。变量默认就是被分配在xdata区域,xdata区域的变量出现u32赋值就 ...

能把程序发出来一下吗,便于分析
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-13 09:43:31

1

主题

19

回帖

51

积分

注册会员

积分
51
发表于 2026-4-12 19:24:18 | 显示全部楼层
宁阳*** 发表于 2026-4-11 22:54
能把程序发出来一下吗,便于分析
  1. xdata unsigned char a = 1;
  2. xdata unsigned int b = 2;
  3. xdata unsigned long x = 0; // 只要加这个
  4. //========================================================================
  5. // 函数: void        main(void)
  6. // 描述: 主函数程序.
  7. // 参数: None.
  8. // 返回: None.
  9. //========================================================================
  10. void main(void)
  11. {
  12.         a = 0xf0;
  13.     b = 0x0f0f;
  14.     x = 0xffeeffee;    // 只要执行这句,前面两个变量就会变为随机值
  15.         while(1);
  16. }
复制代码
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-13 09:43:31

1

主题

19

回帖

51

积分

注册会员

积分
51
发表于 2026-4-12 19:26:19 | 显示全部楼层

1、程序初始化赋值a=1,b=2,x=0,debug显示不成功,都是随机数;
2、程序执行 a=0xf0,成功;程序执行b=0x0f0f,未赋值成功;程序执行x=0xffeeffee,a变成随机数,x未赋值成功,依然是随机数;
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:5
  • 最近打卡:2026-04-13 09:43:31

1

主题

19

回帖

51

积分

注册会员

积分
51
发表于 2026-4-12 19:39:47 | 显示全部楼层
Rex_D*** 发表于 2026-4-12 19:26
1、程序初始化赋值a=1,b=2,x=0,debug显示不成功,都是随机数;
2、程序执行 a=0xf0,成功;程序执行b= ...

将a,b,x定义到idata或data区域,而非xdata区域,debug显示:初始化值和赋值操作完全正确;

费解了,换了几个单片机,都是这种情况

点评

不要用b,b有特殊含义 [attachimg]135699[/attachimg] [attachimg]135700[/attachimg] [attachimg]135701[/attachimg]  详情 回复 发表于 2026-4-12 21:57
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:521
  • 最近打卡:2026-04-30 08:53:57
已绑定手机

106

主题

4345

回帖

9748

积分

荣誉版主

无情的代码机器

积分
9748
发表于 2026-4-12 21:57:43 | 显示全部楼层
Rex_D*** 发表于 2026-4-12 19:39
将a,b,x定义到idata或data区域,而非xdata区域,debug显示:初始化值和赋值操作完全正确;

费解了,换 ...


不要用b,b有特殊含义
截图202604122156409185.jpg


截图202604122157116103.jpg

截图202604122157371401.jpg
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2026-04-13 00:23:22

0

主题

1

回帖

32

积分

新手上路

积分
32
发表于 2026-4-13 00:23:22 | 显示全部楼层
erci*** 发表于 2026-4-12 21:57
不要用b,b有特殊含义

C语言不是应该区分大小写的吗
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-5-1 12:00 , Processed in 0.140347 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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