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

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

?? trig.s

?? 使用dsPIC30F 實現交流感應電機的矢量控制源代碼
?? 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 .sindata, "r"
         
          .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一区二区三区免费野_久草精品视频
色综合视频一区二区三区高清| 欧美一区中文字幕| 亚洲丰满少妇videoshd| 亚洲sss视频在线视频| 美女视频一区在线观看| 久久99蜜桃精品| www.日韩精品| 91精品国产欧美一区二区| 久久久精品综合| 亚洲成人动漫一区| 国产美女久久久久| 日韩视频免费直播| 亚洲天堂精品视频| 国内不卡的二区三区中文字幕 | 99久久久久久| 96av麻豆蜜桃一区二区| 欧美视频三区在线播放| 久久精品一区二区| 日韩高清中文字幕一区| 99在线精品一区二区三区| 在线播放日韩导航| 亚洲天堂免费看| 老司机一区二区| 欧美午夜精品久久久久久超碰| 久久久久亚洲蜜桃| 奇米精品一区二区三区四区| 色哟哟亚洲精品| 中文字幕欧美区| 天堂蜜桃91精品| 99久久精品免费精品国产| 国产精品麻豆网站| 精品99一区二区| 图片区小说区区亚洲影院| 91亚洲精品久久久蜜桃网站| 欧美激情综合五月色丁香| 偷拍亚洲欧洲综合| 91久久精品网| 亚洲免费观看在线观看| 成人av手机在线观看| 久久久久国产一区二区三区四区| 日韩不卡一区二区三区 | 中文字幕av在线一区二区三区| 久久99蜜桃精品| 日韩一区二区在线看| 亚洲成在线观看| 717成人午夜免费福利电影| 一区二区三区在线观看欧美| 91丨九色丨蝌蚪丨老版| 亚洲欧洲一区二区三区| 成人性生交大合| 国产精品高潮久久久久无| 成人免费视频网站在线观看| 一区二区视频在线看| 色婷婷精品大视频在线蜜桃视频 | 亚洲欧洲国产专区| 国产伦精品一区二区三区免费迷| 亚洲精品在线观| 国产黑丝在线一区二区三区| 中文文精品字幕一区二区| 成人午夜免费av| 亚洲精品综合在线| 色天天综合色天天久久| 亚洲成人av一区二区三区| 制服丝袜中文字幕亚洲| 蜜臀精品久久久久久蜜臀| 久久久久久久久久久久电影| 国产露脸91国语对白| 国产精品久久久久一区二区三区| 一本在线高清不卡dvd| 亚洲成av人片一区二区| 精品久久一区二区三区| 国产综合色产在线精品| 国产精品私房写真福利视频| 8x8x8国产精品| av毛片久久久久**hd| 日韩不卡手机在线v区| 日韩一区二区视频| 国产成人夜色高潮福利影视| 亚洲激情图片小说视频| 欧美一级日韩不卡播放免费| 国产福利一区二区三区视频在线| 亚洲男女一区二区三区| 一本一道久久a久久精品综合蜜臀| 日韩国产一区二| 欧美激情一区二区三区| 欧美三区在线观看| 激情深爱一区二区| 国产精品国产三级国产普通话蜜臀| 欧美网站大全在线观看| 国产精品91一区二区| 亚洲图片一区二区| 久久噜噜亚洲综合| 91免费观看视频| 国产一区二区影院| 日一区二区三区| 亚洲欧美一区二区三区久本道91| 日韩一级二级三级精品视频| 成人午夜私人影院| 免费成人美女在线观看| 一区二区三区高清| 国产日韩av一区二区| 欧美精品在线观看播放| 成人av网址在线观看| 久久丁香综合五月国产三级网站| 亚洲精品国产一区二区精华液 | 国产精品综合视频| 日本成人中文字幕在线视频| 亚洲午夜羞羞片| 亚洲午夜精品在线| 亚洲精品国产一区二区精华液| 亚洲婷婷在线视频| 日韩理论片在线| 亚洲三级免费观看| 亚洲美腿欧美偷拍| 一区二区三区免费在线观看| 亚洲天堂网中文字| 亚洲综合视频网| 亚洲一区影音先锋| 亚洲成人av免费| 奇米精品一区二区三区在线观看一| 日韩av中文在线观看| 免费成人结看片| 国产精品自拍毛片| 99精品国产一区二区三区不卡| 91蜜桃在线观看| 欧美顶级少妇做爰| 精品国精品国产| 欧美激情一区二区三区蜜桃视频 | 精品成人a区在线观看| 久久精品亚洲麻豆av一区二区| 日本一区二区三区dvd视频在线| 中文子幕无线码一区tr| 亚洲人成网站影音先锋播放| 亚洲成人av电影在线| 老鸭窝一区二区久久精品| 国产乱码精品1区2区3区| av激情亚洲男人天堂| 欧美视频第二页| 精品蜜桃在线看| 中文字幕亚洲在| 日本色综合中文字幕| 丰满放荡岳乱妇91ww| 色天使色偷偷av一区二区| 欧美一卡二卡三卡| 国产日韩欧美激情| 亚洲一区视频在线| 激情图片小说一区| 色悠久久久久综合欧美99| 日韩一区二区三区四区五区六区| 久久综合一区二区| 一区二区日韩av| 国产一区二区三区观看| 在线观看av一区二区| 欧美大片一区二区三区| 综合久久久久久| 久久综合综合久久综合| bt7086福利一区国产| 日韩一区二区在线观看视频| 国产精品国产精品国产专区不蜜 | 日本特黄久久久高潮| 99这里只有精品| 欧美zozo另类异族| 亚洲国产毛片aaaaa无费看| 国产一区二区在线观看免费| 欧美日韩综合不卡| 国产精品色呦呦| 蜜桃视频在线观看一区| 91麻豆免费看| 久久精品欧美日韩精品| 视频一区视频二区中文| 色偷偷88欧美精品久久久| 久久亚洲影视婷婷| 视频一区二区中文字幕| 色综合网站在线| 成人国产免费视频| 日韩欧美精品在线视频| 亚欧色一区w666天堂| 99久久精品国产导航| 久久蜜桃av一区精品变态类天堂 | 色综合久久精品| 国产精品嫩草99a| 免费高清在线一区| 欧美日韩一区二区三区不卡| 亚洲日本丝袜连裤袜办公室| 国产一区二区主播在线| 精品久久久久久无| 日本欧美肥老太交大片| 欧美中文一区二区三区| 亚洲精品亚洲人成人网在线播放| 国产一区二区三区国产| 26uuu久久综合| 国产一区二区导航在线播放| 日韩欧美视频一区| 蜜臀国产一区二区三区在线播放| 欧美日本精品一区二区三区| 性感美女极品91精品| 欧美日韩中文字幕一区二区| 亚洲一区在线免费观看| 欧美在线观看视频一区二区三区| 亚洲免费毛片网站|