• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

请教高手,我的ad(2407A)程序进不了中断,郁闷了几天了,急急

我的ad程序,开始运行第一个周期能进中断,而后就进不去了,下面是程序,请高手帮我指点一下,小弟急啊,已经郁闷了几天了
        .ref     _c_int0
        .ref GISR1
        .ref ADCISR
        .ref PHANTOM  
        
        .def PVECTORS
        .sect      ".vectors"    
RSVECT     B       _c_int0             ;PM0 段的首地址
INT1       B       GISR1               ;PM2
INT2       B       PHANTOM             ;PM4
INT3       B       PHANTOM             ;PM6
INT4       B       PHANTOM             ;PM8
INT5       B       PHANTOM             ;PMA
INT6       B       PHANTOM             ;PMC
RESERVED   B       PHANTOM             ;PME
SW_INT8    B       PHANTOM             ;PM10
SW_INT9    B       PHANTOM             ;PM12
SW_INT10   B       PHANTOM             ;PM14
SW_INT11   B       PHANTOM             ;PM16
SW_INT12   B       PHANTOM             ;PM18
SW_INT13   B       PHANTOM             ;PM1A
SW_INT14   B       PHANTOM             ;PM1C
SW_INT15   B       PHANTOM             ;PM1E
SW_INT16   B       PHANTOM             ;PM20
SW_INT17   B       PHANTOM             ;PM22
SW_INT18   B       PHANTOM             ;PM24
SW_INT19   B       PHANTOM             ;PM26
SW_INT20   B       PHANTOM             ;PM28
SW_INT21   B       PHANTOM             ;PM2A
SW_INT22   B       PHANTOM             ;PM2C
SW_INT23   B       PHANTOM             ;PM2E
SW_INT24   B       PHANTOM             ;PM30
SW_INT25   B       PHANTOM             ;PM32
SW_INT26   B       PHANTOM             ;PM34
SW_INT27   B       PHANTOM             ;PM36
SW_INT28   B       PHANTOM             ;PM38
SW_INT29   B       PHANTOM             ;PM3A
SW_INT30   B       PHANTOM             ;PM3C
SW_INT31   B       PHANTOM             ;PM3E
;中断子向量入口定义pvecs  
             .sect    ".pvecs"        ;定义子向量段
