单片机程序执行顺序问题

2025-04-04 07:44:56
推荐回答(4个)
回答1:

LJMP MAIN;转到主程序处
ORG 0003H
LJMP INT0;转到中断0处
ORG 0013H
LJMP INT1;转到中断1处
ORG 0030H
MAIN: 主程序开始的地方
如果在程序运行中碰到有中断申请时,程序将自动转到中断处去执行,根据申请中断标志来判断转到那个中断处执行程序,
ORG 003H 中的003H是51系列单片机生产厂家规定的中断入口处别问为什么,我也不知道人家为什么定在那个地方

该程序中遇到LJMP MAIN时是执行MAIN:后面的程序
ORG 0003H
LJMP INT0
ORG 0013H
LJMP INT1
这个是有中断申请时才会执行,同时必须在中断未发生开打开中断申请允许,中断申请才有效。

回答2:

这个问题比较复杂!就正常而言,是在执行LJMP MAIN 跳转到MAIN主程序上。如果没有发生跳转命令就会顺序执行 LJMP INT0、LJMP INT1。程序执行过程中先要跳转到MAIN程序中,如果MAIN程序中有根据条件来跳过程序或是终止程序是就不会执行下面的程序。如果没有发生上面情况,程序回顺序执行MAIN、INT0、INT1.......你的程序正常情况是跳转执行MAIN程序,然后跳到ORG003H INT0,执行INT0程序,接下来就是执行ORG013H INT1,并跳转到INT1

回答3:

首先是在
org 0000h之后就遇到ljmp main,也就是跳转到main指向的主程序语句执行,如果主程序内初始化并开中断0的话,就在单片机遇到中断条件的时候执行int0指向的语句;同样如果在main里主程序内初始化并开中断1的话,就在单片机遇到中断条件的时候执行int1指向的语句。

回答4:

还没有学习中断吧?机器在遇到LJMP MAIN指令后PC被刷新,指向标号MAIN的地址开始执行指令,如果初始化了外部中断0(INT0),并且有INT0产生,则机器自动产生LJMP 0003H指令,即跳转到ORG 0003H的位置,再由指令LJMP INT0跳转到INT0标号的位置……