亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? trig.s

?? Source Code for Sensorless FOC for PMSM with PFC for dsPIC30F6010A
?? S
字號:
;*******************************************************************
; Trig
;  
;Description:        
;  Calculate Sine and Cosine for specified angle using linear interpolation
;  on a table of 128 words.
;
;  The table is stored in program memory space and accessed using 
;  program space visibility (PSV).  CORCON and PSVPAG are preserved
;  during the routine to avoid compiler conflicts.
;
;  This routine works the same for both integer scaling and 1.15 scaling.
;
;  For integer scaling the Angle is scaled such that 0 <= Angle < 2*pi 
;         corresponds to 0 <= Ang < 0xFFFF. The resulting Sin and Cos
;         values are returned scaled to -32769 -> 32767 i.e. (0x8000 -> 0x7FFF).
;
;  For 1.15 scaling the Angle is scaled such that -pi <= Angle < pi 
;         corresponds to -1 -> 0.9999 i.e. (0x8000 <= Ang < 0x7FFF). The 
;         resulting Sin and Cos values are returned scaled to -1 -> 0.9999
;         i.e. (0x8000 -> 0x7FFF).
;
;Functional prototype:
;  void SinCos( void )
;
;On Entry:   ParkParm structure must contain qAngle
;On Exit:    ParkParm will contain qSin, qCos.  qAngle is unchanged.     
;
;Parameters: 
; Input arguments: None
;
; Return:
;   Void
;
; SFR Settings required:
;         CORCON.IF    = 0
;         CORCON.PSV   = 1
;
;
; Support routines required: None
;
; Local Stack usage: 0
;
; Registers modified: w0-w7
;
; Timing:
;  About 41 instruction cycles
;
;*******************************************************************
;
          .include "general.inc"

; External references
          .include "park.inc"

; Constants
          .equ TableSize,128

; Local register usage
          .equ Work0W, w0        ; Working register
          .equ Work1W, w1        ; Working register

          .equ RemainderW, w2    ; Fraction for interpolation: 0->0xFFFF
          .equ IndexW, w3        ; Index into table

          .equ pTabPtrW, w4      ; Pointer into table 
          .equ pTabBaseW,w5      ; Pointer into table base

          .equ Y0W,w6            ; Y0 = SinTable[Index]
          .equ ParkParmW,w7      ; Base of ParkParm structure

      ;; Note: RemainderW and Work0W must be even registers


;=================== LOCAL DATA =====================

          .section .const,psv
         
          .align	256
SinTable: 
  .word 0,1608,3212,4808,6393,7962,9512,11039
  .word 12540,14010,15446,16846,18205,19520,20787,22005
  .word 23170,24279,25330,26319,27245,28106,28898,29621
  .word 30273,30852,31357,31785,32138,32413,32610,32728
  .word 32767,32728,32610,32413,32138,31785,31357,30852
  .word 30273,29621,28898,28106,27245,26319,25330,24279
  .word 23170,22005,20787,19520,18205,16846,15446,14010
  .word 12540,11039,9512,7962,6393,4808,3212,1608
  .word 0,-1608,-3212,-4808,-6393,-7962,-9512,-11039
  .word -12540,-14010,-15446,-16846,-18205,-19520,-20787,-22005
  .word -23170,-24279,-25330,-26319,-27245,-28106,-28898,-29621
  .word -30273,-30852,-31357,-31785,-32138,-32413,-32610,-32728
  .word -32767,-32728,-32610,-32413,-32138,-31785,-31357,-30852
  .word -30273,-29621,-28898,-28106,-27245,-26319,-25330,-24279
  .word -23170,-22005,-20787,-19520,-18205,-16846,-15446,-14010
  .word -12540,-11039,-9512,-7962,-6393,-4808,-3212,-1608

;=================== CODE =====================

          .section  .text
          .global   _SinCos
          .global   SinCos

_SinCos:
SinCos:

	 ;; Save the current CORCON and PSVPAG register
	 	  mov		CORCON,w0
	 	  mov		PSVPAG,w1
	 	  push.d	w0
	 ;; Set the PSV bit to enable PSV access
	 	  bset		CORCON,#PSV
	 ;; Load the PSVPAG register to point to the sine table
	 	  mov		#psvpage(SinTable),w0
	 	  mov		w0,PSVPAG
		
     ;; Base of qAngle, qSin, qCos group in ParkParm structure
          mov.w     #_ParkParm+#Park_qAngle,ParkParmW     

     ;; Calculate Index and Remainder for fetching and interpolating Sin
          mov.w     #TableSize,Work0W
          mov.w     [ParkParmW++],Work1W        ; load qAngle & inc ptr to qCos
          mul.uu    Work0W,Work1W,RemainderW   ; high word in IndexW

     ;; Double Index since offsets are in bytes not words
          add.w     IndexW,IndexW,IndexW

     ;; Note at this point the IndexW register has a value 0x00nn where nn
     ;; is the offset in bytes from the TabBase.  If below we always
     ;; use BYTE operations on the IndexW register it will automatically
     ;; wrap properly for a TableSize of 128.
  
          mov.w     #psvoffset(SinTable),pTabBaseW     ; Pointer into table base

     ;; Check for zero remainder
          cp0.w     RemainderW
          bra       nz,jInterpolate

     ;; Zero remainder allows us to skip the interpolation and use the 
     ;; table value directly

          add.w     IndexW,pTabBaseW,pTabPtrW
          mov.w    [pTabPtrW],[ParkParmW++]    ; write qSin & inc pt to qCos

     ;; Add 0x40 to Sin index to get Cos index.  This may go off end of
     ;; table but if we use only BYTE operations the wrap is automatic.
          add.b     #0x40,IndexW
          add.w     IndexW,pTabBaseW,pTabPtrW

          mov.w     [pTabPtrW],[ParkParmW]      ; write qCos

     ;; Restore PSVPAG and CORCON to original states
          pop.d		w0
          mov		w0,CORCON
          mov		w1,PSVPAG
          return