PVECTORS     B        PHANTOM        ;保留向量地址偏移量  0000h
             B        PHANTOM        ;保留向量地址偏移量  0001h
             B        PHANTOM        ;保留向量地址偏移量  0002h
             B        PHANTOM        ;保留向量地址偏移量  0003h
             B        ADCISR        ;保留向量地址偏移量  0004h
             B        PHANTOM        ;保留向量地址偏移量  0005h
             B        PHANTOM        ;保留向量地址偏移量  0006h
             B        PHANTOM        ;保留向量地址偏移量  0007h
             B        PHANTOM        ;保留向量地址偏移量  0008h
             B        PHANTOM        ;保留向量地址偏移量0009h
             B        PHANTOM       ;保留向量地址偏移量  000Ah
             B        PHANTOM       ;保留向量地址偏移量  000Bh
             B        PHANTOM     ;保留向量地址偏移量  000Ch
             B        PHANTOM        ;保留向量地址偏移量  000Dh
             B        PHANTOM       ;保留向量地址偏移量  000Eh
             B        PHANTOM       ;保留向量地址偏移量  000Fh
             B        PHANTOM        ;保留向量地址偏移量  0010h
             B        PHANTOM        ;保留向量地址偏移量  0011h
             B        PHANTOM        ;保留向量地址偏移量  0012h
             B        PHANTOM        ;保留向量地址偏移量  0013h
             B        PHANTOM        ;保留向量地址偏移量  0014h
             B        PHANTOM        ;保留向量地址偏移量  0015h
             B        PHANTOM        ;保留向量地址偏移量  0016h
             B        PHANTOM        ;保留向量地址偏移量  0017h
             B        PHANTOM        ;保留向量地址偏移量  0018h
             B        PHANTOM        ;保留向量地址偏移量  0019h
             B        PHANTOM        ;保留向量地址偏移量  001Ah
             B        PHANTOM        ;保留向量地址偏移量  001Bh
             B        PHANTOM        ;保留向量地址偏移量  001Ch
             B        PHANTOM        ;保留向量地址偏移量  001Dh
             B        PHANTOM        ;保留向量地址偏移量  001Eh
             B        PHANTOM        ;保留向量地址偏移量  001Fh
             B        PHANTOM        ;保留向量地址偏移量  0020h
             B        PHANTOM        ;保留向量地址偏移量  0021h
             B        PHANTOM        ;保留向量地址偏移量  0022h
             B        PHANTOM        ;保留向量地址偏移量  0023h
             B        PHANTOM        ;保留向量地址偏移量  0024h
             B        PHANTOM        ;保留向量地址偏移量  0025h
             B        PHANTOM        ;保留向量地址偏移量  0026h
             B        PHANTOM        ;定时器周期中断    0027h
             B        PHANTOM       ;保留向量地址偏移量  0028h
             B        PHANTOM        ;定时器下溢中断      0029h
             B        PHANTOM        ;保留向量地址偏移量  002Ah
             B        PHANTOM        ;保留向量地址偏移量  002Bh
             B        PHANTOM        ;保留向量地址偏移量  002Ch
             B        PHANTOM        ;保留向量地址偏移量  002Dh
             B        PHANTOM        ;保留向量地址偏移量  002Eh
             B        PHANTOM        ;保留向量地址偏移量  002Fh
             B        PHANTOM        ;保留向量地址偏移量  0030h
             B        PHANTOM        ;保留向量地址偏移量  0031h
             B        PHANTOM        ;保留向量地址偏移量  0032h
             B        PHANTOM        ;保留向量地址偏移量  0033h
             B        PHANTOM        ;保留向量地址偏移量  0034h
             B        PHANTOM        ;保留向量地址偏移量  0035h
             B        PHANTOM        ;捕获4中断           0036h
             B        PHANTOM        ;保留向量地址偏移量  0037h
             B        PHANTOM        ;保留向量地址偏移量  0038h
             B        PHANTOM        ;保留向量地址偏移量  0039h
             B        PHANTOM        ;保留向量地址偏移量  003Ah
             B        PHANTOM        ;保留向量地址偏移量  003Bh
             B        PHANTOM        ;保留向量地址偏移量  003Ch
             B        PHANTOM        ;保留向量地址偏移量  003Dh
             B        PHANTOM        ;保留向量地址偏移量  003Eh
             B        PHANTOM        ;保留向量地址偏移量  003Fh
             B        PHANTOM        ;保留向量地址偏移量  0040h
             B        PHANTOM       ;保留向量地址偏移量  0041h
下面是主程序
      .include  "F2407REGS.H"    
      .def _c_int0,INIT_AD
      .def PHANTOM
      .def  GISR1,ADCISR  

      .ref PVECTORS
            
STK_LEN .set 100
STK .usect "STACK",STK_LEN

AD0     .usect  "data2",1
AD1     .usect  "data2",1
STEP    .usect  "data2",1 ;151EBH  ;256/200 Q14
      
N1   .set  2              
ZHUANSHU .set 200                
  
    
    .text              
_c_int0:                          
              CALL  INIT_SYS                          
              CALL  INIT_PWM
              CALL  INIT_AD
START:
              LDP   #GPTCONA>>7
              LACL  T1CON
              OR    #0040H
              SACL  T1CON
              SPLK #0FFFFH,EVAIFRA
              SPLK #0FFFFH,EVAIFRB  
              SPLK #0FFFFH,EVAIFRC
              LDP   #GPTCONB>>7
              LACL  T3CON
              OR    #0040H
              SACL  T3CON
              SPLK #0FFFFH,EVBIFRA
              SPLK #0FFFFH,EVBIFRB  
              SPLK #0FFFFH,EVBIFRC
              LDP   #0H
              CLRC  INTM                                                     
LOOP:        
              NOP
              B LOOP

