标题:
51单片机会不会因为定义太多变量导致无法运行呢
[打印本页]
作者:
啊哦额一乌
时间:
2019-3-18 00:43
标题:
51单片机会不会因为定义太多变量导致无法运行呢
51单片机会不会因为 定义太多东西 而导致无法运行呢?? 如果有。这么办???
作者:
凌净清河
时间:
2019-3-18 07:41
不严格的说,只要你的变量总数不超过单片机的RAM范围,就没有什么影响。否则只能换用较大RAM的型号或者优化代码。
作者:
devcang
时间:
2019-3-18 07:44
肯定会的,,,精简程序、精简逻辑
作者:
HC6800-ES-V2.0
时间:
2019-3-18 07:54
如果定义变量太多而无法运行的话,程序在编译时就会提示、报错了,不会让程序在执行过程中出问题。如果 报错了,可以增加内存(外挂)的方法修改,或者选用RAM大的芯片。
作者:
w2009118161
时间:
2019-3-18 08:33
可以在变量或者数组前加一个code标志位,将变量存储位置由ram转为flash中。
作者:
xuyaqi
时间:
2019-3-18 08:42
如果定义太多东西,超过了内存容量,就会导致无法运行,那就要优化,不要定义太多东西。要不就换内存大的单片机。
作者:
momo0527
时间:
2019-3-18 09:24
不会哦
作者:
xiaob123
时间:
2019-3-18 09:53
精炼是比较好的
作者:
hhh402
时间:
2019-3-18 11:21
如果变量多要加关键字xdata,如:u8 xdata cs[512]; 不加编译会报错,如果编译能够通过一般没有问题,我的程序有2千个变量都没有问题,STC8单片机,4k内存。
作者:
seasonLin
时间:
2019-3-18 13:58
变量数量要小于单片机的RAM最大值,除此外还必须留有一定空闲的RAM空间给堆栈使用,否则可能造成堆栈溢出,程序跑飞。
作者:
seasonLin
时间:
2019-3-18 14:11
seasonLin 发表于 2019-3-18 13:58
变量数量要小于单片机的RAM最大值,除此外还必须留有一定空闲的RAM空间给堆栈使用,否则可能造成堆栈溢出, ...
如果RAM空间内存不够,可以尝试以下方法:
1. 能用局部变量,就不用全局变量。
2. 函数嵌套不要过多(嵌套过多会浪费部分RAM)
3. 能用const类型的常量,就不用全局变量或者局部变量
4. 用部分flash替代RAM使用,仅适用于变量修改频率超低的情况下,想想flash写寿命,就知道当前产品合不合适使用该方式了。
作者:
zzfwhlltz
时间:
2019-3-18 14:25
单片机也是有一定内存的 如果超出内存范围 肯定是不行的
作者:
小燕子@啦啦
时间:
2019-3-18 14:30
我之前也遇到过这样的问题,解决办法有两种:一是优化代码,减少全局变量的定义,可以用指针替代;另外一种就是增加辅助存储器,这样也是可以解决的。
作者:
基尔梆硬
时间:
2019-3-18 17:49
1 单片机一个引脚有多个功能是不会引起混乱的 因为它们是分时使用的
或使用了这个功能 就不允许使用另一种功能了。
2 例如:
单片机的P0口的8 个引脚 即作为低8位地址总线 又作为8位数据总线
它们不会发生冲突 在ALE为低电平时,P0口的8 个引脚作为低8位地址总线
当ALE为高电平时,P0口的8 个引脚作为8位数据总线使用。
是分时使用的 即不同的时间做为不同的引脚使用 所以在使用上是不会发生冲突
还有 当P3.0和P3.1作为串口的数据输入输出线使用时,就不能作为一般I/O口使用了。
也不会发生冲突的。
作者:
12345678110
时间:
2019-3-18 18:02
不会 但是变量太多会导致编译器无法编译通过 可以尝试修改优化等级和大小模式
作者:
是居啊
时间:
2019-3-18 18:42
一般是不会的,大多数编写的程序远小于其上限的大小
作者:
Y_G_G
时间:
2019-3-18 23:37
就看你是什么变量了
如果是全局变量,这肯定是有上限的,就看单片机的RAM
但如果是局部变量,只要函数不要嵌套太多,那几乎是没有上限的
局部变量只在调用函数时用到当前地址,返回之后,这个地址就会空出来了
比如你有两个延时函数,A和B
A函数里面用到变量 i
B函数里面也用到 i
当调用完A之后,再调用B,那么,实际上 i 只占用了一个地址
作者:
726434632
时间:
2019-3-19 09:42
如果idata变量用得过多,而且中断或者函数嵌套严重的话,会造成堆栈溢出。然后产生怀疑人生的不可预知的程序错误。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1