发布于 2007-11-01 13:59:19
0楼
//初始化部分,放入启动程式中
//MW0 存放下标
//MW2..MW40存放20次采样数据
//MW42平均值
L PIW 0
T MW 42 //第一次采样值当做平均值
//填充采样初值
L 20
_000: T LW 0 //局部变量
L 16
*I
L P#M 2.0
+D
LAR1
L PIW 0
T MW [AR1,P#0.0]
L LW 0
LOOP _000
//设定下一采样值存放位置
L 1
T MW 0 //设定初始下标为1
//以下为采样并计算平均值程式,放到定时中断中,中断时间为采样周期
L MW 0 //下标
L 1
>=I
JC _001
T MW 0
_001: TAK
L 20
<=I
JC _002
T MW 0
_002: NOP 0
//MW22 存放平均值
L MW 0
L 2
*I
L 8
*I
L P#M 2.0
+D
LAR1
LAR2
L MW 42
ITD
L 20
*I
L MW [AR1,P#0.0]
ITD
-D
L PIW 0 //本次采样值
T MW [AR2,P#0.0]
ITD
+D
L 20
/D
T MW 42
//修改下标
L MW 0
L 1
+I
L 20
<=I
JC _003
L 1
T MW 0
_003: NOP 0