打印

关于EM78P447 中断异常

[复制链接]
2981|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
quyuandong|  楼主 | 2008-3-10 08:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

请教各位大哥:小弟在用定时器中断时,发现一个很怪的现象:用硬件仿真时,定时器溢出时(FF变成00时),---总中断标志位置0,中断标志置1,有将下一步地址压入堆栈,但不跳到中断入口 001H位址,用软件仿真时可以跳到001H地址。

相关帖子

沙发
tata| | 2008-3-10 14:15 | 只看该作者

要下ENI指令

使用特权

评论回复
板凳
quyuandong|  楼主 | 2008-3-11 07:31 | 只看该作者

中断异常

;....................
IOCF  ==   0XF
ioce  ==   0x0E
ISR   ==   0X3F
TCIF  ==   0

;--------------------   
   ORG    01
   NOP
   NOP
   NOP
   BC    ISR,TCIF
   RETI
;--------------------- 
START2: 
  ENI
  NOP 
  NOP
  NOP
  NOP
  NOP 
  NOP
  NOP
  NOP
  JMP    START2
;----------------------  
START1:
   MOV    A,@0X87
   CONTW
   MOV    A,@0X11
   IOW    IOCE
   MOV    A,@0B00000001
   IOW    IOCF
   ENI
   JMP    START2
;----------------------   
   ORG   0X0FFE
   JMP   START1
   JMP   START1
   

使用特权

评论回复
地板
quyuandong|  楼主 | 2008-3-11 07:47 | 只看该作者

关于EM78P447 中断异常

问题补充:1,在全速时可以进入001地址,单步时不可以进入001地址。
          2,程序计数器在预分频1:256时,按两次F7,程序计数器加1,是不是计数器加的太快了?

使用特权

评论回复
5
she828| | 2008-3-11 08:00 | 只看该作者

楼主﹕你好﹗﹗

楼主﹕你好﹗﹗
俺也在学义隆的78P156/153﹐非常的想和你交个朋友﹐不知道愿意否﹖

使用特权

评论回复
6
quyuandong|  楼主 | 2008-3-11 09:26 | 只看该作者

结果

从网上前辈的经验来看,这个问题是emc_wice仿真调试软件设计的很次引起,
想确定是不是编的程序引起,要把程序放在软件模拟器中进行仿真才能知道,
对于中断以后,程序无法在正常全速运行,“需在程序增加辅助的eni才能正常调试”ENI加在哪?还不是太清楚,是加在中断程式中,还是加在运行程式中,没有一个明确的说明;

使用特权

评论回复
7
ddtv| | 2008-3-11 16:53 | 只看该作者

看看是不是中断入口前没加page 0

记得如果中断程序放在0页,中断入口前要加page0的

使用特权

评论回复
8
mikezhong| | 2008-3-11 19:08 | 只看该作者

OK

下面的给你参考.......

        ORG        0XFFF    
        JMP     START
        ORG     0X0001
        nop
        MOV     A_TEMP,A
        SWAPA   STATUS
        MOV     STATUS_TEMP,A
        mov     a,RSR
        MOV     RSR_TEMP,A     ;;以上是中断保护
        page0
        ;
        JMP INTTRUPT  
;-----------------------------
INTTRUPT:    
        BC     R3F,TCIF  
        ......
        ......                 
INT_EXIT:
        
        mov    A,RSR_TEMP         ;以下是中断恢复
        MOV     RSR,A
        SWAPA   STATUS_TEMP
        MOV     STATUS,A
        SWAP    A_TEMP
        SWAPA   A_TEMP
        RETI
;***********************************************
START:  
        wdtc
        ENI
        .......
        .......
        JMP    START

使用特权

评论回复
9
quyuandong|  楼主 | 2008-3-12 07:50 | 只看该作者

感谢

感谢ddtv大哥和mikezhong大哥热情的回复,小弟先谢谢啦!

不跳入001H中断还伴随另一个问题:
预分频设为1:256时,运行一个单指令,程序计数器会加1,双指令加2,
预分频设为1:2时,  运行一个单指令,程序计数器会加160-170不等,
程式在放在3楼,是不是WICE坏了?---待更换

使用特权

评论回复
10
quyuandong|  楼主 | 2008-3-12 09:17 | 只看该作者

更换E8-ICE后

在更换电脑,更换仿真器后,问题还是不能解决,确定是仿真器与设计软件不能完美结合所致!晕啊!

使用特权

评论回复
11
ddtv| | 2008-3-12 10:52 | 只看该作者

先查第二个问题

禁止所有中断和看门狗,再看看这个问题会不会出现“预分频设为1:2时,  运行一个单指令,程序计数器会加160-170不等,”

使用特权

评论回复
12
Etual| | 2008-3-12 16:55 | 只看该作者

不要做无用功了........

10楼兄弟的程序是正解

另外对于楼主的问题,
1,直接全速进中断,单步是不准的......

2,不要看那个TCC的值,那个也是不准的.......
想学习TCC溢出时间,很简单,在中断里面放一条
COM 0X06 
指令,然后用示波器量 P6 的波形,那就可以得到TCC的精确时间了......
然后修改预分频,看波形是不是相应的变化.
(别告诉我你没有示波器........)

使用特权

评论回复
13
谈的元| | 2008-3-12 20:13 | 只看该作者

呵呵,只要全速仿真没问题就OK

单步中断有待改进

使用特权

评论回复
14
mikezhong| | 2008-3-12 23:23 | 只看该作者

OK

14楼是熟手...

使用特权

评论回复
15
quyuandong|  楼主 | 2008-3-13 08:26 | 只看该作者

谢谢!

谢谢ddtv再次提醒,确认后,涛声依旧;

谢谢Etual大哥一针见血的点评,
示波器有一个,凑合着用吧:数字的;

使用特权

评论回复
16
286005374| | 2013-10-15 10:21 | 只看该作者
谈的元 发表于 2008-3-12 20:13
单步中断有待改进

你好  em78p447 我用tcc 跟 外部中断的时候  有时候 外部中断标志位 没有置1  但是有外部中断信号的 我设置了tcc的分频比 越低  这重现象越容易出现  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

8

帖子

0

粉丝