英锐恩单片机论坛,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 4
ATE=0X0001;break;
case 3
ATE=0X0002;break;
case 2
ATE=0X0004;break;
default
ATE=0X0008;
}
}
作者:
star
时间:
2012-8-18 17:54
你在中断里面定义这静态变量N应该是一个局部变量,也就是每次中断开始,都会重新定义N为4因此你那个LED是不会灭的。
你可以试试将N变成全局变量试试看。
欢迎光临 英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 (http://enroobbs.com/)
Powered by Discuz! X3.2