新手问题,为什么单片机的程序中要大量使用全局变量

新手问题,为什么单片机的程序中要大量使用全局变量,第1张

从去耦合的角度来讲,全局变量越少越好。这样才能提高程序的可维护性。
单片机程序中大量使用全局变量,一方面是基于传统单片机的资源有限、使用全局变量的开销更低,另一方面传统单片机的程序模块较少、耦合度易于人工控制。

1、代码是存放在ROM中的(定义变量也是代码的一部分),所以你定义的越多,代码就越长,当然越占用ROM;
2、在单片机运行的时候,全局变量被定义在内存(RAM)中的专门地址上,存取位置固定,全局变量越多,当然就越占用RAM

采纳答案是错误的。
变量,在开始定义时就预置一个值,是完全可行的。
有时,也是必须的。
比如一些常量的数组,谁还到主函数里面一个一个的赋值啊!
楼主的错误,可能是下面这些:
void T0_time() interrupt 0--改成interrupt 1
{
TH1=(65536-50000)/256;--改成TH0
TL1=(65536-50000)%256;--改成TL0
i++;
if(i==20)
{
i=20;------改成=0,再试试看。
a=_crol_(a,1);
}
}

这个应该根据程序的情况来定,你只有一个源文件的话,当然写在C里就可以了。全局变量一般写在程序的最前面,局部变量写在每个函数里。比如这个例子:
#include <stdioh>
#include <mathh>
#include <intrinsh>
#include <absacch>
#include <stringh>
#include "LCD_12864h"
sbit RESET = P3^3;
uchar code LCD_WIDTH = 16;
uchar code LCD_HEIGHT = 64;
uchar gCurRow,gCurCol;
uchar tCurRow,tCurCol;
uchar ShowModeSW;
uint txthome,grhome;
uchar Status_BIT_01();
uchar Status_BIT_3();
uchar LCD_Write_Command(uchar cmd);
uchar LCD_Write_Command_P1(uchar cmd,uchar para1);
uchar LCD_Write_Command_P2(uchar cmd,uchar para1,uchar para2);
uchar LCD_Write_Data(uchar dat);
void cls();
uchar LCD_Initialise();
void Set_LCD_POS(uchar row,uchar col);
uchar Status_BIT_01()
{
uchar i;
for(i=5;i>0;i--)
{
if((LCMCW & 0x03)==0x03)
break;
}
return i;
}
uchar Status_BIT_3()
{
uchar i;
for(i=5;i>0;i--)
{


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13385348.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存