PIC18F452 程序只有有一句 DDRB=0X03; // PB1 PB0输入,程序就会不停的重启
没开看门狗, 搞不懂为什么会不停的重启
void test_job1(void)
{
u8 data1;
u16 Cnt1;
DDRD=0;
//DDRB=0X03; // 不能有这一句 不然会不停的重启
T1CON=0X90; // FOSC/4/2 // 2MHZ
TMR1ON=1; // 打开定时器
PORTD=0XFF;
Delay_1F4(200); // 产生脉冲,会不停的产生,说明一直在重启
PORTD=0;
Delay_1F4(200);
PORTD=0XFF;
Delay_1F4(200);
PORTD=0;
Delay_1F4(200);
data1=1;
while(data1)
{
CheckTimer1();
}
T1CON &= ~BITS(0); // TMR1ON=0; // 关闭定时器
}
void CheckTimer1(void)
{
if(TMR1IF==1)
{
//定时器中断后,要重置初值,以备下次中断
TMR1H=(65536-2000)/256; // 2000*0.5us =1ms
TMR1L=(65536-2000)%256;
// Bit TMR0IF must be cleared in software by the Timer0 module Interrupt Service Routine
// before re-enabling this interrupt. 解释了为什么要清零
//溢出中断标志位清零 只有T0IF出现上升沿,才会产生中断,所以中断发生之后要清零。
TMR1IF=0;
// 执行中断处理程序,也就是中断产生了,我们想要执行什么功能
timerCnt1++;
if(timerCnt1>=1000) //2ms中断一次,再计次250次后就是500ms
{
timerCnt1=0;
led_state=~led_state;
if(led_state & 0x01)PORTD |= BITS(0); // LED闪烁
else PORTD &= ~BITS(0);
}
}
}