宏指令
dsp吧
全部回复
仅看楼主
level 1
icecreamyao 楼主
试编写一阶低通滤波器算法宏指令
2009年11月01日 08点11分 1
level 1
;lowPassFunction,一阶低通滤波器算法     
;计算公式为Y(k)=a*X(k)+(1-a)Y(k-1),当采样周期T足够小时a=T/RC,
;宏中变量的定义:LPFOutputH与LPFOutputL分别为上次低通滤波器输出值高
;位和低位,LPFInput为当前低通滤波器输入采样值,Q15表示a为与低通滤波
;器参数和采样周期有关的常量假定宏参数全部在同一数据段中
lowPassFilter .macro   LPFOutputH LPFOutputL,a,LPFInput
setc   OVM;                 设置溢出模式位
spm   1;                       PREG移位模式,左移一位
ldp    #LPFOutputL;        设定页指针
lacl    LPFOutputL;     装载上一次低通滤波器输出值到ACC低位,小数部分主要是防止可能因为每次舍去尾数而使输出不会变化
add   LPF   OutputH,16; 装载上一次低通滤波器输出值到ACC高位,整数部分此时ACC中为Y(k-1)
lt   a;              与低通滤波器有关的常量
mpy    LPFInput;         计算a*X*(k)
apac;                    结果左移一位加入ACC,高位得Q15格式
mpy    LPFOutputH;      计算a*Y(k-1)
spac;                    左移一位,-a*Y(k-1)加到ACC中
sach    LPFOutputH;
sacl    LPFOutputL;       得到本次低通滤波输出
spm    0;                PM置零
clrc    OVM;             溢出模式位清空
endm;

2009年11月16日 06点11分 2
1