找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2730|回复: 3
打印 上一主题 下一主题
收起左侧

AT89C51单片机最小中断程序出错

[复制链接]
跳转到指定楼层
楼主
ID:74577 发表于 2015-3-31 09:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
KEIL软件中,尝试在中断0处理程序中加一个堆栈指令,就会出错,程序如下,执行中断后,SP会指向AJMP  MAIN;不知道为何出现这种情况。
ORG                0000H
AJMP        MAIN;
ORG                0003H
AJMP        INT0_REN;
ORG                0030H
MAIN:
        SETB        IT0;
        SETB        EX0;
        SETB        EA;
MAIN1:
        NOP;
        LCALL        DELAY;
        NOP;
        NOP;
        NOP;
        NOP;
        LCALL        DELAY;
        AJMP        MAIN1;
INT0_REN:
        CLR        EA;
;        MOV        SP,#0X001C;
        MOV        SP,#0X68;
        PUSH        ACC;
        NOP;
        NOP;
        NOP;
        NOP;
        POP        ACC;
        SETB        EA;
        RETI;
DELAY:
        NOP;
        NOP;
        NOP;
        RET;
END;

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:74577 发表于 2015-3-31 12:02 | 只看该作者
去掉SP指令即可
回复

使用道具 举报

板凳
ID:7485 发表于 2015-3-31 22:49 | 只看该作者
栈底哪能是可以在程序中间随便改的!
    “    MOV        SP,#0X68;”
回复

使用道具 举报

地板
ID:75854 发表于 2015-4-1 08:57 | 只看该作者
程序问题太多,一开始就进入了死循环
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表