英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

标题: [求助]30f4011灯循环亮了后不灭了,怎么回事啊? [打印本页]

作者: min    时间: 2012-8-18 16:59
标题: [求助]30f4011灯循环亮了后不灭了,怎么回事啊?
#include<p30f4011.h>  //dsPIC30F4011标准头文件
#define Fcy 7372800                  //7.37MHz外部晶振带4倍频,指令周期为7.37MIPs
void _ISR _T1Interrupt(void);

_FOSC(CSW_FSCM_OFF&XT_PLL4);//4倍频晶振,Failsafe时钟关闭
_FWDT(WDT_OFF);    // 关闭看门狗定时器
_FBORPOR(PBOR_OFF&MCLR_EN); //掉电复位禁止,MCLR复位时能
_FGS(CODE_PROT_OFF);  //代码保护禁止

int main(void)
{
LATE=0;
TRISE=0X0FFF0;
T1CON = 0;                     //关闭定时器1
    TMR1 = 0;                         //启动定时器1的计数寄存器为0
PR1 = (Fcy/256);              //设定1秒延时时间
T1CON = 0x8030;

IEC0bits.T1IE=1;
IFS0bits.T1IF=0;
while(1);
}


void __attribute__ ((__interrupt__,no_auto_psv)) _T1Interrupt(void)
{  
IFS0bits.T1IF=0;
static int N=4;
if(!N--)
N=4;
switch(N)
{
  case 4ATE=0X0001;break;
  case 3ATE=0X0002;break;
  case 2ATE=0X0004;break;
  defaultATE=0X0008;
}
}


作者: star    时间: 2012-8-18 17:54
你在中断里面定义这静态变量N应该是一个局部变量,也就是每次中断开始,都会重新定义N为4因此你那个LED是不会灭的。

你可以试试将N变成全局变量试试看。





欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/) Powered by Discuz! X3.2