jInterpolate:

     ;; Get Y1-Y0 = SinTable[Index+1] - SinTable[Index]  

          add.w     IndexW,pTabBaseW,pTabPtrW
          mov.w     [pTabPtrW],Y0W              ; Y0

          inc2.b    IndexW,IndexW               ; (Index += 2)&0xFF
          add.w     IndexW,pTabBaseW,pTabPtrW

          subr.w    Y0W,[pTabPtrW],Work0W      ; Y1 - Y0
  
     ;; Calcuate Delta = (Remainder*(Y1-Y0)) >> 16

          mul.us    RemainderW,Work0W,Work0W

     ;; Work1W contains upper word of (Remainder*(Y1-Y0)) 
     ;; *pSin = Y0 + Delta

          add.w     Work1W,Y0W,[ParkParmW++]   ; write qSin & inc pt to qCos

     ;; ================= COS =========================

     ;; Add 0x40 to Sin index to get Cos index.  This may go off end of
     ;; table but if we use only BYTE operations the wrap is automatic.
     ;; Actualy only add 0x3E since Index increment by two above
          add.b     #0x3E,IndexW
          add.w     IndexW,pTabBaseW,pTabPtrW

     ;; Get Y1-Y0 = SinTable[Index+1] - SinTable[Index]  

          add.w     IndexW,pTabBaseW,pTabPtrW
          mov.w     [pTabPtrW],Y0W              ; Y0

          inc2.b    IndexW,IndexW               ; (Index += 2)&0xFF
          add.w     IndexW,pTabBaseW,pTabPtrW

          subr.w    Y0W,[pTabPtrW],Work0W      ; Y1 - Y0
  
     ;; Calcuate Delta = (Remainder*(Y1-Y0)) >> 16

          mul.us    RemainderW,Work0W,Work0W

     ;; Work1W contains upper word of (Remainder*(Y1-Y0)) 
     ;; *pCos = Y0 + Delta

          add.w     Work1W,Y0W,[ParkParmW]     ; write qCos
          
     ;; Restore PSVPAG and CORCON to original states
          pop.d		w0
          mov		w0,CORCON
          mov		w1,PSVPAG
          return

          .end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日免费三级在线| 国产精品一区二区91| 欧美中文字幕亚洲一区二区va在线| 国产精品福利一区| 91玉足脚交白嫩脚丫在线播放| 中文字幕在线不卡视频| 一本色道久久综合亚洲91| 亚洲香蕉伊在人在线观| 欧美日本在线视频| 麻豆精品视频在线观看视频| 2021中文字幕一区亚洲| 国产成人精品aa毛片| 国产精品伦一区二区三级视频| 91小视频免费观看| 日韩在线一区二区| 26uuuu精品一区二区| 亚洲精品一区二区三区在线观看| 国产美女在线观看一区| 国产精品欧美一级免费| 欧美午夜不卡在线观看免费| 久久不见久久见免费视频7| 国产精品国产自产拍在线| 欧美伊人久久久久久午夜久久久久| 日韩一区精品视频| 欧美经典一区二区三区| 91成人国产精品| 国产在线精品免费| 亚洲人精品午夜| 91麻豆精品国产91久久久使用方法 | 粉嫩aⅴ一区二区三区四区五区| 1区2区3区国产精品| 91精品国产综合久久久久久久| 国产精品影视在线观看| 亚洲一区二区三区视频在线| 精品国产免费久久| 91久久精品一区二区二区| 久久99国产精品久久99果冻传媒| 一区在线中文字幕| 精品国产一区二区三区忘忧草| 色偷偷久久人人79超碰人人澡| 精品在线观看免费| 亚洲成av人片在线观看| 中文成人综合网| 7777精品伊人久久久大香线蕉的| 白白色 亚洲乱淫| 久久国产尿小便嘘嘘| 亚洲激情一二三区| 国产欧美精品在线观看| 欧美高清激情brazzers| 成人综合在线视频| 久久99久久99精品免视看婷婷| 国产999精品久久久久久| 丝袜美腿成人在线| 中文字幕日本不卡| 欧美激情一区二区三区蜜桃视频| 欧美一区日韩一区| 欧美色综合久久| 91视频在线观看免费| 国产精品亚洲а∨天堂免在线| 免播放器亚洲一区| 亚洲va欧美va人人爽午夜 | 国产精品的网站| 久久久久久久久久美女| 日韩亚洲欧美一区| 欧美电影一区二区| 欧美系列亚洲系列| 欧美丝袜丝交足nylons图片| 色综合一区二区| 91香蕉视频污在线| 99精品在线免费| 播五月开心婷婷综合| 成人精品小蝌蚪| 国产成人精品一区二| 国产一区二区美女诱惑| 国模少妇一区二区三区| 日韩国产欧美在线观看| 天天av天天翘天天综合网 | 欧美电影免费观看高清完整版在线| 欧美亚洲动漫另类| 欧美性色黄大片手机版| 欧美日韩一区在线观看| 欧美日韩高清在线| 91精品婷婷国产综合久久| 欧美一级黄色片| 欧美xingq一区二区| 日韩精品一区二区三区三区免费| 日韩精品专区在线影院观看| 日韩一区二区免费在线电影| 欧美精品一二三区| 日韩欧美视频一区| 久久亚洲捆绑美女| 中文字幕乱码日本亚洲一区二区 | 一区二区三区鲁丝不卡| 亚洲精品中文在线观看| 亚洲成人综合视频| 捆绑变态av一区二区三区| 国产麻豆视频一区| 91啪亚洲精品| 欧美日韩国产影片| 精品国产成人系列| 国产欧美视频一区二区| 亚洲图片你懂的| 亚洲电影欧美电影有声小说| 日韩高清不卡在线| 成人黄色免费短视频| 色哟哟国产精品免费观看| 欧美一二区视频| 国产精品无人区| 亚洲成人免费影院| 国产精品一级片| 色婷婷一区二区三区四区| 91精品综合久久久久久| 欧美激情中文不卡| 性久久久久久久久| 成人免费看视频| 欧美一级视频精品观看| 国产欧美日韩精品a在线观看| 一区二区三区不卡视频在线观看| 狠狠色丁香婷婷综合久久片| av电影在线观看一区| 日韩一级大片在线观看| 亚洲图片欧美激情| 国产自产视频一区二区三区| 91国在线观看| 久久亚洲综合色一区二区三区| 一区二区三区在线影院| 久久超碰97中文字幕| 色婷婷亚洲一区二区三区| 精品成人在线观看| 亚洲国产另类av| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 亚洲精品在线网站| 亚洲综合区在线| 成人激情图片网| 欧美videofree性高清杂交| 曰韩精品一区二区| 国产精品一区一区| 3d动漫精品啪啪一区二区竹菊 | 亚洲线精品一区二区三区八戒| 国产成人午夜视频| 日韩一二三区不卡| 亚洲风情在线资源站| 91丨九色丨黑人外教| 久久精品男人的天堂| 蜜桃精品视频在线观看| 欧美日韩中文精品| 亚洲精品va在线观看| 成人激情免费电影网址| 久久嫩草精品久久久久| 免费成人性网站| 欧美精品vⅰdeose4hd| 亚洲一级二级三级在线免费观看| 波多野结衣视频一区| 久久久九九九九| 久久99精品久久只有精品| 欧美人牲a欧美精品| 亚洲一区电影777| 欧美在线小视频| 午夜欧美2019年伦理| 色综合中文综合网| 国产三级精品三级| 国产一区二区免费看| 2020国产精品| 国产制服丝袜一区| 亚洲精品在线电影| 国产一区二区三区精品视频| 欧美mv和日韩mv的网站| 久久福利资源站| 久久综合久久综合亚洲| 激情深爱一区二区| 久久久亚洲综合| 夫妻av一区二区| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 久久丝袜美腿综合| 福利一区在线观看| 国产精品久久久久久一区二区三区| 成人免费视频播放| 国产精品网站在线播放| 97精品久久久久中文字幕| 亚洲欧美电影一区二区| 在线欧美一区二区| 亚洲成人久久影院| 欧美一卡2卡三卡4卡5免费| 久久69国产一区二区蜜臀| 久久女同互慰一区二区三区| 成人免费毛片片v| 亚洲欧美电影一区二区| 欧美肥大bbwbbw高潮| 久久国产麻豆精品| 国产欧美一区二区精品秋霞影院| 色综合天天综合| 日韩极品在线观看| 久久久久久久久久久久久久久99| 成人福利视频在线| 亚洲午夜电影在线观看| 91精品国产麻豆国产自产在线 | 激情文学综合插| 国产精品久久久久一区二区三区| 色婷婷综合久久久久中文| 日本va欧美va精品|