打印

FIR低通滤波 汇编程序求注释

[复制链接]
1453|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
木日雩|  楼主 | 2013-5-26 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
HIGHPASS        .set        0            ;if you want to use ,please set the value to 1
BANDPASS        .set        0
LOWPASS                .set        1
        .global        start,fir
        .mmregs
COFF_FIR_START: .sect  "coff_fir"
        .if LOWPASS       
        .include        "lowpass\lowpass.inc"
        .elseif BANDPASS
        .include        "bandpass\bandpass.inc"
        .else
        .include        "highpass\highpass.inc"       
        .endif

K_FIR_BFFR                .set        32
d_data_buffer        .usect        "fir_bfr",64
FIR_DP                        .usect        "fir_vars",0
d_filin                        .usect        "fir_vars",1
d_filout                 .usect        "fir_vars",100h
output                        .usect        "fir_vars",1

        .asg        AR4,FIR_DATA_P
        .asg        AR6,INBUF_P
        .asg        AR7,OUTBUF_P
        .asg        AR3,OUTBUF
        .sect        "fir_prog"   
        nop
start:
        LD                #FIR_DP,DP       
        STM                #d_data_buffer,FIR_DATA_P
        RPTZ    A,#K_FIR_BFFR-1
        STL                A,*FIR_DATA_P+
        STM                #d_filin,INBUF_P
        STM                #d_filout,OUTBUF_P     
        STM                #output,OUTBUF
        STM                #100h,BK
fir_loop:
        NOP    ;Add Breakpoint & porbe point
        LD                *INBUF_P,A
        CALL        fir
        STH                A,*OUTBUF_P+%
        STH                A,*OUTBUF
main_end:
        b                fir_loop   
               
fir:
;        SSBX        SXM                             
;    SSBX    FRCT
        STM                #d_data_buffer,FIR_DATA_P
        STL                A,*FIR_DATA_P
        STM                #(d_data_buffer+K_FIR_BFFR-1),FIR_DATA_P   

fir_task:
        RPTZ        A,#K_FIR_BFFR-1
        MACD        *FIR_DATA_P-,COFF_FIR_START,A
       
        RET
        .end                               

相关帖子

沙发
zhangmangui| | 2013-5-26 15:40 | 只看该作者
这个绝对有难度   汇编使用的人太少了

使用特权

评论回复
板凳
木日雩|  楼主 | 2013-5-26 22:30 | 只看该作者
只要某一块的功能大致介绍一下就可以了,不用太详细的啦~    求破啊!

使用特权

评论回复
地板
jlass| | 2013-5-27 09:26 | 只看该作者
本帖最后由 jlass 于 2013-5-27 09:28 编辑

大致给你讲一下
start:到main_end:是主函数
fir_loop到main_end是死循环调用fir函数(call fir)
b是无条件跳转
fir到RET(返回)是fir函数的主题
fir_task到RET中间的两句就是关键的算法
RPTZ:清累加器,重复下一句
MACD:带数据移位的乘累加指令

剩下的stl,sth,stm,ld都是赋值语句



使用特权

评论回复
5
木日雩|  楼主 | 2013-5-27 12:17 | 只看该作者
这样就很好啊,感谢大神!!!!!!!!!

使用特权

评论回复
6
木日雩|  楼主 | 2013-5-27 13:04 | 只看该作者
jlass 发表于 2013-5-27 09:26
大致给你讲一下
start:到main_end:是主函数
fir_loop到main_end是死循环调用fir函数(call fir)

HIGHPASS        .set        0            ;if you want to use ,please set the value to 1
BANDPASS        .set        0
LOWPASS                .set        1
        .global        start,fir
        .mmregs
COFF_FIR_START: .sect  "coff_fir"
        .if LOWPASS        
        .include        "lowpass\lowpass.inc"
        .elseif BANDPASS
        .include        "bandpass\bandpass.inc"
        .else
        .include        "highpass\highpass.inc"        
        .endif

K_FIR_BFFR                .set        32
d_data_buffer        .usect        "fir_bfr",64
FIR_DP                        .usect        "fir_vars",0
d_filin                        .usect        "fir_vars",1
d_filout                 .usect        "fir_vars",100h
output                        .usect        "fir_vars",1

        .asg        AR4,FIR_DATA_P
        .asg        AR6,INBUF_P
        .asg        AR7,OUTBUF_P
        .asg        AR3,OUTBUF
        .sect        "fir_prog"   
        nop

是什么功能?

使用特权

评论回复
7
zhangmangui| | 2013-5-27 23:38 | 只看该作者
jlass 发表于 2013-5-27 09:26
大致给你讲一下
start:到main_end:是主函数
fir_loop到main_end是死循环调用fir函数(call fir)

强!

使用特权

评论回复
8
vivilzb1985| | 2013-5-28 00:10 | 只看该作者
汇编程序的,忘得早差不多了。。。:L:L

使用特权

评论回复
9
jlass| | 2013-5-28 09:21 | 只看该作者
本帖最后由 jlass 于 2013-5-28 09:33 编辑
木日雩 发表于 2013-5-27 13:04
HIGHPASS        .set        0            ;if you want to use ,please set the value to 1
BANDPASS   ...

这些都是初始化的工作

.set可以认为是赋值操作,对一个数据
.sect也是赋值,但是是对一块数据
.usect同上,但是不给具体的值,只是开辟一块空间
.asg可以认为是重命名
.globle就是定义成全局变量



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