quote:以下是引用翼飞凌在2013-04-03 11:31:03的发言:
楼主的问题就是避免这样重复写程序,标题和帖子写的很清楚。
那输出改为寻址输出,程序如下
TITLE=程序注释
Network 1
LD M0.0
EU
O M2.0
O T38
AN T37
AN M0.1
= M2.0
Network 2
LD M2.0
TON T37, +90
Network 3
LD T37
O M1.1
AN T38
= M1.1
Network 4
LD M1.1
TON T38, +30
Network 5
LD M0.0
EU
S M0.2, 1
Network 6
LD M0.2
TON T39, +30
Network 7
LD T39
R M0.2, 1
Network 8
LD T39
O M2.1
O T41
AN T40
AN M0.1
= M2.1
Network 9
LD M2.1
TON T40, +60
Network 10
LD T40
O M1.2
AN T41
= M1.2
Network 11
LD M1.2
TON T41, +60
Network 12
LD M2.0
EU
LD M1.3
O M0.1
CTU C0, +999
Network 13
LD M0.1
MOVD +0, QD0
AENO
MOVW +0, QW4
Network 14
LD SM0.0
MOVW C0, VW8
AENO
-I +1, VW8
AENO
MOVW VW8, VW202
AENO
DIV +4, VD200
AENO
A M2.0
EU
AW= VW200, +0
LPS
AW<> C0, +1
INCD VD100
LPP
AW= C0, +1
MOVD &QB0, VD100
Network 15
LDN M3.0
LPS
MOVB 1, VB0
AENO
MOVB 2, VB1
AENO
MOVW VW200, VW206
AENO
MUL +2, VD204
AENO
RLB VB0, VB207
AENO
RLB VB1, VB207
LRD
A M2.0
LPS
EU
MOVB VB0, VB2
LPP
ED
MOVB 0, VB2
AW= C0, +22
= M1.3
LPP
LPS
A M2.1
LPS
EU
MOVB VB1, VB3
LPP
ED
MOVB 0, VB3
LPP
MOVB VB2, *VD100
ORB VB3, *VD100
输出以QB为基础,通过给QB赋不同的值确定输出的位。
4个脉冲就需要换一个QB,所以网络14寻址输出的地址,在QB0到QB5之间循环
网络15进行输出,在一个QB内,对输出进行左移,第一个脉冲输出2#11,第二个脉冲输出2#1100,第三个脉冲输出2#110000,第四个脉冲输出2#11000000,第五个脉冲更换输出地址后重复以上步骤。