导航:首页 > 操作系统 > 单片机局部变量

单片机局部变量

发布时间:2023-03-24 03:24:52

‘壹’ 51单片机汇编语言如何定义局部变量高手帮帮忙……

51单片机汇编语言如何声明局部变量?
--用 EQU 伪指令,即可。

51单片机定义或声明一个变量在程序执行时是否需要时间?
--伪指令,不占用单片机的时间。

或是定义一个变量,这条指令的执行时间是多少?
--零秒。
--伪指令,不用单片机执行。

‘贰’ C51 单片机 局部变量 问题

这个问题也困扰过我,比如定时器中断里设置一个变量x,不设置初值,然后程序里放个x++。
结果就是那个x真的一直在加。
不过我没有去深究过,个人理解是,如果系统不缺空间的话,单片机就不会去清除空余的单元。

是不是这样我不清楚,但是分析如下:
我们自己用汇编写程序的时候,直接对RAM操作,如果不去清0,里面的数是永远不会变的。这说明,单片机本身是没有这种操作的。
如果说C语言编译过程中有加这种功能,也很难想象会在每个工作周期中不断的去检查哪些单元闲置的,并且对其清零。因为这样要占用很多CPU时间。
个人猜测,注意,是猜测!应该是当不得不要把某个物理单元划分给新的变量时,才会真的把旧变量清除掉。否则,哪怕是局部变量,对应的物理单元应该是一直不变的。
(以上有错,是我一开始写的,请看下面的分析为准)

一边写一边仔细回忆一下,大概知道了:

如果你写了一个函数,里面有5个变量。并且,这个函数你不去调用它。那么编译后你会发现程序多占用了5个字节的RAM。如果你调用它,有些情况下(程序特别长,变量特别多时)你会发现,程序里使用的RAM没增加!(多说明一下,为什么不调用它反而要占用空间呢?因为系统不知道这5个空间什么时候可以释放,那么定义了以后只好一直保留着。而如果你调用它了,什么时候有用什么时候没用是固定的,那么系统编译时就可以在该变量不被使用时把空间分配给其他变量,有点“分时复用”的意思。而且,如果你写了太多函数,里面有足够多的变量,然后这些函数统统都永不调用,编译时就会出错,提示你系统RAM不足)

这至少说明两点,
一、如果你定义了一个局部变量,那么系统就会一直留着空间给它以备使用。那么那个物理单元随时都是为“那一个”变量准备着的,它的值并不会清零。
二、当你程序使用了太多变量时,那么系统编译时会自动调节,在适当的时候释放物理单元给“不同的变量”使用,也就是同一个物理单元要被不同的局部变量用,这种时候才会出现你说的情况,那就是局部变量会被清零。

实际上平时写的程序都太短了,根本没用使用完系统的RAM,那么编译时自然不会做这个操作。
同样可以得出一个结论,正是因为单片机的RAM有限,才会导致局部变量不清除。对于电脑来说,空间近乎无限的,随时随地你都可以分配空间给变量用。但是51单片机就那么128字节,必须详细策划好如何分配,所以局部变量才有了自己固定的地盘。

说到这里,我相信你的问题我已经找到答案了,虽然都是我推测的,但是十之八九不会错。欢迎讨论!
哦,至于初始值为0,这个没啥啊,单片机复位以后,RAM就是0
书上没写,但是实际用都是这样

‘叁’ 单片机中什么叫全局变量,和局部变量

在子程序中声明的变量叫局部变量,退出子程序时释放内存
而在主程序中声明的叫全局变量,在程序运行过程中一致有效。
为了节约内存,能用局部变量就不要用全局变量

阅读全文

与单片机局部变量相关的资料

热点内容
云服务器不同地域 浏览:944
python闹钟怎么打 浏览:686
虚拟主机服务器有什么区别 浏览:831
算法与程序的奥秘章节检测 浏览:377
找pdf 浏览:527
与服务器连接断开如何处理 浏览:831
服务器维修预计十分钟什么意思 浏览:168
黑马程序员主打教学是什么 浏览:39
python九乘法表怎么编写 浏览:972
思维方式pdf 浏览:654
tcc社区app怎么注册 浏览:937
央视网下载加密 浏览:452
命令行访问服务器 浏览:36
梁加密区箍筋是不是必须封闭箍筋 浏览:760
在百度地图如何定位服务器地址 浏览:570
单片机计数器中断 浏览:296
哈啰安装文件夹名称 浏览:294
解压视频声控用杯子玩泡沫 浏览:740
19年的普通安卓机怎么样了 浏览:604
如何在app上刷导游题目 浏览:861