[求助]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;
}
}
你在中断里面定义这静态变量N应该是一个局部变量,也就是每次中断开始,都会重新定义N为4因此你那个LED是不会灭的。
你可以试试将N变成全局变量试试看。
页:
[1]