51单片机比较转移指令CJNE简介及举例

  • 51单片机比较转移指令CJNE简介及举例已关闭评论
  • 浏览(602)

条件转移指令是指在满足一定条件时进行相对转移。

(1)比较转移指令
CJNEA,#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大还是小了。
(2)举例:
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比较

MSD3458HB超高清4K数字电视芯片介绍 技术文章

MSD3458HB超高清4K数字电视芯片介绍

MSD3458HB概述: 1. MSTAR 单芯片方案特点:集成度高,功能强大,性价比高; 2. 模拟电视支持:PAL、NTSC、SECAM 制式解调; 3. 数字电视支持:ATSC(8VSB/J.8...
MST9104Q1液晶监视器显示芯片介绍 技术文章

MST9104Q1液晶监视器显示芯片介绍

Mstar MST9104Q1单芯片,内置DDR,功能全面,集成度高。MST9104Q1是最新最先进的的高清144Hz显示液晶监视器一体化SOC解决方案芯片。 配置有一个集成ADC/ PLL,整合多功...
MST98A0Q1超高清4K显示芯片介绍 技术文章

MST98A0Q1超高清4K显示芯片介绍

Mstar公司的MST98A0Q1是最新的4K(3840x2160)液晶显示器一体化SOC解决方案芯片,MST98A0Q1的关键功能包括: 1. 高品质的缩放引擎支持到超高清(3840x2160) e...
MSD6A358安卓智能电视芯片介绍 技术文章

MSD6A358安卓智能电视芯片介绍

MSD6A358ATH是一个强大的基于ARM处理器的智能电视解决方案,支持双8/10位LVDS输出,通道解码,MPEG解码,3D格式,以及由高性能AV编解码器和CPL支持的媒体中心功能。 关键性能介绍...