<meta name="keywords" content="必胜时时彩开户,keywords" /> 14课:单片机条件转移指令 联系我们

14课:单片机条件转移指令

条件转移指令是指在知足一定条件时阻拦相对转移。

判A内容能否为0转移指令

JZ rel

JNZ rel

第一指令的功效是:假定(A)=0,则转移,否则序次推行(推行本指令的下一条指令)。转移到甚么地方去呢?假定凭证传统的措施,就要算偏移量,很费事,幸亏现在我们能借助于机械汇编了。是以这第指令我们能这样明确:JZ 标号。即转移到标号处。下面举一例诠释:

MOV A,R0

JZ L1

MOV R1,#00H

AJMP L2

L1: MOV R1,#0FFH

L2: SJMP L2

END

在推行下面这段法式模范模范前假定R0中的值是0的话,就转移到L1推行,是以事实的推行效果是R1中的值为0FFH。而假定R0中的值不即是0,则序次推行,也就是推行 MOV R1,#00H指令。事实的推行效果是R1中的值即是0。

第一条指令的功效清晰了,第二条虽然就好明确了,假定A中的值不即是0,就转移。把下面的谁人例程中的JZ改成JNZ尝尝吧,看看法式模范模范推行的效果是甚么?

较量转移指令

CJNE A,#data,rel

CJNE A,direct,rel

CJNE Rn,#data,rel

CJNE @Ri,#data,rel

第一条指令的功效是将A中的值和急速数data较量,假定二者相等,就序次推行(推行本指令的下一条指令),假定不相等,就转移,异常地,我们能将rel明确成标号,即:CJNE A,#data,标号。这样应用这条指令,我们便可以断定两数能否相等,这在许多场所是异常有用的。但有时还想得知两数较量以后哪个年夜,哪个小,本条指令也具有这样的功效,假定两数不相等,则CPU还会反映出哪个数年夜,哪个数小,这是用CY(进位位)来完成的。假定前面的数(A中的)年夜,则CY=0,否则CY=1,是以在法式模范模范转移后再次应用CY便可断定出A中的数比data年夜还是小了。

例:

MOV A,R0

CJNE A,#10H,L1

MOV R1,#0FFH

AJMP L3

L1: JC L2

MOV R1,#0AAH

AJMP L3

L2: MOV R1,#0FFH

L3: SJMP L3

下面的法式模范模范中有一条单片机指令我们还没学过,即JC,这条指令的原型是JC rel,作用和下面的JZ类似,但是它是判CY是0,还是1阻拦转移,假定CY=1,则转移到JC前面的标号处推行,假定CY=0则序次推行(推行它的下面一条指令)。

剖析一下下面的法式模范模范,假定(A)=10H,则序次推行,即R1=0。假定(A)不即是10H,则转到L1处一连推行,在L1处,再次阻拦断定,假定(A)>10H,则CY=1,将序次推行,即推行MOV R1,#0AAH指令,而假定(A)<10H,则将转移到L2处指行,即推行MOV R1,#0FFH指令。是以事实效果是:本法式模范模范推行前,假定(R0)=10H,则(R1)=00H,假定(R0)>10H,则(R1)=0AAH,假定(R0)<10H,则(R1)=0FFH。

弄懂了这条指令,其它的几条就类似了,第二条是把A当中的值和直接地址中的值较量,第三条则是将直接地址中的值和急速数较量,第四条是将间址寻址取得的数和急速数较量,这里就不详谈了,下面给出几个对应的例程。

CJNE A,10H ;把A中的值和10H中的值较量(重视和上题的差异)

CJNE 10H,#35H ;把10H中的值和35H中的值较量

CJNE @R0,#35H ;把R0中的值作为地址,以后地址中取数并和35H较量

循环转移指令

DJNZ Rn,rel

DJNZ direct,rel

第一条指令在前面的例程中有详细的剖析,这里就不多谈了。第二条指令,只是将Rn改成直接地址,其它一样,也不多说了,给一个例程。

DJNZ 10H,LOOP

3.挪用与前往指令

(1)主法式模范模范与子法式模范模范 在前面的灯的实验中,我们已用到过了子法式模范模范,只是我们并没有明确地简介。子法式模范模范是干甚么用的,为甚么要用子法式模范模范手艺呢?举个例程,我们数据师长教员部署了10道算术题,经由不雅不雅察,每道题中都网罗一个(3*5+2)*3的运算,我们能有两种选择,第一种,每做一道题,都把这个算式算一遍,第二种选择,我们能先把这个效果算出来,也就是51,放在一边,然后要用到这个算式时就将51代出来。这两种措施哪一种更好呢?不用多言。设计法式模范模范时也是这样,有时一个功效会在法式模范模范的纷歧样地方重复应用,我们便可以把这个功效做成一段法式模范模范,每次须要用到这个功效时就“挪用”一下。

(2)挪用及回历程:主法式模范模范挪用了子法式模范模范,子法式模范模范推行完以后必须再回到主法式模范模范一连推行,不克不及“一去不转头”,那么回到甚么地方呢?是回到挪用子法式模范模范的下面一条指令一连推行(虽然啦,要是还回到这条指令,不又要再挪用子法式模范模范了吗?那可就没完没了了……)。参考图1

挪用指令

LCALL addr16 ;长挪用指令

ACALL addr11 ;短挪用指令

下面两条指令都是在主法式模范模范中挪用子法式模范模范,二者有一定的差异,但在泉源学习单片机的这些指令时,能不加以差异,而且能用LCALL 标号,ACALL 标号,来明确,即挪用子法式模范模范。

(5)前往指令则说了,子法式模范模范推行完后必须回到主法式模范模范,若何前往呢?只需推行一条前往指令便可以了,即推行  ret指令

4.空操作指令

nop   就是 空操作,就是甚么事也不干,停一个周期,浅易用作短时间的延时。