今天发现一个奇怪的问题。
使用PIC16F722 这个IC出来没多久 ,需要使用PICC 9.65的编译器。
程序用SIM仿真发现总是在中断中跑,于是我关了GIE 同时查看特殊功能寄存器,发现不可能进中断,
在中断中通过判断标准位
进了这个
if(TMR2IE&TMR2IF)// PWM TIME INT CHANGE DUTY
{TMR2IF=0;
TMR2IE=0;
CCPR2L=PWM_duty;
}
可是这个怎么可能一直在中断中跑。
还有哪位知道Startup.as这个文件有没有必要要。怎么去掉。我非常的怀疑是它在搞鬼
同事也怀疑编译器的问题 。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#include "Main_heard.h"
void main(void)
{
//T0IF=0;
T0IE=1;//open int need alawys open
PSA=0; PS1=0; PS0=0;
T0CS=0;
TMR0=0;
PEIE=1;
GIE=1;
while(1);
}
/****************ISR******************************/
static void interrupt ISR(void) // Here be interrupt function - the name is unimportant.
{
if(T0IE&T0IF)// SYSTEMTICK 4.096MS int need scan led an count or decount
{T0IF=0;
}
if(RBIE&RBIF)//partB int need scan key
{RBIF=0;
}
if(TMR1GIE&TMR1GIF)//ccp INT read perid
{TMR1GIF=0;
}
if(TMR2IE&TMR2IF)// PWM TIME INT CHANGE DUTY
{TMR2IE=0;
//
}
}
以上为全部源代码 。
发现只要T0溢出,以后怎么搞都逛if(TMR2IE&TMR2IF)// .
实在是很郁闷。
怎么会出这样的事呢 ?
一周热门 更多>