分别取位? 点击:293 | 回复:16



运动天使

    
  • 精华:4帖
  • 求助:81帖
  • 帖子:120帖 | 940回
  • 年度积分:0
  • 历史总积分:2632
  • 注册:2010年10月22日
发表于:2013-01-10 22:29:07
楼主
1;任意输入一个4位十进制数,如9635,按下启动后,能把9      6      3      5    【千  百  十   个】位,分别送4个D【如d0   d1  d2  d3】?这个程序咋做?



liujian5118

  • 精华:2帖
  • 求助:8帖
  • 帖子:31帖 | 3109回
  • 年度积分:199
  • 历史总积分:19924
  • 注册:2009年3月25日
发表于:2013-01-11 08:12:16
1楼

9635  整除1000  得 9

9635  除1000取余 得635 

635   整除100  得 6

635  除100取余 得 35

35    整除10  得 3

35   除10取余 得 5

PLC好像商和余数只接存两寄存器。那更方便

开始写错了...

zhengchangchun

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 388回
  • 年度积分:0
  • 历史总积分:1919
  • 注册:2010年1月20日
发表于:2013-01-11 08:30:55
2楼

引用 liujian5118 的回复内容:9635  整除10  得 99635  除10取余 得635  635   整除10  得 6635  除10取余 得 3535    整除10  得 335   除10取余 得 5PLC好像商和余数只接存两寄存器。那更方便


楼上你强........


9635  除10取余 得635 


zhengchangchun

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 388回
  • 年度积分:0
  • 历史总积分:1919
  • 注册:2010年1月20日
发表于:2013-01-11 08:33:40
3楼

个人认为的方法是:先把这个十进制数据转换成bcd码,然后用 与 逻辑4位一提取,高位的进行一下右移就可以了。

星空依然蓝

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1233回
  • 年度积分:0
  • 历史总积分:2200
  • 注册:2008年11月23日
发表于:2013-01-11 08:38:03
4楼
不错,进来学习了。。。

ljbcompany

  • 精华:0帖
  • 求助:0帖
  • 帖子:5帖 | 1289回
  • 年度积分:0
  • 历史总积分:5847
  • 注册:2011年4月24日
发表于:2013-01-11 08:47:02
5楼

这要根据数据寄存器的值来分,一位数到四位数略有区别!基本方法是:整除(1000、100、10)、取余(MOD 10),就可以拆开来。

秦君_1

  • 精华:8帖
  • 求助:22帖
  • 帖子:148帖 | 4867回
  • 年度积分:1651
  • 历史总积分:39896
  • 注册:2005年6月28日
发表于:2013-01-11 11:02:16
6楼
  1. 4位十进制数二进制储存刚好16位。一个D就够用,假设将其存在D0
  2. 用D0与1111 0000 0000 0000和0000 1111 0000 0000和0000 0000 1111 0000和 0000 0000 0000 1111分别逻辑与,存入D1、D2、D3、D4之中,就是你举例中的9、6、3、5。

秦君_1

  • 精华:8帖
  • 求助:22帖
  • 帖子:148帖 | 4867回
  • 年度积分:1651
  • 历史总积分:39896
  • 注册:2005年6月28日
发表于:2013-01-11 11:07:56
7楼
引用 ljbcompany 的回复内容:整除取余:四位数除以1000、三位数除以100、二位数除以10、一位数除以1!



应该是整除取商。9635四位数除以1000取商9,余数635三位数除以100取商6,余数35两位数除以10取商3,余数5一位数除以1取商5就会得到。

运动天使

  • 精华:4帖
  • 求助:81帖
  • 帖子:120帖 | 940回
  • 年度积分:0
  • 历史总积分:2632
  • 注册:2010年10月22日
发表于:2013-01-11 21:27:32
8楼
回复内容:
对:秦君_1关于4位十进制数二进制储存刚好16位。一个D就够用,假设将其存在D0用D0与1111 0000 0000 0000和0000 1111 0000 0000和0000 0000 1111 0000和 0000 0000 0000 1111分别逻辑与,存入D1、D2、D3、D4之中,就是你举例中的9、6、3、5。内容的回复:

K9635=B0010  0101  1010  0011【如果取个位,与这几位 0000 0000 0000 1111】得出的不是5?

运动天使

  • 精华:4帖
  • 求助:81帖
  • 帖子:120帖 | 940回
  • 年度积分:0
  • 历史总积分:2632
  • 注册:2010年10月22日
发表于:2013-01-11 21:30:07
9楼
回复内容:
对:zhengchangchun关于个人认为的方法是:先把这个十进制数据转换成bcd码,然后用 与 逻辑4位一提取,高位的进行一下右移就可以了。内容的回复:


这样取个位可以,再取  百位【移位后其值一变】,取出的是错的

运动天使

  • 精华:4帖
  • 求助:81帖
  • 帖子:120帖 | 940回
  • 年度积分:0
  • 历史总积分:2632
  • 注册:2010年10月22日
发表于:2013-01-11 21:30:46
10楼

回复内容:
对:liujian5118关于9635  整除10  得 99635  除10取余 得635  635   整除10  得 6635  除10取余 得 3535    整除10  得 335   除10取余 得 5PLC好像商和余数只接存两寄存器。那更方便内容的回复:



好思路  多谢

 

 

芳季

  • [版主]
  • 精华:5帖
  • 求助:5帖
  • 帖子:86帖 | 5336回
  • 年度积分:0
  • 历史总积分:20165
  • 注册:2003年1月31日
发表于:2013-01-12 22:17:53
11楼
我看最好都是那个说转成BCD码那个了。一下子就得到各个位值了。

simonwu675

  • 精华:0帖
  • 求助:3帖
  • 帖子:11帖 | 794回
  • 年度积分:0
  • 历史总积分:2856
  • 注册:2009年11月23日
发表于:2013-01-12 23:16:29
12楼
思路都不错                学习啦

liujian5118

  • 精华:2帖
  • 求助:8帖
  • 帖子:31帖 | 3109回
  • 年度积分:199
  • 历史总积分:19924
  • 注册:2009年3月25日
发表于:2013-01-12 23:30:37
13楼

今天突然想了想反过来算会简单些!只接可以循环

zwm00306

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 1541回
  • 年度积分:0
  • 历史总积分:5963
  • 注册:2001年10月22日
发表于:2013-01-13 08:37:56
14楼
最好都是那个说转成BCD码那个了。一下子就得到各个位值了。

zhengchangchun

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 388回
  • 年度积分:0
  • 历史总积分:1919
  • 注册:2010年1月20日
发表于:2013-01-13 09:14:19
15楼
引用 运动天使 的回复内容:回复内容:对:zhengchangchun关于个人认为的方法是:先把这个十进制数据转换成bcd码,然后用 与 逻辑4位一提取,高位的进行一下右移就可以了。内容的回复:这样取个位可以,再取  百位【移位后其值一变】,取出的是错的


对于高位,逻辑与后,进行一次右移,例如十位数移动4bit  百位数移动8bit 千位数移动12bit。

小陶 _54

  • 精华:0帖
  • 求助:1帖
  • 帖子:20帖 | 402回
  • 年度积分:1
  • 历史总积分:952
  • 注册:2002年10月31日
发表于:2013-01-15 10:27:46
16楼
北京建马的组态软件,三菱驱动已写好,求三菱plc通讯测试,愿意者以一套组态软件回报。qq:2460675389

热门招聘
相关主题

官方公众号

智造工程师