[求助] dsp2407ad中断进不去,请高手指点

xuehualm   2012-4-6 15:03 楼主
#include "regs240x.h"

void SystemInit();
void ADINIT();
void interrupt c_int1();
void KickDog();
int point=0,I=0,a=0,ux[8];

main()
{

SystemInit();                                                                                                                                                   
ADINIT();  
asm(" CLRC INTM ");   //开所有中断   
T2CON=0X144C; //T2使能
while(1)
{if(I==8)
  break;}  
T2CON=0X0FFBF;      
        while(1)
        {
         //KickDog;
         
        }//end while
        
}


void SystemInit()
{
asm(" SETC INTM ");
asm(" CLRC SXM ");
asm(" CLRC CNF ");
asm(" CLRC OVM ");
KickDog();
SCSR1=0X81FE; //4倍频20*4=80M
WDCR=0X0E8;   //不使能看门狗,因为SCSR2中的WDOVERRIDE即WD保护
              // 位复位后的缺省值为1,故可用软件禁止看门狗
IMR=0X0001;  //打开INT1中断
IFR=0XFFFF;   //清除全部中断标志,写1清零
}

void ADINIT()
{
   EVAIMRB=EVAIMRB|0X0001;//  定时器2周期中断使能
   EVAIFRB=EVAIFRB&0X0001;//  清除中断标志
   GPTCONA=0x0000;
   GPTCONA=0X0400;       //通用定时器2周期中断启动AD
   T2PR=12499;            //  定时器2周期值
   T2CNT=0;
   T2CON=0X170C;           //增模式, TPS系数80M/128
   ADCTRL1=0X10;
   ADCTRL2=0X0500;
       MAXCONV=0;
       CHSELSEQ1=(4<<12)|(6<<8)|(2<<4)|(2);
       CHSELSEQ2=0;
       CHSELSEQ3=0;
       CHSELSEQ4=0;      
      
}

  void interrupt c_int1()//A/D 中断低优先级在这里,
    {
       int UA,temp;
      temp=PIVR;
      if(temp==0x04)
      {
       UA=RESULT0>>6;
       ux[point++]=UA;
      
            if(point>7)
             { point=0;
               I=8;
               }
       ADCTRL2=0X4200; //复位A/D转换序列指针
                       //清除设备中断标志
      asm(" CLRC INTM ");   //打开所有中断
      }
         
    }
void interrupt PHANTOM()
{
   asm(" CLRC INTM ");
    return;
   
}
void KickDog()  //喂狗
{
WDKEY=0X5555;
WDKEY=0XAAAA;
}

回复评论 (2)

楼主看一下下面这幅图,符合图上的要求,AC的中断位置为就会进入中断,否则就去确认为什么图上的条件没有符合

 

 

11.JPG

点赞  2012-4-6 15:55
谢谢啦,由于基础比较差,还是解决不了
点赞  2012-4-6 18:00
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复