mao20063616
没有比脚更长的路,没有比人更高的山.
级别: 略有小成
精华主题: 0
发帖数量: 253 个
工控威望: 362 点
下载积分: 711 分
在线时间: 396(小时)
注册时间: 2007-09-01
最后登录: 2024-05-11
查看mao20063616的 主题 / 回贴
楼主  发表于: 2008-10-21 09:30



程序为什么不能循环,请高手指点!
勇闯天涯
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看勇闯天涯的 主题 / 回贴
1楼  发表于: 2008-10-21 10:14
不知道能用这个程序来干嘛?

这个程序将以如下步骤进行运行:
开机后
第1个运行周期:由于D0=0,故置位M1,复位M2
                执行INC  D0,得D0=1
                                执行ADD  D2  D0   D2,得D2=1
                                0+1=1
第2个运行周期:执行INC  D0,得D0=2
                                执行ADD  D2  D0   D2,得D2=3
                                1+2=3
第3个运行周期:执行INC  D0,得D0=3
                                执行ADD  D2  D0   D2,得D2=6
                                3+3=6
第4个运行周期:执行INC  D0,得D0=4
                                执行ADD  D2  D0   D2,得D2=10
                                6+4=10
第5个运行周期:执行INC  D0,得D0=5
                                执行ADD  D2  D0   D2,得D2=15
                                10+5=15
如此循环,直到D0=100,复位M1,置位M2,假设此时D2=x(具体等于多少先不追究)
第101个运行周期:由于D0=100,故复位M1,置位M2
                执行DEC  D0,得D0=99
                                执行SUB  D2  D0  D2,得D2=x-99
                                x-99=x-99
第102个运行周期:由于D0=99,故置位M1,复位M2
                执行INC  D0,得D0=100
                                执行ADD  D2  D0   D2,得D2=x+1
                                x-99+100=x+1
第103个运行周期:由于D0=100,故复位M1,置位M2
                执行DEC  D0,得D0=99
                                执行SUB  D2  D0  D2,得D2=x-98
                                x+1-99=x-98
第104个运行周期:由于D0=99,故置位M1,复位M2
                执行INC  D0,得D0=100
                                执行ADD  D2  D0   D2,得D2=x+2
                                x-98+100=x+2
第105个运行周期:由于D0=100,故复位M1,置位M2
                                执行DEC  D0,得D0=99
                                执行SUB  D2  D0  D2,得D2=x-97
                                x+2-99=x-97
第106个运行周期:由于D0=99,故置位M1,复位M2
                                执行INC  D0,得D0=100
                                执行ADD  D2  D0   D2,得D2=x+3
                                x-97+100=x+3
之后的程序将如此循环,D0的值将在99和100之间变来变去,D2的值将一直递增

楼主怎么说没有循环呢?

刚才发现周期分析上有错误,过来说明一下,上面说到的第102和103个周期其实应该在一个周期内就完成了,我却把他分析成一个周期
运行结果是一样的
[ 此帖被勇闯天涯在2008-10-21 11:32重新编辑 ]
勇闯天涯
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看勇闯天涯的 主题 / 回贴
2楼  发表于: 2008-10-21 10:24
噢?6楼的兄弟,请赐教!
勇闯天涯
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看勇闯天涯的 主题 / 回贴
3楼  发表于: 2008-10-21 10:30
M0?我怎么没看到楼主的程序里面出现M0呢?
莫非是我楼主的程序的还没看完?我只看到第25步,而且是执行到END,后面的程序我没看到

请赐教,在楼主的这个程序里面M0在哪里?起什么作用?怎么工作?
勇闯天涯
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看勇闯天涯的 主题 / 回贴
4楼  发表于: 2008-10-21 10:37
请pony123 兄弟说出你对这个程序的分析好吗?

到现在我还认为我分析的是对的,希望你能用你的逻辑推理把我说服
结果谁对谁错都不重要,重要的是大家共同进步!
勇闯天涯
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看勇闯天涯的 主题 / 回贴
5楼  发表于: 2008-10-21 10:47
请教一个问题
为什么D0没有递加呢?

楼主的程序里面是INC,而不是INCP,我认为只要M1置1,每个运算周期执行一次该命令
请赐教。
勇闯天涯
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看勇闯天涯的 主题 / 回贴
6楼  发表于: 2008-10-21 10:54
引用
引用第15楼pony123于2008-10-21 10:52发表的  :
INC是上升沿触发指令只执行一次,INCP是周期执行指令

说到这里我还是打住吧,你先看看手册再来回帖好吗?
很高兴认识你!
交个朋友,如何?
勇闯天涯
级别: *
精华主题: * 篇
发帖数量: * 个
工控威望: * 点
下载积分: * 分
在线时间: (小时)
注册时间: *
最后登录: *
查看勇闯天涯的 主题 / 回贴
7楼  发表于: 2008-10-21 11:00
同意站长的说法,我在猜测,可能楼主的意思是希望D0在1至100,再从100到1,再从1到100.。。。。如此循环变化

如果是这样,不妨参考站长发的那个程序

或者用STL步进指令就很好解决,D0递增时是一个状态,D0递减时又是另外一个状态
这就是步进指令的好处