各位高手,为什么主函数里面的程序不能执行? (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;
}
__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单片机,不知道你定时器配置对了没有,你再看看配置
好的 谢谢了
。本帖子已结帖