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

📄 sin_ok.asm

📁 TMS320V5402 利用定时器中断产生正弦信号,最高频率300KHZ
💻 ASM
字号:
     ;File Name:exp01.asm
     ;the program is compiled at no autoinitialization mode
  	    .mmregs
		.global _main
		.ref	 d_xs,d_sinx,d_cosx,sinx,cosx
sin_x    .usect   "sin_x",360		
STACK:   .usect   "STACK",10
k_theta  .set     286
PA0      .set     0

_main:   stm  #STACK+10,SP
         stm  k_theta,ar0
         stm  0,ar1
         stm  #sin_x,ar6
         stm  #90,brc
         rptb loop1-1
         ldm  ar1,a
         ld   #d_xs,dp
         stl  a,@d_xs
         stl  a,@d_xc
         call sinx
         call cosx
         ld   #d_sinx,dp
         ld   @d_sinx,16,a
         mpya @d_cosx
         sth  b,1,*ar6+
         mar   *ar1+0
loop1:   stm   #sin_x+89,ar7
         stm   #88,brc
         rptb  loop2-1
         ld    *ar7-,a
         stl   a,*ar6+
loop2:   stm   #179,brc
		 stm   #sin_x,ar7
		 rptb  loop3-1
		 ld    *ar7+,a
		 neg   a
		 stl   a,*ar6+
loop3:   stm   #sin_x,ar6
		 stm   #1,ar0
		 stm   #360,bk
   ;loop4:   portw *ar6+0%,pa0
loop4:         b   loop4
         		          
sinx:
		 .def  d_xs,d_sinx
		 
		 .data
table_s:   .word 01c7h
		 .word 030bh
		 .word 0666h
		 .word 1556h                           
d_coef_s    .usect "coef_s",4
d_xs        .usect "sin_vars",1
d_squr_xs   .usect "sin_vars",1
d_temp_s    .usect "sin_vars",1
d_sinx      .usect "sin_vars",1
d_1_s       .usect "sin_vars",1

		  .text
		  
		  ssbx FRCT
		  stm  #d_coef_s,ar5
		  rpt   #3
		  mvpd  #table_s,*ar5+
		  stm   #d_coef_s,ar3
		  stm   #d_xs,ar2
		  stm   #d_1_s,ar4
		  st    #7fffh,d_1_s
		  squr   *ar2+,a
		  st    a,*ar2
		  ||ld  *ar4,b
		  masr   *ar2+,*ar3+,b,a
		  mpya   a
		  sth    a,*ar2
		  masr   *ar2-,*ar3+,b,a
		  mpya   *ar2+
		  st    b,*ar2
		  ||ld  *ar4,b
		  masr   *ar2-,*ar3+,b,a
		  mpya   *ar2+
		   st    b,*ar2
		  ||ld  *ar4,b
		  masr   *ar2-,*ar3+,b,a
		   mpya   d_xs
		   sth   b,d_sinx
		   ret
cosx:
		   .def   d_xc,d_cosx
d_coef_c   .usect "coef_c",4

         .data
table_c:   .word 0249h
		 .word 0444h
		 .word 0aabh
		 .word 4000h                           

d_xc        .usect "cos_vars",1
d_squr_xc   .usect "cos_vars",1
d_temp_c    .usect "cos_vars",1
d_cosx      .usect "cos_vars",1
c_1_c       .usect "cos_vars",1

		 .text
		  
		  ssbx FRCT
		  stm  #d_coef_c,ar5
		  rpt   #3
		  mvpd  #table_c,*ar5+
		  stm   #d_coef_c,ar3
		  stm   #d_xc,ar2
		  stm   #c_1_c,ar4
		  st    #7fffh,c_1_c
		  squr   *ar2+,a
		  st    a,*ar2
		  ||ld  *ar4,b
		  masr   *ar2+,*ar3+,b,a
		  mpya   a
		  sth    a,*ar2
		  masr   *ar2-,*ar3+,b,a
		  mpya   *ar2+
		  st    b,*ar2
		  ||ld  *ar4,b
		  masr   *ar2-,*ar3+,b,a
		  sfta   a,-1,a
		  neg    a
		  mpya   *ar2+ 
		  mar   *ar2+
		  retd
		  add   *ar4,16,b
		  sth   b,*ar2
		  ret  
		   .end

⌨️ 快捷键说明

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