stc单片机中断函数中的变量的调用问题,求助
我用的单片机是STC12C5A60S2,中断部分代码是void CounterINT() interrupt 1 using 1//定时器0中断
{
TL0 = M1MS;//定时器1ms初值
TH0 = M1MS>>8;
msecond++;
if(msecond>1000)//60000 1 minute
{
msecond=0;
second++;
}
}
void main()
{
initiate_RS232(); //波特率 = 9600
Sys_init();//系统初始化
LED1=1;
LED2=1;
CounterReset();
while(1)
{
Send_Byte(second);
Delay(0x02);
}
}
大体程序是这样的,定时器中断中second值是变的,但是main函数中一直不变,second定义是全局变量。
定义格式如下:volatile unsigned int second=0;
也试过unsigned int second=0;,一直不能解决。求帮忙解决一下。 去掉using 1试试 回复【1楼】xiaobendan仲跻东
-----------------------------------------------------------------------
去掉过,不可以啊。搞了一天没有实质的进展。 Send_Byte(second);这里有问题吧,只是不知道你的Send_Byte是怎么定义的,串口发送一个字符? 回复【3楼】amazing030
-----------------------------------------------------------------------
我是发送的一个字符,而且Send_Byte(second);在中断里面是正常的。 你是怎么判断在main()里面不变的?是经过单步跟踪的么? 看着没问题
但程序不全
也很难说 谢谢大家的关注,我找到问题了,就是因为在主程序发送时影响到定时器的工作了,现在吧串口发送函数发到定时器了,主程序调试通过后,只要不在main函数中调用串口发送,一切正常了。谢谢大家了。
页:
[1]