为什么被中断函数用到的变量不能放在main函数里?(keil5)

img

源码

#include <REGX52.H>
#include "Timer.h"
#include "LCD1602.h"
#include "another.h"

//unsigned char Sec=0, Min=0, Hour=0;
void main()
{
unsigned char Sec=0, Min=0, Hour=0;
Timer0_Init();
LCD_Init();
LCD_ShowString(1,1,"Clock:");
LCD_ShowString(2,1," : :");
while(1)
{
LCD_ShowNum(2,1,Hour,2);
LCD_ShowNum(2,4,Min,2);
LCD_ShowNum(2,7,Sec,2);
}
}

void Timer0_Routine() interrupt 1
{
static unsigned int T0count = 0;
TH0 = 64535 / 256;
TL0 = 64535 % 256 + 1;
T0count++;
if(T0count >= 1000)
{
T0count = 0;
Sec++;
if(Sec == 60)
{
Sec = 0;
Min++;
if(Min == 60)
{
Min = 0;
Hour++;
if(Hour == 24)Hour = 0;
}
}
}
}

那肯定不行啊。只是放在main函数里,是函数内的局部变量,又不是全局变量,其它函数自然访问不到的

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

补充一句, 如果中断函数和普通函数都会用到的全局变量,也要注意一下,加上volatile