BCD D0 K4M0 与 MOV D0 K4M0 有什么区别? 点击:820 | 回复:8



carboy109

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 3回
  • 年度积分:2
  • 历史总积分:42
  • 注册:2013年1月28日
发表于:2022-09-13 15:38:10
楼主
求助帖30分-已结帖

BCD D0 K4M0
MOV D0 K4M0
以上两条指令的区别是什么?

我在PLC上试了一下:
①当 D0 < 10 时,
BCD D0 K4M0   与 MOV D0 K4M0 的结果是一样的

②当D0=10 时,
BCD D0 K4M0 的结果是16(即:M4 ON, M0~M3 OFF, M5~M15 OFF)
MOV D0 K4M0 的结果是10 (即:M1、M3 ON ,  M0、M2 OFF ,  M4~M15 OFF)



楼主最近还看过



梦雨天涯

  • 精华:1帖
  • 求助:1帖
  • 帖子:226帖 | 348回
  • 年度积分:1419
  • 历史总积分:14108
  • 注册:2016年10月25日
发表于:2022-09-13 16:08:24
1楼

BCD,0到9999.也就是一位数对应K1M0,2位数对应K1M4,所以10对应K1M0对应0,K4M4对应1(M4为ON)
mov 直接是传送指令,直接10的二进制,也就是8+2,就是1和3位ON

121111115

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 378回
  • 年度积分:594
  • 历史总积分:21966
  • 注册:2016年1月20日
发表于:2022-09-13 22:55:04
2楼

我怎么感觉有人在胡扯呢?不好意思,我只是想发表一下我的理解。

BCD指的是BCD码,你的那个指令也是个转换指令,意思是将D0里边的数以BCD码的形式,存在M寄存器里,此时D0=10的时候实际上是十六进制的10H(这个地方读幺零,不读十,也可以读十六),这也说明这条指令的操作数是十六进制数,10H按位权展开就是0001 0000,在一个16位寄存器里的存储形式就是0000 0000 0001 0000 此时实际上D0=10时的十进制数为16,原因就是这条指令会认为你输入的10是10H。

MOV是一个传送指令,意思是将D0里边的数传到M寄存器里去,此时D0=10(这里读10,不读幺零),这说明MOV的操作数是十进制数,十进制10按照位权展开就是0000 1010,在一个16位寄存器里的存储形式就是0000 0000 0000 1010。此时D0=10是真的等于十,原因是这条指令认为你输入的10就是10,而不是10H。

综上,他俩的区别就是对D0里边的数的进制理解不一样,一个以为是十六进制,一个以为是十进制。


关育谋

  • [版主]
  • 精华:5帖
  • 求助:22帖
  • 帖子:738帖 | 5640回
  • 年度积分:68
  • 历史总积分:84034
  • 注册:2004年5月28日
发表于:2022-09-13 23:51:26
3楼

假设D0的值为10进制10:

那么BCD D0 K4M0后,K4M0的值就为10进制的16,这里是把D0的值10进制的10作为BCD码,即为16进制10,换算为10进制就是16;
那么MOV D0 K4M0后,K4M0的值依然是10进制10


糊涂8818

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:138
  • 注册:2022年9月14日
发表于:2022-09-14 02:40:53
4楼

学习学习

carboy109

  • 精华:0帖
  • 求助:2帖
  • 帖子:2帖 | 3回
  • 年度积分:2
  • 历史总积分:42
  • 注册:2013年1月28日
发表于:2022-09-14 15:54:01
5楼

"121111115" 的回复,发表在2楼
        对内容: 【我怎么感觉有人在胡扯呢?不好意思,我只是想发表一下我的理解。BCD指的是BCD码,你的那个指令也是个转换指令,意思是将D0里边的数以BCD码的形式,存在M寄存器里,此时D0=10的时候实际上是十六进制...】进行回复:

        -----------------------------------------------------------------


感谢2楼这位朋友的耐心解释,你说的很清楚,我明白了。

谢谢!

Smile-lyc

  • [管理员]
  • 精华:127帖
  • 求助:50帖
  • 帖子:3482帖 | 22331回
  • 年度积分:1963
  • 历史总积分:145694
  • 注册:2006年8月04日
发表于:2022-11-01 11:02:05
6楼

感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。

对于求助者要求:

1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;

2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。

3、求助答疑板块版主结贴时间一般滞后30~45天,以方便大家对求助问题答疑足够时间,也为了每一个优秀答疑人员都可以获取到自己的积分和MP奖励。



锤子精神

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 262回
  • 年度积分:13
  • 历史总积分:486
  • 注册:2019年4月10日
发表于:2022-11-27 11:15:41
7楼

感谢楼主分享学习学习学习

Hu工

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 35回
  • 年度积分:1200
  • 历史总积分:1282
  • 注册:2013年7月17日
发表于:2023-02-02 17:01:43
8楼

引用 "121111115" 的回复,发表在2楼
        内容: 我怎么感觉有人在胡扯呢?不好意思,我只是想发表一下我的理解。BCD指的是BCD码,你的那个指令也是个转换指令,意思是将D0里边的数以BCD码的形式,存在M寄存器里,此时D0=10的时候实际上是十六进制...

讲得通俗易懂, 你真是活雷锋啊!

热门招聘
相关主题

官方公众号

智造工程师