INIT_SYS:                            
              SETC  INTM          ;禁止所有中断
              SETC  SXM           ;允许符号扩展
              CLRC  OVM           ;累加器中结果正常溢出
              CLRC  CNF           ;双口RAM区被映射到数据存储空间
              LDP   #SCSR1>>7     ;装载系统控制与状态寄存器页地址
              SPLK  #818FH,SCSR1  ;设置系统控制与状态寄存器1    
              LACC SCSR2
              OR #0BH
              AND #0FH
              SACL SCSR2         ;设置系统控制与状态寄存器2
                                  ;禁止引导rom
                                  ;SRAM被映射到片内程序空间又被映射到片内数据空间      
              SPLK  #0E8H,WDCR    ;看门狗禁止
              LDP   #IMR>>7       ;装载中断屏蔽寄存器页地址
              SPLK  #01H,IMR      ;使能INT1
              SPLK  #0FFFFH,IFR   ;清所有中断标志寄存器
              LAR   AR0,#STK
              LDP   #7H    
              RET                  
                                        
INIT_PWM:          
              LDP   #MCRA>>7      ;装载IO复用控制寄存器数据页地址
              LACL  MCRA
              OR    #0FC0H    ;IO-->PWM1-6
              SACL  MCRA
              LDP   #GPTCONA>>7
              SPLK  #0999H,ACTRA   ;
              SPLK  #0FFCH,DBTCONA   ;disable dead control
              SPLK  #1000,CMPR1
              SPLK  #1500,CMPR2
              SPLK  #0000,CMPR3
              SPLK  #2000,T1PR
              SPLK  #0AE00H,COMCONA
              SPLK  #00H,T1CNT
              SPLK  #000AH,GPTCONA
              SPLK  #00H,EVAIMRA
              SPLK  #00H,EVAIMRB
              SPLK  #00H,EVAIMRC      
              SPLK  #080CH,T1CON ;定时器1连续增减模式, 1预分频
                                 ;定时器不使能,内部CPU时钟,比较不使能    
              RET

INIT_AD:
        LDP #GPTCONB>>7
        LACL GPTCONB
        OR   #008AH
        SACL GPTCONB
        SPLK #5,T3CNT
        SPLK #250,T3PR
        SPLK #0B0CH,T3CON
        
        SPLK #0H,EVBIMRA
        SPLK #0H,EVBIMRB
        SPLK #0H,EVBIMRC
        LDP #ADCTRL1>>7
        SPLK #4000H,ADCTRL1
        NOP
        SPLK #0012H,ADCTRL1
        SPLK #0C404H,ADCTRL2
        SPLK #01H,MAXCONV
        SPLK #0010H,CHSELSEQ1
        SPLK #0000H,CHSELSEQ2
        SPLK #0000H,CHSELSEQ3
        SPLK #0000H,CHSELSEQ4
        RET        
        
;中断程序
GISR1:
      MAR  *,AR0
      MAR  *+
      SST  #0,*+
      SST  #1,*+
      SACH *+
      SACL *+    ;保护现场
      LDP  #0E0H
      LACC PIVR,1
      ADD  #PVECTORS
      BACC
      
ADCISR:
      LDP  #ADCTRL2>>7
      BIT  ADCTRL1,BIT0
      BCND ADCISR,TC
      LACL ADCTRL2
      OR   #4200H
      SACL ADCTRL2
      LACC RESULT0,10
      LDP  #AD0
      SACH AD0
      LDP  #ADCTRL2>>7
      LACC RESULT1,10
      LDP  #AD0
      SACH AD1
      BLDD AD0,#CMPR1
      BLDD AD1,#CMPR2
               ;BLDD X3,#CMPR3
      NOP
GIRS1_RET:
      MAR  *,AR0
      MAR  *-
      LACL *-
      ADD  *-,16
      LST  #1,*-
      LST  #0,*-
      RET
                            
PHANTOM:      
              KICK_DOG
              RET  
  
              END
