OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5176|回复: 7

稀奇古怪问题求教!!!!!!!51函数内静态局部变量

[复制链接]

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2020-6-21
在线时间
12 小时
发表于 2020-8-14 19:46:57 | 显示全部楼层 |阅读模式
本帖最后由 sunboy1396 于 2020-8-14 19:57 编辑

a0357f3023021098faf540f233dd01c.png 6057c395448438561f136cbfdc31a62.png 51单片机写了个小程序移位点灯,在显示函数里定义了一个    static unsigned char  ab = 1 初期为1;利用移位去判断哪一位有一点亮哪一位对应的LED,结果仿真ab初值为0,第一轮LED没亮起来程序跑到第二轮函数内部重新赋AB值为1时才亮起来,把AB改为全局变量还是一样,我做了个初始判断   if(ab == 0)  ab = 0x01 ;好了,说明进入函数初值AB=0;没有初始为1;这是为什么

这张是打开if语句后的AB值
a1f050850cd189d10d22a6c3adb7673.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2020-6-21
在线时间
12 小时
 楼主| 发表于 2020-8-14 20:09:21 | 显示全部楼层
回复 支持 反对

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2020-8-16 20:25:15 | 显示全部楼层
我这边仿真直接就是初始化的值了,都不需要运行
回复 支持 反对

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2020-6-21
在线时间
12 小时
 楼主| 发表于 2020-8-16 20:43:05 | 显示全部楼层
本帖最后由 sunboy1396 于 2020-8-16 20:44 编辑

把函数里的 ab改名字,   把i做成全局变量加volatile都试过 还是这样子,搞不清楚了,在声明后面加  if(ab == 0)    ab = 0x01就可了,还是说明 i没有被赋初值
回复 支持 反对

使用道具 举报

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2014-7-2
在线时间
17 小时
发表于 2020-8-17 10:19:38 | 显示全部楼层
局部静态变量是个大坑,建议拉出去
回复 支持 反对

使用道具 举报

3

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2020-6-21
在线时间
12 小时
 楼主| 发表于 2020-8-17 21:43:33 | 显示全部楼层
就是有什么原因的,,关键还是要知道原因在哪里,以后可以避免的,找不出问题才是最大的问题
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2012-4-6
在线时间
15 小时
发表于 2020-8-18 05:06:04 来自手机 | 显示全部楼层
查看一下IDE里的编译环境,我没用过51,记得在CVAVR的编译器里有项设置是初始化时,默认对所有的静态变量清零。
回复 支持 反对

使用道具 举报

0

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
169
金钱
169
注册时间
2015-5-3
在线时间
52 小时
发表于 2020-10-5 13:24:12 | 显示全部楼层
从楼主的说明来看应该是编译时系统认为程序中ab未给出初始化定义值,于是默认定义为0,最大的可能就是void display_data(void)函数中的
#if——#endif条件编译语句造成的,条件编译语句是在编译时就会编译成固定代码,而不会在进入函数后才执行相应语句,试想一下条件编译时调用ab的值时display_data函数还没被编译的话系统肯定会默认ab为0或报错。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 07:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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