shuye1 发表于 2011-3-6 00:24:08

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;,一直不能解决。求帮忙解决一下。

xiaobendan 发表于 2011-3-6 07:08:31

去掉using 1试试

shuye1 发表于 2011-3-6 08:46:30

回复【1楼】xiaobendan仲跻东
-----------------------------------------------------------------------

去掉过,不可以啊。搞了一天没有实质的进展。

amazing030 发表于 2011-3-6 09:05:29

Send_Byte(second);这里有问题吧,只是不知道你的Send_Byte是怎么定义的,串口发送一个字符?

shuye1 发表于 2011-3-6 09:42:48

回复【3楼】amazing030
-----------------------------------------------------------------------

我是发送的一个字符,而且Send_Byte(second);在中断里面是正常的。

eefans 发表于 2011-3-6 09:44:52

你是怎么判断在main()里面不变的?是经过单步跟踪的么?

yklstudent 发表于 2011-3-6 10:05:32

看着没问题
但程序不全
也很难说

shuye1 发表于 2011-3-6 12:01:05

谢谢大家的关注,我找到问题了,就是因为在主程序发送时影响到定时器的工作了,现在吧串口发送函数发到定时器了,主程序调试通过后,只要不在main函数中调用串口发送,一切正常了。谢谢大家了。
页: [1]
查看完整版本: stc单片机中断函数中的变量的调用问题,求助