4853|4

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

dsp2407捕获中断进不去 [复制链接]

各位大侠,我编了一个DSP2407的捕获中断程序,但程序就是进不到捕获中断中去,不知道怎么回事。程序代码如下:
void systeminitial()          系统初始化
{
asm(" setc INTM";
      
asm(" setc SXM";
      
asm(" clrc OVM";
      
asm(" clrc CNF");
      
* SCSR1=0x81FE;        
* WDCR=0x0E8;         
* IMR=0x0000;         
* IFR=0x0FFFF;                  
}

void ioinitial()             I/O  口的初始化                                    
{
* MCRA=* MCRA & 0x0FFF0|0x0FFF0;
* PADATDIR=* PADATDIR & 0x0FFFF|0x0FFFF;
}
void cap3initial()          捕获单元初始化
{
* T1PER=0x0FFFE;   
* T1CON=0x100C;   
* T1CNT=0x00;
WSGR=0x0000;
* CAPCONA=0x1404;                     
* EVAIMRC=* EVAIMRC|0x0004;  
* EVAIFRC=* EVAIFRC|0x0FFFF;
* IMR=0x0008;
* IFR=0x0FFFF;
}

void start()            启动定时器1,即启动捕获中断
{
  * T1CON=* T1CON|0x40;     
}

void interrupt cap3int()              中断服务程序。就是这个地方进不去!!!
{   
int flag;
flag=* EVAIFRC & 0x04;            
if(flag!=0x04)
{
   asm(" clrc INTM");

   return;                       
}

* PADATDIR=* PADATDIR & 0x0FFF0|0x0FFF0;

* EVAIFRC=* EVAIFRC|0x04;

asm(" clrc INTM");

return;
}                     
void interrupt nothing()             若是其他中断,返回
{
  asm(" clrc INTM");

  return;
}
main()
{                                       
  systeminitial();
                                                                                       

  cap3initial();


  ioinitial();

  asm(" clrc INTM");

  
  start();


  while(1)
  {
    ;   
  }                  
                                             
}
请各位不吝赐教,先谢谢了

最新回复

不明白中断程序中的这句“* PADATDIR=* PADATDIR & 0x0FFF0|0x0FFF0;”按理该句应放在IO口初始化程序中,不妨试下!   详情 回复 发表于 2010-3-9 07:31
 
点赞 关注

回复
举报

61

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
其他中断能进吗?中断表呢?
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
中断表写了
  .title "vectors.asm"  
        .ref _c_int0,_nothing,_cap3int
        .sect  ".vectors"
reset:   b  _c_int0         ;00h 复位中断
int1:    b  _nothing         ;02h 串口中断
int2:    b  _nothing        ;04h 定时器1中断
int3:    b  _nothing         ;06h
int4:    b  _cap3int        ;08h
int5:    b  _nothing        ;0Ah
int6:    b  _nothing        ;0Ch
我的CMD文件是不是有问题啊:
MEMORY
{
PAGE 0 :  VECS        : origin =    0h , length = 40h  /*  程序复位 */
              PVECS        : origin =   40h , length = 70h  /* 外围模块中断向量 */
              PROG        : origin =  0b0h , length = 7F50h         /* 在片FLASH */
PAGE 1 :  MMRS        : origin =    0h , length =   05Fh         /* MMRS         */
              B2        : origin = 0060h , length =   020h         /* DARAM B2 块  */
              B0        : origin = 0200h , length =   100h         /* DARAM B0 块  */
              B1        : origin = 0300h , length =   400h         /* DARAM B1 块  */
                  SARAM : origin = 0800h , length =  0800h    /* SARAM 块  */
          EXT        : origin = 8000h , length =  8000h         /* 外部存储器  */
当写这个CMD时告诉我
data verification failed at 0X00。
是怎么回事啊?
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

4
 
1,我没有做过2000,我做的6000里面的CMD文件的SECTIONS定义呢??
2,主程序里把各中断程序定义成全局的函数因为在中断服务表中引用了!
3,主程序中初始化中断服务列表指针地址没?(我做得6416有个ISTP中断服务列表指针寄存器需要在主程序中设置到中断列表的起始位置,不知道2000需不需要)
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

5
 
不明白中断程序中的这句“* PADATDIR=* PADATDIR & 0x0FFF0|0x0FFF0;”按理该句应放在IO口初始化程序中,不妨试下!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表