签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
smart200指针能不能操作位?
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1693854&b_id=64&s_id=0&num=16
双字就包含位......然后取双字里面得位
可以用编程的方式达成。
一个月前就发过这样的帖。要找找。
可以的,论坛里有相关的帖子。
能不能附带帖子的连接啊
楼主,哥们。你找也是找,观众找也是找,何苦要为难观众?就在论坛本版块,一个月以内的回帖。
这东西可遇不可求,遇到的时候可能一眼略过。要的时候找一天都找不到。
我的意思是有人正好看到了 就分享下 我也找了好久 没看到
那现在找到了吗?
没有。找了个提供思路的,说什么用L, Ln.m 没明白
我说我已经把帖子顶上来第一页了,还说出名字来了,还是找不到吗?
你不需要明白,你只要用就可以了。
楼主是否要这个?
http://www.ad.siemens.com.cn/club/bbs/post_one_floor.aspx?b_id=64&a_id=1684633
这个基本上懂了 大概就是: (举例:起始字节QB0 ; 偏移地址LW1=16#0103,也就是Q1.3)
第一步:指针化起始字节(这里是QB0--P0);
举例中起始字节QB0
第二步:指针化偏移地址(这里是LB1--P1_D)+指针化的起始字节(P0)=指针目标字节(P1); 举例中偏移地址是1+起始字节0(P0)=指针目标字节1(P1)也就是QB1
第三步:将对应的QB字节(P1)传送到缓存字节中Out_B(QB1的缓存区)中;
举例中Out_B (QB1的缓存区)=0000 0000 举例要移动的位为红色,第3位
第四步:将要操作的位(也就是LB2=3)做为移位的位数移至最低位:
举例中Out_B (QB1的缓存区)=0000 0000
第五步: 将缓存区最低位置1:
举例中Out_B (QB1的缓存区)=0000 0001
第六步: 将置1的最低位移按照LB2回至开始的位置;
举例中Out_B (QB1的缓存区)=0000 1000
第7步: 将Out_B(QB1的缓存区) 映射到QB1(实际地址)
举例中Out_B (QB1的缓存区)=0000 1000 = QB1=0000 1000。
这样理解对吗?
@WWCWWC 在我的提问里问我这个东西有什么用? 一个执行机构假设有10个属性,如果我不能定位这个执行机构的所有属性,那么对于我来说这个执行机构就是10个点,如果我能定位到他所有的属性,那么他对于我来说就只有1个点,就是这个设备本身。10个执行机构组成一个功能单元就有100个点,如果我能定位到这个功能单位的所有点且不怎么占资源,那么对于我来说这功能单位就是1个点。如此累加 复杂程序就会变得简单,哪怕只是工作量上的简单也行。
原则上,通过移位的方式寻址点,是可行的。
但是细想,存在一个很隐蔽的问题:如果是寻址位读取,没问题,如果是寻址位写入,则可能引发问题。
因为,移位方式寻址到 位再到最终的位写入,经历了多条指令的执行。
这期间,有可能发生中断程序的执行,打断了位寻址写入程序。
一个字节有多位组成,如果在中断中,对同一字节内的其它位执行写入,就会产生冲突问题。
所以,最好是在移位寻址前关闭中断,完成后再打开。
关中、开中指令不要写入子程序中,写在调用程序部分比较好,因为不一定使用。
无条件插入关中、开中指令,会使原本不需要开启中断的情况下,意外开启中断。
不过,解决方法总比问题多。
有一种方法,可以在一条指令中完成间接寻址位的写入过程,不怕中断程序的打断。
前面的相关贴子中提到过。
这个问题我也想过,我不想它太占资源 尤其是时间资源,真的怕中断了 完了 我还没想到办法
用解码指令吗
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录