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

📄 q15tofloat.lst

📁 基于c166的 FFT算法源程序
💻 LST
字号:
C166 COMPILER V6.04, Q15TOFLOAT                                                            09/04/2007 16:24:44 PAGE 1   


C166 COMPILER V6.04, COMPILATION OF MODULE Q15TOFLOAT
OBJECT MODULE PLACED IN Q15toFloat.OBJ
COMPILER INVOKED BY: C:\Keil\C166\BIN\C166.EXE Q15toFloat.c MODV2 BROWSE MODV2 DEBUG

 stmt lvl     source

    1         /****************************************************************************** 
    2         ;  Module:              Q15toFloa
    3         ;  Filename:    Q15toFloat.asm
    4         ;  Project:             DSP library for XC166 microcontroller
    5         ;------------------------------------------------------------------------------
    6         ;  Compiler:    Keil
    7         ;
    8         ;  Version:             V1.2
    9         ;
   10         ;  Description: Changign the Q15 format to IEEE floating format
   11         ;             
   12         ;  Date:                May 2003 
   13         ;
   14         ;  Copyright:   Infineon Technologies AG
   15         ;*****************************************************************************/
   16         
   17         /******************************************************************************
   18         ; float Q15toFloat(DataS        X);
   19         ;
   20         ; INPUTS:       
   21         ;               X               the input value in 1Q15 format
   22         ;
   23         ; RETURN:       
   24         ;               Y               the output value in floating format             
   25         ;               
   26         ; ALGORITHM: According to the IEEE-754 format
   27         ;                          
   28         ; REGISTER USAGE:
   29         ;       1.      From .c file to .asm file:
   30         ;                       defined by compiler
   31         ;       2.      Output:
   32         ;                       (R4)=mmmmmmmmmmmmmmmm
   33         ;                       (R5)=seeeeeeeemmmmmmm (s:sign; e:exponent; m:mantissa)
   34         ;
   35         ; Assumption:
   36         ;
   37         ;*****************************************************************************/
   38         
   39         #include "DspLib_Keil.h"
   40         
   41         float Q15toFloat(DataS  X)                              
   42         {
   43  1         __asm
   44  1        {
   45  1              MOV             R1,X                    ;(R1)=X
   46  1      //if X=0
   47  1              CMP             R1,#0
   48  1              JMPR    cc_NE,nozero
   49  1              MOV             R5,#0
   50  1              MOV             R4,#0
   51  1              JMPR    cc_UC,ende
   52  1      nozero:
   53  1      //if x=1
   54  1              CMP             R1,#7fffh
   55  1              JMPR    cc_NE,none
C166 COMPILER V6.04, Q15TOFLOAT                                                            09/04/2007 16:24:44 PAGE 2   

   56  1              MOV             R5,#3f7fh
   57  1              MOV             R4,#0ffffh
   58  1              JMPR    cc_UC,ende
   59  1      none:
   60  1      //get sign bit
   61  1              MOV             R2,R1           ;sign=(R2)=X in 1Q15
   62  1              SHR             R2,#0fh         ;(R2)>>15
   63  1              SHL             R2,#0fh 
   64  1      //comput abs(x)
   65  1              MOV             MAH,R1                  ;(ACC)=R1
   66  1              CoABS
   67  1              CoSTORE R1,MAS                  ;(R1)abs(x)
   68  1      //compute exponent and mantissa
   69  1              MOV             R3,#1                   ;initialize exp with 1, exp=(R3)
   70  1              MOV             R7,R1
   71  1              MOV             R6,R1                   ;manti=(R6), initialize mantissa
   72  1      loop1:
   73  1              AND             R7,#4000h               ;look the most significant bit
   74  1              JMPR    cc_NZ,loop2
   75  1              ADD             R3,#1
   76  1              SHL             R6,#1                   
   77  1              MOV             R7,R6
   78  1              JMPR    cc_UC,loop1
   79  1      loop2:
   80  1              ADD             R3,#1
   81  1              SHL             R6,#1
   82  1      //build the floating output according to IEEE format
   83  1              SUB             R3,#127
   84  1              NEG             R3
   85  1              SHL             R3,#7
   86  1              ADD             R3,R2
   87  1              MOV             R7,R6                   ;(R7)=manssi
   88  1              SHR             R7,#8
   89  1      //first output
   90  1              ADD             R7,R3                   ;building format for first register
   91  1              MOV             R5,R7                   ;(R5)=sign + exponent
   92  1      //second output         
   93  1              MOV             R7,#0                   ;output, (R4)=mantissa
   94  1              SHL             R6,#7
   95  1              ADD             R7,R6
   96  1              MOV             R4,R7                   
   97  1      
   98  1      ende:
   99  1              RET
  100  1      
  101  1        }
  102  1      }
  103         //------------------- END OF FILE ----------------------------------------------
  104                                                 


MODULE INFORMATION:   INITIALIZED  UNINITIALIZED
  CODE SIZE        =         100     --------
  NEAR-CONST SIZE  =    --------     --------
  FAR-CONST SIZE   =    --------     --------
  HUGE-CONST SIZE  =    --------     --------
  XHUGE-CONST SIZE =    --------     --------
  NEAR-DATA SIZE   =    --------     --------
  FAR-DATA SIZE    =    --------     --------
  XHUGE-DATA SIZE  =    --------     --------
  IDATA-DATA SIZE  =    --------     --------
  SDATA-DATA SIZE  =    --------     --------
C166 COMPILER V6.04, Q15TOFLOAT                                                            09/04/2007 16:24:44 PAGE 3   

  BDATA-DATA SIZE  =    --------     --------
  HUGE-DATA SIZE   =    --------     --------
  BIT SIZE         =    --------     --------
  INIT'L SIZE      =    --------     --------
END OF MODULE INFORMATION.


C166 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -