min 发表于 2012-8-18 16:59:44

[求助]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 4:LATE=0X0001;break;
case 3:LATE=0X0002;break;
case 2:LATE=0X0004;break;
default:LATE=0X0008;
}
}

star 发表于 2012-8-18 17:54:27

你在中断里面定义这静态变量N应该是一个局部变量,也就是每次中断开始,都会重新定义N为4因此你那个LED是不会灭的。

你可以试试将N变成全局变量试试看。
页: [1]
查看完整版本: [求助]30f4011灯循环亮了后不灭了,怎么回事啊?