发布于 2010-11-21 11:07:39
15楼
我把程序导出了
单周期平均数程序:
ORGANIZATION_BLOCK 主程序:OB1
TITLE=
BEGIN
Network 1
LD SM0.0
CALL SBR0, 120, &VB100, VW0
END_ORGANIZATION_BLOCK
SUBROUTINE_BLOCK 平均值:SBR0
TITLE=子程序注释
VAR_INPUT
数量:INT;
起始地址:DWORD;
END_VAR
VAR_OUTPUT
平均值:INT;
END_VAR
BEGIN
Network 1 // 网络标题
// LW8 装入最小整数
// LW10 装入最大整数
// 累加器清零
LD SM0.0
MOVW -32768, LW8
MOVW 32767, LW10
MOVD 0, AC1
Network 2
// 循环次数为数据个数
LD SM0.0
FOR LW16, 1, LW0
Network 3
// 循环找出最大值和最小值,将最大值装入LW8,最小值装入LW10
//
// 将所有的数累加到AC1
LD SM0.0
LPS
AW>= *LD2, LW8
MOVW *LD2, LW8
LRD
AW<= *LD2, LW10
MOVW *LD2, LW10
LRD
ITD *LD2, AC0
AENO
+D AC0, AC1
LPP
+D 2, LD2
Network 4
NEXT
Network 5
// 累加和AC1减去一个最大值和一个最小值
LD SM0.0
ITD LW8, AC0
-D AC0, AC1
ITD LW10, AC0
-D AC0, AC1
Network 6
// 取平均,输出结果。
LD SM0.0
MOVW LW0, AC0
-I +2, AC0
ITD AC0, AC0
/D AC0, AC1
DTI AC1, LW6
Network 7 // 网络标题
// 网络注释
END_SUBROUTINE_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=中断程序注释
BEGIN
Network 1 // 网络标题
// 网络注释
END_INTERRUPT_BLOCK