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

📄 sine.lst

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


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

 stmt lvl     source

    1         /****************************************************************************** 
    2         ;  Module:              Sine 
    3         ;  Filename:    Sine.c
    4         ;  Project:             DSP library for XC166 microcontroller 
    5         ;------------------------------------------------------------------------------
    6         ;  Compiler:    Keil
    7         ;
    8         ;  Version:             V1.2
    9         ;
   10         ;  Description: Implementation of sine function                 
   11         ;             
   12         ;  Date:                April 2003 
   13         ;
   14         ;  History:             
   15         ;******************************************************************************/
   16         
   17         /******************************************************************************
   18         ; DataS Sine(   DataS   x );
   19         ;               
   20         ; INPUT:        
   21         ;               x                       By pi normalized input value between [-1,1] in 1Q15 format
   22         ;                                       x = xrad/pi, where xrad contains the angle in radians
   23         ;                                       [-pi,pi].
   24         ;               
   25         ; OUTPUT:       
   26         ;               y                       Output value in 1Q15 format     
   27         ;               
   28         ; ALGORITHM:
   29         ;               Using Taylor series to compute sin(x) with xrad in 1rd quadrant
   30         ;               (0-pi/2)
   31         ;                               sin(x) = 3.140625*x + 0.02026367*x^2 - 5.325196*x^3 + 
   32         ;                                                0.5446778*x^4 + 1.800293*x^5   
   33         ;
   34         ; REGISTER USAGE:
   35         ;       1.      From .c file to .asm file:
   36         ;                       definded by compiler                    
   37         ;
   38         ;       2.      From .asm file to .c file:
   39         ;                       (R4) = y
   40         ;
   41         ; Assumption: 
   42         ;                               
   43         ;*****************************************************************************/
   44         
   45         #include "DspLib_Keil.h"
   46         
   47         
   48         DataS Sine(DataS x)
   49         {
   50  1              DataS   sdata coeff[5] = {0x1CCE,0x08B7,0x0AACC, 0x0053,0x3240};
*** WARNING C189 IN LINE 50 OF SINE.C: 'coeff': storage class changed to 'static'
   51  1                                                      //hex values in 4Q12 format
   52  1        __asm
   53  1        {      
   54  1      
C166 COMPILER V6.04, SINE                                                                  09/04/2007 16:24:44 PAGE 2   

   55  1      //MAC registers initialization
   56  1              MOV             MCW,#0600h              ; MP=1, with left shift
   57  1       
   58  1      ;cheaking sign of input
   59  1              MOV             R5,x                    ;(R5)=x
   60  1              SHR             R5,#15                  ;(R5)>>15
   61  1      
   62  1      ;compuetr abs value of input
   63  1              MOV             R4,#0
   64  1              CoABS   R4,x                    ;(ACC)=abs(x)
   65  1              CoSTORE x,MAS                   ;(R12)=abs(x)
   66  1      
   67  1      ;cheak if abs(x)>0.5
   68  1              CMP             x,#4000h        
   69  1              JMPR    cc_SLE, loop    ;if abs(x)<0.5(pi/2), x is in 1rd and 4th quadrant
   70  1              SUB             x,#7FFFh                ;if abs(x)>0.5(pi/2), x is in 2nd and 3rd quadrant
   71  1              NEG             x
   72  1      loop:
   73  1              MOV             R6,#coeff               ;(R6)=pointer of data field
   74  1              CoMUL   x,[R6+]                 ;(ACC)=1.800293*x
   75  1              CoADD   R4,[R6+]                ;(ACC)=1.800293*x + 0.5446778
   76  1              CoSTORE R7,MAS                  ;(R7)=limited(ACC)      
   77  1              CoMUL   x,R7
   78  1              CoADD   R4,[R6+]                ;(ACC)=(1.800293*x + 0.5446778)*x - 5.325196
   79  1              CoSTORE R7,MAS
   80  1              CoMUL   x,R7
   81  1              CoADD   R4,[R6+]                ;(ACC)=((1.800293*x + 0.5446778)*x - 5.325196)*x + 0.02026367
   82  1              CoSTORE R7,MAS
   83  1              CoMUL   x,R7
   84  1              CoADD   R4,[R6]                 ;(ACC)=(((1.800293*x + 0.5446778)*x - 5.325196)*x + 0.02026367)*x
   85  1                                                              ;                       + 3.140625
   86  1              CoSTORE R7,MAS
   87  1              CoMUL   x,R7                    ;(ACC)=((((1.800293*x + 0.5446778)*x - 5.325196)*x + 0.02026367)*x
   88  1                                                              ;                       + 3.140625)*x
   89  1              CoSHL   #3                              ;(ACC)<<3, change format to 1Q15
   90  1              CoSTORE R4,MAS                  ;(R4)=sin(x)
   91  1      
   92  1              CMP     R5,#0
   93  1              JMPR    cc_EQ,return
   94  1              NEG             R4                              ;(R4)=sin(-x)                                     
   95  1      return:
   96  1      
   97  1          RET
   98  1       }
   99  1      
  100  1      }
  101         
  102         
  103                                                 


MODULE INFORMATION:   INITIALIZED  UNINITIALIZED
  CODE SIZE        =         104     --------
  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  =          10     --------
C166 COMPILER V6.04, SINE                                                                  09/04/2007 16:24:44 PAGE 3   

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


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

⌨️ 快捷键说明

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