sinc_mark 发表于 2013-5-1 19:15:51

PIC18F452定时器0问题

是用18452,开了定时器0,想使用定时器0,但现在开启定时器0定时1S后,使得某一个管脚上的LED灯闪烁,以提示时间,现在的情形是发现定时器0已启动,但不知道是什么影响到定时器,现象就是定时有时候1S闪烁一次,但有时候会突然在1S内闪烁几次,程序部分如下:
void InterruptHandlerHigh (void)
{
        if((INTCONbits.T0IF)&&(INTCONbits.TMR0IE))                                        //定时器溢出中断
        {
               timegrow = timegrow + 1;
                TMR0L = 0x27;                                        //CF 27 定时2.5ms
                TMR0H = 0xCF;
                INTCONbits.T0IF = 0;                                //清除T0IF       
        }       
}


void main(void)
{
        TRISC = 0X00;            //如果屏蔽该句,发现端口不断有00输出,但此时并无串口初始化
        TRISD = 0X00;
        PORTD = 0X01;

        Time0Iint();
    while(1)                //等待通讯中断命令。
    {
           time_basic_set();
                if(F_1S_BACK)
                {
                        PORTDbits.RD0 = ~PORTDbits.RD0;   //通过RD0接的LED来判断出定时器存在异常情况
                }

                time_basic_reset();
    }
}
已经将相应的其它中断都关闭,且硬件接有232输出,但发现如果屏蔽TRISC = 0X00;发现端口不断有00输出,但此时并无串口初始化
很无解中,请各位给些建议,谢谢!

sinc_mark 发表于 2013-5-1 19:16:14

自己先顶一个,等待高手解答!

yklstudent 发表于 2013-5-1 21:02:36

time_basic_set();
time_basic_reset();
这个是什么意思????

sinc_mark 发表于 2013-5-2 08:58:09

yklstudent 发表于 2013-5-1 21:02 static/image/common/back.gif
time_basic_set();
time_basic_reset();
这个是什么意思????

time_basic_set();是定时器0中断超过一定次数后,将F_1S_BACK置位;
time_basic_reset();是将F_1S_BACK清0;

yklstudent 发表于 2013-5-2 10:43:10

sinc_mark 发表于 2013-5-2 08:58 static/image/common/back.gif
time_basic_set();是定时器0中断超过一定次数后,将F_1S_BACK置位;
time_basic_reset();是将F_1S_BACK清 ...

一直在清?????????????

sinc_mark 发表于 2013-5-2 10:46:27

yklstudent 发表于 2013-5-2 10:43 static/image/common/back.gif
一直在清?????????????

恩,是一直在清,但置位的时候只有在1S到达的时候才会置位!

sinc_mark 发表于 2013-5-3 10:01:31

昨天测试的时候,发现只要使能了这一句:RCSTAbits.SPEN = 1;                  //(设置错误,有问题)//允许同步串行口工作。
就会影响到RD0,RD0的LED灯一直在闪烁,有时候串口会发出一些00 的数据来,是连续不断的发送,但我虽然是使能了串口,并没有给TXREG装载数据,无解中。。

Wxy8030 发表于 2013-5-3 10:29:00

不建议使用这个片子,建议 18F4520 代替,452这个片子厂家已经不推荐使用了。

sinc_mark 发表于 2013-5-3 10:37:22

Wxy8030 发表于 2013-5-3 10:29 static/image/common/back.gif
不建议使用这个片子,建议 18F4520 代替,452这个片子厂家已经不推荐使用了。 ...

谢谢楼上的,我最近自己的折腾这个芯片,感觉总是乖乖的,都不知道是不是自己的程序有问题还是什么回事,暂时手上没有4520,下次出去买一个看看就知道了!

Wxy8030 发表于 2013-5-3 10:44:39

PIC的编译器有软件模拟功能,模拟运行一下便知道问题出在哪里了!

sinc_mark 发表于 2013-5-3 10:45:56

Wxy8030 发表于 2013-5-3 10:44 static/image/common/back.gif
PIC的编译器有软件模拟功能,模拟运行一下便知道问题出在哪里了!

求一份软件模拟说明,谢谢!

Wxy8030 发表于 2013-5-3 10:53:26

sinc_mark 发表于 2013-5-3 10:45 static/image/common/back.gif
求一份软件模拟说明,谢谢!

sinc_mark 发表于 2013-5-7 09:12:43

自己顶一下,顺道报道一下:我使用外接10M晶振,然后使用倍频,出现异常(LED灯闪烁),不开倍频的时候,倒是没有什么问题,现在还没找出导致该问题原因!

sinc_mark 发表于 2013-5-8 09:07:16

归结了一下,很可能是因为我原先使用的晶振有问题,原先使用10M的晶振,开启倍频之后会出现一些很奇怪的现象,现在使用20M的晶振,没开倍频,暂时不会出现异常!

戴风海 发表于 2015-8-10 01:51:18

不错,学习了
页: [1]
查看完整版本: PIC18F452定时器0问题