签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
AC累加器存储器,一般用在那个地方,怎么用?求大神帮助,谢谢 THANK YOU IN ADEVICE
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1731030&b_id=64&s_id=0&num=15
可用于计算,数据类型转换,指针,临时变量,参数传递,可用的地方非常多
从百度复制黏贴而来:
CPU提供了4个32位累加器(AC0~AC3),可以按字节、字和双字来存取累加器中的数据。按字节、字只能存取累加器的低8位或低16位,双字存取全部的32位,存取的数据长度由所用的指令决定。可以像存储器那样使用读/写单元,例如可以用它向子程序传递参数,或从子程序返回参数,以及用来存放计算的中间值。
如果对它不甚了解,可以暂时不理睬它,不使用它。人家一个复杂、容量大的程序没有任何一个地方使用AC*, 人家的程序照样被评为优秀软件。
等你有空时,再去慢慢理解AC累加器。如果没有空,10年8年不去使用它们,都不会影响你的的编程。不过你对它不甚了解,可能看别人家使用了累加器的程序会效率低些,仅此而已。
在200PLC中,AC就是公共资源,一共2套,中断使用一套,非中断使用一套。
AC是不可多得的宝贵资源,弃之可惜,应多多利用。
使用AC的好处,就是可以少动脑筋,还有就是指令码短,编译后的程序容量小。
有一利就有一弊。毕竟AC才4个,属于公共资源,不可能指望长线使用不冲突。
所以,AC适合短线、临时、可视范围内使用。
AC0~AC4,可以按8,16,32位访问。
不同的是,AC1~AC3可以作为指针使用,AC0不可以,比如MOVW *AC0 ,VW1 *AC0处会报错。
个人体会:主程序和子程序中可以使用累加器,在中断程序中尽量不用。
可以看一下这段程序就可以理解AC0的作用了
楼主, 可以说cpu的计算就是通过累加器来进行的。
所有的操作, 都归结为cpu指令。
而所有的指令, 几乎都要操作累加器和 程序计数器。
如果有一个字节型的数据要转换成浮点数,那你试一下编程看看,然后告诉你AC怎么用?这是最明显的一个优势。
才知道中断里面有一套累加器。
我想问问yanxiao老师:中断里面的那套累加器寻址的话,是AC几?
9494,做了这个程序,就知道累加器的优越性了。
引用3楼详细内容:
一样地叫ac。只是此ac不同彼ac。
主程序和其调用的子程序共用一套ac。中断程序和其调用的子程序共用另一套ac。
如果主程序和中断都在调用同一个子程序。那么……我也不知道会怎样。大家猜。
最优越的这份工作我也很少使用AC。
更多使用的是:当有些子程序输出参数我没有必要使用的时候,但是调用了又必须写个东西在管脚上,这个时候不管哪里都填AC0。AC0不行就填L0.0。完美。
写的详细!
看着这个就明白了,很直观
引用8楼详细内容:
我猜。假是A子程序,被主程序和子程序都调用。
先说L区。
如果主程序调用A时,发生中断,中断又调用A,现在,A中的L区是不会共用?
不会。系统分配不同的L区给主程序和中断。
再说AC。
既然有两套,主程序 和 中断 的AC,当然不会冲突,各用各的。
实际上,只要数据不和指令是绑定的,从任何地方调用子程序,都不应当发生冲突。
例外的情况,就是指令本身包含数据!
比如沿指令、计数器、定时器。。。等。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录