|
*************************************************
基于TMS320C54CST数字和IP电话系统:DSP软件代码
硬件上以:TMS320C54CST+SI3016为主实现
*************************************************
.mmregs .def main .def daa_data spsa0 .set 38h spsd0 .set 39h dxr10 .set 23h drr10 .set 21h spsa1 .set 48h spsd1 .set 49h dxr11 .set 43h drr11 .set 41h
spsa2 .set 34h spsd2 .set 35h drr22 .set 30h drr12 .set 31h dxr22 .set 32h dxr12 .set 33h
spcr1 .set 00h spcr2 .set 01h rcr1 .set 02h rcr2 .set 03h xcr1 .set 04h xcr2 .set 05h srgr1 .set 06h srgr2 .set 07h mcr1 .set 08h mcr2 .set 09h rcera .set 0ah rcerb .set 0bh xcera .set 0ch xcerb .set 0dh pcr .set 0eh k_iptr .set 010111000b<<07 k_temp .set 1111111b data_dp .usect "filter_vars",0 main: nop stm #0,clkmd nop nop change: ldm clkmd,a nop nop and #01,a nop nop bc change,aneq stm #0011011000001111b,clkmd nop nop rpt #200 nop nop stm 4000h,sp ld #0h,dp
ldm pmst,a and #k_temp,a or #k_iptr,a stl a,ar6 mvdm ar6,pmst nop nop stm #2000h,ar3 stm #1ffeh,ar4 stm #1fffh,ar5 ld #80h,b nop nop st #10h,*ar4 st #7ff0h,*ar5 stm #0ffffh,tcr stm #07h,prd stm #08e0h,tcr
ssbx intm ssbx sxm st #2491h,swwsr
nop nop nop ssbx xf nop nop nop nop mcbsp0_init: rsbx cpl ; …… ; …… ; …… nop
mcbsp2_init: nop stm spcr1,spsa2 nop stm 06h,spsd2 nop stm spcr2,spsa2 nop stm 200h,spsd2 nop stm pcr,spsa2 nop stm 0eh,spsd2 nop stm rcr1,spsa2 nop stm 40h,spsd2 nop stm rcr2,spsa2 nop stm 4h,spsd2 nop stm xcr1,spsa2 nop stm 40h,spsd2 nop stm xcr2,spsa2 nop stm 4h,spsd2 nop rpt #50 nop stm spcr1,spsa2 nop stm 07h,spsd2 nop stm spcr2,spsa2 nop stm 201h,spsd2 nop rpt #50 nop nop
stm 0ffffh,ifr nop stm 0h,imr orm 40h,imr nop nop ssbx intm nop stm 0f010h,bscr nop rpt #60000 nop rpt #60000 nop rpt #60000 nop nop nop rsbx intm
loop: nop nop nop b loop
daa_data: ldm drr12,a nop nop nop nop nop nop stl a,*ar3+ stl a,*ar6 nop nop sub #1,b nop ld *ar4,a nop ld *ar4,a xor #2052h,a bc init,aneq
ld *ar6,a and #05h,a mvdk *ar5,dxr12 bc pre_rreg5,aeq ld *ar6,a and #01h,a bc read_data1,aneq mvdk *ar5,dxr12 b pre_wreg5
init: mvdk *ar5,dxr12 ld *ar4,a xor #0010h,a bc pre_wreg1,aeq ld *ar4,a xor #0011h,a bc wreg1,aeq ld *ar4,a xor #2053h,a bc save_data2,aeq ld *ar4,a xor #0090h,a bc pre_wreg9,aeq ld *ar4,a xor #0091h,a bc wreg9,aeq ld *ar4,a xor #0060h,a bc pre_wreg6,aeq ld *ar4,a xor #0061h,a bc wreg6,aeq ld *ar4,a xor #00d0h,a bc pre_wreg13,aeq ld *ar4,a xor #00d1h,a bc wreg13,aeq ld *ar4,a xor #00f0h,a bc pre_wreg15,aeq ld *ar4,a xor #00f1h,a bc wreg15,aeq ld *ar4,a xor #0100h,a bc pre_wreg16,aeq ld *ar4,a xor #0101h,a bc wreg16,aeq ld *ar4,a xor #0120h,a bc pre_wreg18,aeq ld *ar4,a xor #0121h,a bc wreg18,aeq ld *ar4,a xor #20F0h,a bc pre_wreg5_0,aeq ld *ar4,a xor #20F1h,a bc wreg5_0,aeq
ld *ar4,a xor #2050h,a bc pre_rreg5,aeq
ld *ar4,a xor #2051h,a bc rreg5,aeq
ld *ar4,a xor #0051h,a bc wreg5,aeq b save_data1
pre_wreg1: st #0001h,*ar5 st #0011h,*ar4 b save_data1 wreg1: st #0180h,*ar5 st #0090h,*ar4 b save_data1 pre_wreg9: rpt #60000 nop rpt #60000 nop st #0001h,*ar5 st #0091h,*ar4 b save_data1 wreg9: st #0900h,*ar5 st #0060h,*ar4 b save_data1
pre_wreg6: nop rpt #60000 nop rpt #60000 nop rpt #60000 nop st #0001h,*ar5 st #0061h,*ar4 b save_data1 wreg6: st #0600h,*ar5 st #00d0h,*ar4 b save_data1 pre_wreg13: rpt #60000 nop rpt #60000 nop st #0001h,*ar5 st #00d1h,*ar4 b save_data1 wreg13: st #0d00h,*ar5 st #00f0h,*ar4 b save_data1 pre_wreg15: st #0001h,*ar5 st #00f1h,*ar4 b save_data1 wreg15: st #0f44h,*ar5 st #0100h,*ar4 b save_data1 pre_wreg16: st #0001h,*ar5 st #0101h,*ar4 b save_data1 wreg16: st #1004h,*ar5 st #0120h,*ar4 b save_data1 pre_wreg18: st #0001h,*ar5 st #0121h,*ar4 b save_data1 wreg18: st #1200h,*ar5 st #20F0h,*ar4 b save_data1
pre_wreg5_0: st #0001h,*ar5 st #20F1h,*ar4 b save_data1 wreg5_0: st #0500h,*ar5 st #2050h,*ar4 b save_data1 pre_rreg5: st #07fffh,*ar5 st #2051h,*ar4 b save_data1 rreg5: st #2500h,*ar5 st #2052h,*ar4 b save_data1
pre_wreg5: st #0ff1h,*ar5 st #0051h,*ar4 b save_data1 wreg5: st #0501h,*ar5 st #02053h,*ar4 b save_data1
save_data2: st #0000h,*ar5 save_data1: bc save_data,bgt nop stm #2000h,ar3 nop ld #1800h,b nop save_data: nop rete nop nop nop nop
read_data1: b pre_rreg5 rete
|