⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untitled1.c

📁 FFT汇编
💻 C
📖 第 1 页 / 共 2 页
字号:
                  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 + -