打印

单片机跳出中断后有时会导致复位是什么原因,这是部分程

[复制链接]
2684|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
youlingcao|  楼主 | 2013-5-2 16:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 youlingcao 于 2013-5-2 20:54 编辑

        ORG        5000H
MAIN:MOV SP,#60H        
        MOV        30H,#0                ;30H-33H显示缓冲区
        MOV        31H,#0
        MOV        32H,#0
        MOV        33H,#0        
        MOV 50H,#5                   ;存放温度设定值
        MOV 51H,#2
          MOV DPTR,#07100H                 ;选中8155
          MOV A,#3H
           MOVX @DPTR,A
    MOV        IP,#0FH                                ;中断优先级
        MOV        TCON,#05H          ;外部中断脉冲触发有效
        MOV        IE,#8FH                                ;中断总允许,允许定时器和外部中断
        MOV        TMOD,#55H                         ;接通外部技术引脚T0T1
        MOV TH0,#0FFH
        MOV TL0,#0FFH
        MOV        TH1,#0FFH
        MOV        TL1,#0FFH
    SETB TR0                                  ;启动定时器
    SETB TR1
           CLR P2.4
        CLR P2.6
TURN:
        LCALL WATER
        LCALL ZHUANHUAN ;调用读温度子程序
        LCALL DISPLAY
        LCALL WARN                ;水温水位报警
        AJMP TURN

PLUS:        ;温度加1中断
    PUSH 30H
    PUSH 31H
    MOV        TH0,#0FFH
    MOV        TL0,#0FFH
    MOV A,50H
        CJNE A,#9,CC
        MOV 50H,#0
        INC 51H
        AJMP CC1
        CC:INC 50H
  CC1:
        MOV 30H,50H
    MOV 31H,51H
        MOV R1,#07FH
CFU:LCALL DISP1                           ;将设定值显示一段时间
    DJNZ R1,CFU
        POP 31H
    POP 30H
  RETI
MINUS:      ;温度减1中断
    PUSH 30H
    PUSH 31H
    MOV        TH1,#0FFH
        MOV        TL1,#0FFH
    MOV A,50H
        CJNE A,#0,CC2
        MOV 50H,#9
        DEC 51H
        AJMP CC3
        CC2:DEC 50H
  CC3:
        MOV 30H,50H
    MOV 31H,51H
        MOV R1,#07FH
CFU1:LCALL DISP1
    DJNZ R1,CFU1
        POP 31H
    POP 30H
  RETI                                       

有时会复位,有时又正常,是什么原因?

新建 Microsoft Word 文档.rar

6.43 KB

相关帖子

沙发
NE5532| | 2013-5-2 16:24 | 只看该作者
世上单片机千千万,不知道楼主用的哪一种。但是请检查堆栈是否溢出以及看门狗。

使用特权

评论回复
板凳
youlingcao|  楼主 | 2013-5-2 19:18 | 只看该作者
本帖最后由 youlingcao 于 2013-5-2 19:21 编辑

10次里大概有2次会复位不明白为什么有时又是正常的

使用特权

评论回复
地板
youlingcao|  楼主 | 2013-5-2 19:20 | 只看该作者
NE5532 发表于 2013-5-2 16:24
世上单片机千千万,不知道楼主用的哪一种。但是请检查堆栈是否溢出以及看门狗。 ...


AT89C51  我不会检查堆栈溢出和看门狗   10次里大概有2次会复位

使用特权

评论回复
5
NE5532| | 2013-5-2 19:24 | 只看该作者
不会检查就没办法了,我们不可能隔空打牛。另外还需要检查电源系统是否存在瞬间跌落,复位端处理是否恰当。

使用特权

评论回复
6
hailin1530| | 2013-5-2 19:24 | 只看该作者
楼主我建议你用c51编程序吧,他娘的,在学校我也用的汇编,毕业找工作了,大部份公司要会c语言的应聘者,我现在又学c语言,汇编我都快忘了

使用特权

评论回复
7
youlingcao|  楼主 | 2013-5-2 19:29 | 只看该作者
NE5532 发表于 2013-5-2 19:24
不会检查就没办法了,我们不可能隔空打牛。另外还需要检查电源系统是否存在瞬间跌落,复位端处理是否恰当。 ...

应该是程序的问题,在其他的实验板上也会出现这个情况   简单的说说怎么检查嘛

使用特权

评论回复
8
youlingcao|  楼主 | 2013-5-2 19:30 | 只看该作者
hailin1530 发表于 2013-5-2 19:24
楼主我建议你用c51编程序吧,他娘的,在学校我也用的汇编,毕业找工作了,大部份公司要会c语言的应聘者,我 ...

我不会C啊,要从头学,来不及了,马上要交了

使用特权

评论回复
9
hailin1530| | 2013-5-2 19:32 | 只看该作者
youlingcao 发表于 2013-5-2 19:30
我不会C啊,要从头学,来不及了,马上要交了

悲剧呀,估计是毕业论文,亲,祝你好运了

使用特权

评论回复
10
NE5532| | 2013-5-2 19:35 | 只看该作者
youlingcao 发表于 2013-5-2 19:29
应该是程序的问题,在其他的实验板上也会出现这个情况   简单的说说怎么检查嘛 ...

我觉得你还是不能完全排除硬件的问题,毕竟你还在学校里,我们已经折腾了10多年的单片机了。堆栈请看教科书里怎么设置的,不能确认的情况下,至少保留10-16级堆栈。

使用特权

评论回复
11
youlingcao|  楼主 | 2013-5-2 20:23 | 只看该作者
NE5532 发表于 2013-5-2 19:35
我觉得你还是不能完全排除硬件的问题,毕竟你还在学校里,我们已经折腾了10多年的单片机了。堆栈请看教科 ...

堆栈设置改了,还是不行,偶尔还是会复位,这个复位是只有进入中断后才会出现的,而且同一个中断不是每次都会复位,还有其他可能性吗

使用特权

评论回复
12
liub_2014| | 2013-5-2 23:44 | 只看该作者
不懂的哦!

使用特权

评论回复
13
liub_2014| | 2013-5-2 23:44 | 只看该作者
希望大神们可以给点意见

使用特权

评论回复
14
yxm_wdy| | 2013-5-3 09:44 | 只看该作者
1 你是如何判断复位的,是用示波器量复位脚还是?
2 你将堆栈指针设低一点,MOV SP,#30H试试
3 或者是进中断没有将有些压栈,感觉复位
4 最大的问题是干扰,解决干扰的来源,或加看门狗,进中断 复位只是表象,比如电源 或继电器的开关吸收,改变程序存储器的指针,或在空的地方加
ORG  1000H
LJMP MAIN
ORG 2000h
LJMP MAIN

使用特权

评论回复
15
youlingcao|  楼主 | 2013-5-6 15:47 | 只看该作者
还是不行啊

使用特权

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

本版积分规则

1

主题

7

帖子

0

粉丝