微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 各位高手,为什么主函数里面的程序不能执行? (pic16f1937中断 tim0中断问题)

各位高手,为什么主函数里面的程序不能执行? (pic16f1937中断 tim0中断问题)

时间:10-02 整理:3721RD 点击:
#include<pic.h>
__CONFIG(0X065A);
__CONFIG(0X18FE);
#define led RC2
#define led1 RC5
#define _XTAL_FREQ 8000000
#define uchar unsigned char
int x;
uchar         count=0;
void init(void);
void interrupt TIMER1_ISR(void)
{
        if(TMR0IF&&TMR0IE)
        {
                TMR0IF=0;
                led=1;
                for(count=0;count<1000;count++);
        }
}
void main(void)
{
        init();
        while(1)
        {
                led1=1;
        }
        //CLRWDT();       
}
void init(void)
{
        TRISC=0X00;
        PORTC=0X00;
        OPTION_REG=0X00;
        //TMR0CS=0;
        TMR0IF=0;
        TMR0IE=1;
        PEIE=1;
        GIE=1;
}

数据溢出了,把uchar         count  改为uint         count

这个论坛有没有大神啊?

我把uchar count  和中断里面的for()循环都去了 还是不能运行主函数 但是中断函数能正常运行

正常运行了啊,led=1;一直是灭的状态吧

led=1,灯是会亮的,只是时间很短,所以我就加了一个for循环延长时间 灯就会亮 灯亮了就说明执行了中断服务函数了,现在问题是,主函数里面的while()循环里面有一个语句是让另外一个灯亮,正常情况下这个灯应该一直亮才对啊,但是并没有亮,我用mplab  sim了一下,程序一直在执行初始化函数 不执行while()  不知道为什么?另外我写了一个电平变化中断测试后  也是一样  中断能执行  但是就是出不来  正常情况下 定时器中断像这样写 应该没问题的啊 我用protues仿真  有堆栈溢出警告

你先把count改为uint类型,uchar类型最大的数只能是255,255永远小于1000,所以跳不出for循环
我没用过pic单片机,不知道你定时器配置对了没有,你再看看配置

好的     谢谢了

。本帖子已结帖

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top