找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5446|回复: 9
收起左侧

关于51单片机跳过中断向量地址的问题

[复制链接]
ID:284637 发表于 2018-2-21 17:30 | 显示全部楼层 |阅读模式
单片机程序代码是存入在程序存储器里,那代码是怎样跳过程序存储器中断向量的地址的呢?如下:

ORG   0JMP   START
ORG  03H
JMP INT0
START........

我的问题是START后的程序代码是怎样跳过中断向量的地址03H的?

我的理解:

ORG 03H
JMP INT0

说明了03H存放了JMP  INT0这个指令。其它程序代码会跳过这个地址存放。

不知这样理解是不正确。

请老师指教。
回复

使用道具 举报

ID:155507 发表于 2018-2-21 22:42 | 显示全部楼层
(ORG的解释:该伪指令的功能是规定其后面的目标程序或数据块的起始地址。它放在一段源程序(主程序、子程序)或数据块的前面,说明紧跟在其后的程序段或数据块的起始地址就是ORG后面给出的地址。)


00h这个地址能存8位的二进制数,00h后对应的就是01h以此类推,程序寄存器里面中断源入口地址是固定的属于保留地址 这个你最好不要再里面写入程序指令,写程序保持良好的习惯这很有好处的,如果说你写的程序过大装不下的话,可以外接存储设备来保存程序指令。


关于后ORG 03H 是被执行的问题。

ORG 03H 是外部中断0的中断服务地址,如果外部中断0被触发程序的pc指针就会指到org 03h ,不要问为什么 这是汇编的规定 。

到03h这后依然顺序执行 通过jmp ext1跳到存放中断服务程序的地方。这样0rg 03h被执行了,如果没有中断触发那么这个org 03h 就永远不会被执行

ORG 00H ;开始地址
JMP MAIN ;跳转到主程序
ORG 03H ;外部中断0地址
JMP EXT1 ;跳转
ORG 13H ;外部中断1地址
JMP EXT2 ;跳转

评分

参与人数 1黑币 +8 收起 理由
arthuryu + 8 赞一个!

查看全部评分

回复

使用道具 举报

ID:111634 发表于 2018-2-22 08:01 | 显示全部楼层
你的问题很简单,但需要从头从基础学起,否则给你解释了也理解不了。先学理论,打基础,否则,问题多多,事倍功半。
回复

使用道具 举报

ID:111634 发表于 2018-2-22 08:01 | 显示全部楼层
先学理论,打基础,就不会有这么多问题了,本坛至少有50%的问题属于此类情况。
回复

使用道具 举报

ID:282439 发表于 2018-2-22 08:22 | 显示全部楼层
我的理解:00H-100H是系统的保留区。用于安排中断向量的跳转。用户程序从ORG 100H开始,安排初始化即后面的MAIN.
回复

使用道具 举报

ID:284637 发表于 2018-2-22 11:23 | 显示全部楼层
angmall 发表于 2018-2-21 22:42
(ORG的解释:该伪指令的功能是规定其后面的目标程序或数据块的起始地址。它放在一段源程序(主程序、子程序 ...

START 后面的程序会放在程序存储器中的什么地址呢?它不是在ROM里顺序放么,不会有可能放到03H   13H 这些地址里去?

因为这个START 前面没有用ORG指令指定地址。
回复

使用道具 举报

ID:123289 发表于 2018-2-22 12:24 | 显示全部楼层
5#的理解是不完全对的。
51系统:
当RESET引脚作用时,程序自动从0000H取指令;
当INT0引脚作用时,且INT0中断被允许时,程序将现行的下一条指令地址压堆栈,再转向0003H取指,直到遇见RETI指令再返回(弹出运行的地址,回到原来位置)。
楼主要细读这些原理,理解了就不会有这些问题了。
51系统的中断地址是硬件固定好的,不可变。为了机动,所以这此地址上通常是放LJMP指令。当然可以直接放程序,但是程序会占用其它中断地址。如果没有其它中断,则是可以直接放程序的。
任何程序都可以运行到0000H-0100H中去,不是只有中断可以用这些地址的。
我们经常用:JMP 0000H,进行软件强制复位。
我处理这此地址的方案有两种,当然需要视情况决定采用哪一种:
1、放一条跳转指令:LJMP START (START是我的主程序起点);
2、放一条 RETI 指引令。

出两个题目给你做做,做对了你的单片机水平就大用长劲了。
1、JMP 0000H 与RESET,都会使用程序从0000H单元开始执行程序。有区别吗?
2、中断服务程序遇到RETI会返回,将 RETI 改为 RET,会怎样?

回复

使用道具 举报

ID:111634 发表于 2018-2-22 13:06 | 显示全部楼层
arthuryu 发表于 2018-2-22 08:22
我的理解:00H-100H是系统的保留区。用于安排中断向量的跳转。用户程序从ORG 100H开始,安排初始化即后面的 ...

100H,谁规定的?
回复

使用道具 举报

ID:284637 发表于 2018-2-23 12:24 | 显示全部楼层
yzwzfyz 发表于 2018-2-22 12:24
5#的理解是不完全对的。
51系统:
当RESET引脚作用时,程序自动从0000H取指令;

1,RESET,会初始化单片机,但JMP 不会



2,RETI可以清除优先级激活触发器,以保证后续中断源的及时响应
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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