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

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 4087|回复: 1
打印 上一主题 下一主题

[求助]30f4011灯循环亮了后不灭了,怎么回事啊?

[复制链接]
跳转到指定楼层
1#
发表于 2012-8-18 16:59:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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;
}
}

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

你可以试试将N变成全局变量试试看。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-4-27 14:08 , Processed in 0.053764 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表