您好, 登录| 注册|
论坛导航
您好, 登录| 注册|
子站:
商城:
论坛首页    单片机MCU/嵌入式
  •  发帖
  • 收藏

51单片机比较转移指令CJNE简介及举例
阅读: 95 |  回复: 1 楼层直达

2018/01/03 01:32:02
1
数控切割机
电源币:0 | 积分:0 主题帖:1 | 回复帖:10
LV1
士兵


QQ截图20160321155901 测试测量版区上线啦!送祝福赢好礼

QQ截图20160321155901 宝箱升级喽!开启探秘地宫之旅!




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

(1)比较转移指令 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大还是小了。 (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比较 
标签 51单片机
汽车类单模拟开关5-SOT-23 -40至125 双向电池供电系统USB-A 5V@2A输出设计 如何着手电源设计
6串400mA WLED驱动器带独立PWM调光 支持音频和充电的USB Type-C和供电迷你坞 创造一个带有较低额定输入电压控制器的150V非同步降压解决方案
用于汽车照明的低EMI高性能4通道LED驱动器 1A单输入单节锂离子电池充电器参考设计 通过电源模块提高电动工具设计的性能
2018/01/03 10:42:31
2
lingyan
电源币:3712 | 积分:37 主题帖:17 | 回复帖:667
LV7
旅长
这些都是很基本的知识,对新手有用
关注我们
新浪微博
官方Q群
客服热线
服务时间:周一至周五9:00-18:00
微信关注
免费技术研讨会
获取一手干货分享