51单片机汇编程序入口后加的跳转指令"LJMP"是因为什么? 如:ORG 0 LJMP STAR ORG 0003H LJMP INT0S

[复制链接]
查看11 | 回复4 | 2011-2-25 21:58:57 | 显示全部楼层 |阅读模式
要弄明白这个问题,你要对51单片机的中断有一个初步的了解,我可以给你介绍一下。比方说你希望不管程序运行到哪里,只要你一按某个按键,就执行一段你预先写好的程序,然后再回到原来的地方继续。你按按键的动作可以视为单片机的一个I/O管脚电平由高到低(如果你把按键接在I/O和地之间)。在51单片机中,有两个I/O可以实现这样的功能(这就是外中断,ORG 0003H LJMP INT0S 中的INT0S就是外中断0,具体你可以查51单片机中断系统的资料)。那它到底是怎样实现的呢?比方说,某一时刻,你的按键按下了,处理器会知道满足了外中断的触发条件,那它会执行哪一段程序呢?设计师人为地给它规定了一个固定的地址,如外中断0被触发时就是跳到地址为0003
回复

使用道具 举报

千问 | 2011-2-25 21:58:57 | 显示全部楼层
ORG 0 的意思是它的下一条指令 LJMP STAR 地址是0,ORG是伪指令,本身不产生目标代码。LJMP 是长转移,LJMP STAR 是转移到标号是 STAR 的指令处执行。ORG 0003H LJMP INT0S 这两个指令是指在地址为0003的地方有一条转移指令,转到标号为 INT0S 的程序处执行,地址0003是外部中断0的向量地址
回复

使用道具 举报

千问 | 2011-2-25 21:58:57 | 显示全部楼层
这和单片机本身的设计有关了啊,51的000h是程序的入口地址,0003h是int0中断程序入口地址(后面还有很多不同的中断入口地址),单片机程序从000h开始执行,如果不直接跳转到其他位置(LJMP STAR),那么程序运行两三步后就进入中断程序里去了哦……才发现没有分……
回复

使用道具 举报

千问 | 2011-2-25 21:58:57 | 显示全部楼层
0地址开始的一小段是用来放置中断向量,一般只是放一条跳转指令ORG 0003H LJMP INT0S 表示跳转到中断0的处理程序,恩,你还是找个书看看吧,会说得比较清楚
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行