全部回复(16)
正序查看
倒序查看
2004-10-08 13:08
为什么没人回啊,自己先顶一下
0
回复
我爱dsp
LV.3
3
2004-10-08 16:34
兄弟,我粗略的看了一下,请问,你是如何产生AD中断的?
0
回复
我爱dsp
LV.3
4
2004-10-08 16:52
@jingangcom
为什么没人回啊,自己先顶一下
你这寄存器配置的也有点乱,你能简要说一下你的思路吗?
什么事件触发AD.
QQ:275708035我们可以交流交流!
0
回复
2004-10-10 21:16
@我爱dsp
你这寄存器配置的也有点乱,你能简要说一下你的思路吗?什么事件触发AD.QQ:275708035我们可以交流交流!
定时器3下溢中断
0
回复
2004-10-10 21:16
@我爱dsp
兄弟,我粗略的看了一下,请问,你是如何产生AD中断的?
定时器3下溢中断
0
回复
2004-10-10 21:21
@我爱dsp
你这寄存器配置的也有点乱,你能简要说一下你的思路吗?什么事件触发AD.QQ:275708035我们可以交流交流!
由定时器3的下溢中断触发ad转换,使用ad转换的中断方式一,在中断子程序里先读出ad转换值,再复位排序器和清中断
0
回复
2004-10-11 11:21
@jingangcom
定时器3下溢中断
楼主,你的这个写程序习惯不好,要学会标注啊,不要偷懒!
0
回复
我爱dsp
LV.3
9
2004-10-11 16:32
@jingangcom
定时器3下溢中断
定时器T3 你使能了吗?
不是能怎么产生中断,没中断怎么触发AD
0
回复
我爱dsp
LV.3
10
2004-10-11 16:35
@jingangcom
定时器3下溢中断
SPLK #0B0CH,T3CON
SPLK #1100100001000000B,T3CON
其他定时器我不知道你用不用,也是没有使能!
0
回复
jingangcom
LV.2
11
2004-10-11 18:19
@我爱dsp
SPLK#0B0CH,T3CONSPLK#1100100001000000B,T3CON其他定时器我不知道你用不用,也是没有使能!
定时器使能了啊,在初始化后统一使能的
START:
              LDP   #GPTCONA>>7
              LACL  T1CON
              OR    #0040H
              SACL  T1CON
              SPLK #0FFFFH,EVAIFRA
              SPLK #0FFFFH,EVAIFRB  
              SPLK #0FFFFH,EVAIFRC
              LDP   #GPTCONB>>7
              LACL  T3CON
              OR    #0040H
              SACL  T3CON
0
回复
jingangcom
LV.2
12
2004-10-11 18:20
@一个好人
楼主,你的这个写程序习惯不好,要学会标注啊,不要偷懒!
谢谢你的建议
0
回复
jingangcom
LV.2
13
2004-10-11 18:30
@我爱dsp
定时器T3你使能了吗?不是能怎么产生中断,没中断怎么触发AD
我调出来了,在中断返回处加
clrc intm
但有时还是进不了中断,restart cpu后就正常了
0
回复
我爱dsp
LV.3
14
2004-10-11 19:53
@jingangcom
定时器使能了啊,在初始化后统一使能的START:              LDP  #GPTCONA>>7              LACL  T1CON              OR    #0040H              SACL  T1CON              SPLK#0FFFFH,EVAIFRA              SPLK#0FFFFH,EVAIFRB                SPLK#0FFFFH,EVAIFRC              LDP  #GPTCONB>>7              LACL  T3CON              OR    #0040H              SACL  T3CON
不好意思,没仔细看!
对了,进中断后,需要清中断标志位吧?!
ldp  #EVBIFRC>>7
SPLK #0FFFFH,EVBIFRC
0
回复
我爱dsp
LV.3
15
2004-10-11 19:55
@jingangcom
定时器使能了啊,在初始化后统一使能的START:              LDP  #GPTCONA>>7              LACL  T1CON              OR    #0040H              SACL  T1CON              SPLK#0FFFFH,EVAIFRA              SPLK#0FFFFH,EVAIFRB                SPLK#0FFFFH,EVAIFRC              LDP  #GPTCONB>>7              LACL  T3CON              OR    #0040H              SACL  T3CON
这是什么意思,没看明白!
LDP  #ADCTRL2>>7
      BIT  ADCTRL1,BIT0
      BCND ADCISR,TC
你用的是2407吗?!
0
回复
jingangcom
LV.2
16
2004-10-15 13:20
@我爱dsp
这是什么意思,没看明白!LDP  #ADCTRL2>>7      BIT  ADCTRL1,BIT0      BCNDADCISR,TC你用的是2407吗?!
对,那个没什么用
0
回复
jingangcom
LV.2
17
2004-10-15 13:28
@我爱dsp
不好意思,没仔细看!对了,进中断后,需要清中断标志位吧?!ldp  #EVBIFRC>>7SPLK#0FFFFH,EVBIFRC
这是ADC中断,下面这一句就是请中断标志的,你说的是清捕获中断标志的
LACL ADCTRL2
      OR   #4200H
      SACL ADCTRL2
0
回复