发布于 2010-11-21 13:44:57
16楼
多周期平均数程序:
ORGANIZATION_BLOCK 主程序:OB1
TITLE=
BEGIN
Network 1
LD SM0.0
CALL SBR0, 120, &VB100, VW300
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK 平均值:SBR0
TITLE=子程序注释
VAR_INPUT
数量:INT;
起始地址:DWORD;
END_VAR
VAR_OUTPUT
平均值:INT;
END_VAR
BEGIN
Network 1 // 网络标题
LDW= VW12, 0
MOVW -32768, VW0
MOVW 32767, VW2
MOVD 0, VD4
MOVD LD2, VD8
Network 2
LD SM0.0
LPS
AW>= *VD8, VW0
MOVW *VD8, VW0
LRD
AW<= *VD8, VW2
MOVW *VD8, VW2
LRD
ITD *VD8, AC0
LRD
+D AC0, VD4
LPP
+D 2, VD8
Network 3
LD SM0.0
INCW VW12
Network 4
// 数据的和AC1减去最大值和最小值
LDW= VW12, LW0
ITD VW0, AC0
-D AC0, VD4
ITD VW2, AC0
-D AC0, VD4
Network 5
// 取平均
LDW= VW12, LW0
MOVW LW0, AC0
-I +2, AC0
ITD AC0, AC0
MOVD VD4, AC1
/D AC0, AC1
DTI AC1, LW6
MOVW 0, VW12
Network 6 // 网络标题
// 网络注释
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
END_INTERRUPT_BLOCK