📄 untitled1.c
字号:
mov.w R7,&tempDataOfOverFlowJudge
call #JUEDUIZHI
;判读是否超出Q13,超出就设置溢出标志
CALL #JUDGEOVERFLOWFLAG;
SAVEL1V MOV.W R7,tableVOfFFT(R5)
L1R MOV.W &L1VSIN,R8
ADD &L1RCOS,R8
mov.w tableROfFFT(R4),R7
sub.w R8,R7
;对计算结果取绝对值
;判断计算结果正负
;当为正时候,就不取反,当为负时候,就取反。
mov.w R7,&tempDataOfOverFlowJudge
call #JUEDUIZHI
;判读是否超出Q13,超出就设置溢出标志
CALL #JUDGEOVERFLOWFLAG;
SAVEL1R MOV.W R7,tableROfFFT(R5)
L0V MOV.W &L1VCOS,R7
sub.w &L1RSIN,R7
MOV.W tableVOfFFT(R4),R8
ADD R8,R7
;对计算结果取绝对值
;判断计算结果正负
;当为正时候,就不去反,当为负时候,就取反。
mov.w R7,&tempDataOfOverFlowJudge
call #JUEDUIZHI
;判读是否超出Q13,超出就设置溢出标志
CALL #JUDGEOVERFLOWFLAG;
SAVEL0V MOV.W R7,tableVOfFFT(R4)
L0R MOV.W &L1VSIN,R7
ADD &L1RCOS,R7
mov.w tableROfFFT(R4),R8
ADD R8,R7
;对计算结果取绝对值
;判断计算结果正负
;当为正时候,就不去反,当为负时候,就取反。
mov.w R7,&tempDataOfOverFlowJudge
call #JUEDUIZHI
;判读是否超出Q13,超出就设置溢出标志
CALL #JUDGEOVERFLOWFLAG;
SAVEL0R MOV.W R7,tableROfFFT(R4)
add &stepBetweenW,&shiftOfLowBf;将蝶形因子因子低位偏移量加上具有相同旋转因子的蝶形单元的跨距
jmp bfLoop
;整序程序
;-------------------------------------------------------通用寄存器使用列表-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
;R4----I
;R5----J
;R6----MN1=totalOfNum-1
;R7----计算过程中存放临时变量
;R9----K
;R10----NV2=N/2
;R11----N(totalOfNum),数据总量
BITREV
;R11----totalOfNum,数据总量
MOV.W &totalOfNum,R11
;R10----NV2=N/2
MOV.W &totalOfNum,R7
RRA R7 //算术右移
MOV.W R7,R10
;R6----MN1=totalOfNum-1
MOV.W &totalOfNum,R8
DEC R8
MOV.W R8,R6
;R4----I
MOV.W #1,R4
;R5----J
MOV.W #0,R5
;R4----I
;R6----MN1=totalOfNum-1
;I<MN1?
ILOOP CMP R6,R4
JL KSET
JMP fftRoutinStart
;R9----K
;R10----NV2=N/2
;K<-NV2
KSET MOV.W R10,R9
;R9----K
;R5----J
;K<=J?(J>=K)
KLOOP CMP R9,R5
JGE KJSET
JMP JSET
KJSET ;J<-J-K
;K<-K/2
SUB.W R9,R5
RRA R9
JMP KLOOP
JSET ;J<-J-K
ADD R9,R5
;I<J?
CMP R5,R4
JL EXCHANGEDATA
JMP ISET
;T<-A(J)
;A(J)<-A(I)
;A(I)<-T
EXCHANGEDATA RLA R5
RLA R4
MOV.W tableROfFFT(R5),R7
MOV.W tableROfFFT(R4),tableROfFFT(R5)
MOV.W R7, tableROfFFT(R4)
RRA R5
RRA R4
ISET
;R4----I
;I<-I+1
INC R4
JMP ILOOP
;-----------------------------------------------------------
;---------------取绝对值函数--------------------------------
;-----------------------------------------------------------
JUEDUIZHI:
TST.W &tempDataOfOverFlowJudge
JGE FANHUI
INV.W &tempDataOfOverFlowJudge
INC.W &tempDataOfOverFlowJudge
FANHUI RET
;-----------------------------------------------------------
;-----------------------------------------------------------
;---------------设置溢出标志函数----------------------------
;-----------------------------------------------------------
JUDGEOVERFLOWFLAG:
CMP.W #BITD,&tempDataOfOverFlowJudge //???????????
JL JFFANHUI
SETOVERFLAG MOV.W #1, &gradeOverFlowFlag
JFFANHUI RET
;-----------------------------------------------------------
;-----------------------------------------------------------
;---------------右移两位防止溢出函数----------------------------
;;-------------------------------------------------------通用寄存器使用列表-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
;R4作为序号
;-----------------------------------------------------------
SHUJUYIWEI:
CLR.W R4 ;
YIWEILOOP CMP.W &totalOfNum,R4
JL YIWEILOOPSET
RET
YIWEILOOPSET
;右移两位实部
RLA R4
RRA tableROfFFT(R4)
RRA tableROfFFT(R4)
;右移两位虚部
RRA tableVOfFFT(R4)
RRA tableVOfFFT(R4)
RRA R4
INC.W R4
JMP YIWEILOOP
;-----------------------------------------------------------
;-----------------------------------------------------------
;---------------正弦函数表--------------------------------
;-----------------------------------------------------------
sin_table
dw 0
dw 50
dw 101
dw 151
dw 201
;-----------------------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -