找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3220|回复: 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;

回复

使用道具 举报

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 单片机教程网

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