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

📄 ad_sample.asm

📁 关于整流器的程序.这个程序是在TI的DSP上实现
💻 ASM
字号:
************************************
*   File name:ad_sample.asm

************************************
     .include "F2407REGS.H"
     .def     INIT_AD,AD_SAMPLE   ;Function call
     .def     Ia,Ib,Udc           ;outputs
     .ref     IA,IB,DATA_CACHE    ;FOR TEST
     
Ia       .usect  "sample",1
Ib       .usect  "sample",1
Udc      .usect  "sample",1
temp_a   .usect  "sample",1
temp_b   .usect  "sample",1
temp_u   .usect  "sample",1
K_c      .usect  "sample",1 
offset_c .usect  "sample",1 
K_u      .usect  "sample",1 
offset_u .usect  "sample",1
T_u      .usect  "sample",1          ;FOR TEST    
************************************
*       AD采样初始化

************************************
    
INIT_AD:
    NOP
    LDP   #ADCTRL1>>7       ;装载ADC控制寄存器页地址
    SPLK  #4000H,ADCTRL1    ;复位ADC模块
    NOP
    SPLK  #1350H,ADCTRL1    ;ADC工作在连续,级连模式,高优先级中断
    SPLK  #8302H,ADCTRL2    ;由EVA启动排序器SEQ1
    SPLK  #0FH,MAXCONV      ;设置最大转换通道为3
    SPLK  #0210H,CHSELSEQ1  ;设置出入通道选择排序控制寄存器
    SPLK  #0101H,CHSELSEQ2
    SPLK  #1021H,CHSELSEQ3
    SPLK  #1010H,CHSELSEQ4
    LDP   #temp_a
    SPLK  #4000H,temp_a     ; Q3
    SPLK  #4000H,temp_b     ; Q3
    SPLK  #4000H,temp_u     ; Q3
    SPLK  #4800H,Udc        ; Q6  
    SPLK  #0A50H,K_c        ; Q15 (100*3.3/4/1024)
    SPLK  #14AH,offset_c    ; Q3 41.25A对应1.65v (1.65*100/4)
    SPLK  #6489H,K_u        ; Q16   1024*10*30.77*10^3/25/101/3.3=0.3927 ;/6489
    NOP
    RET

***************************************
***AD采样

***************************************
AD_SAMPLE:
    NOP
    LDP   #ADCTRL2>>7
WAIT:    
    BIT   ADCTRL2,BIT12
    BCND  WAIT,TC
    LACL  ADCTRL2
    OR    #4000H
    AND   #0FFDFH
    SACL  ADCTRL2 
    CLRC  SXM
    LACC  RESULT0,10
    SUB   RESULT1,10   ;FOR TEST
    LDP   #Ia          ;for test
    sach  Ia           ;for test
    lacl  Ia           ;for test
    call  DATA_CACHE   ;for test
    ADD   RESULT3,10
    ADD   RESULT5,10
    ADD   RESULT7,10
    ADD   RESULT10,10
    ADD   RESULT12,10
    ADD   RESULT14,10
    LDP   #Ia
    ADD   temp_a,13
    SACH  temp_a        ;最高有效位位12 Q3
    BLDD  #IA,temp_a    ;for test         
    LDP   #ADCTRL2>>7
    LACC  RESULT1,10
    ADD   RESULT4,10
    ADD   RESULT6,10
    ADD   RESULT8,10
    ADD   RESULT11,10
    ADD   RESULT13,10
    ADD   RESULT15,10
    LDP   #Ia
    ADD   temp_b,13
    SACH  temp_b         ;最高有效位位12 Q3   10位取8次等于左移3位
    BLDD  #IA,temp_b     ;for test
    LDP   #ADCTRL2>>7
    LACC  RESULT2,10
    ADD   RESULT9,10
    ADD   RESULT2,10
    LDP   #Ia
    ADD   temp_u,14
    SACH  temp_u        ;最高有效位位11  Q2
    splk  #0,temp_u     ;for test
    
*********************************************
****采样值到实际值的转换 

*********************************************

    LT    K_c            ; Q15
    MPY   temp_a         ; Q15*Q3
    PAC                  ; Q19
    SUB   offset_c,16
    SACH  Ia,5           ; 19-16+5+1=9,Q9
    MPY   temp_b         ; Q15*Q3
    LTP   K_u
    SUB   offset_c,16    ; Q19
    SACH  Ib,5           ; 19-16+5+1=9,Q9
    MPY   temp_u         ; Q16*Q2
    PAC                  ; Q19(ACC) 
    
    SACH  Udc,3          ; Q6 通过判断Q6的整数与小数范围来判断能否达到要求
    SACH  T_u,4          ;FOR TEST 
    LACL  Ib             ;FOR TEST 
    LACL  Udc            ;FOR TEST
    CALL  DATA_CACHE     ;FOR TEST
    SPLK  #0C80H,Udc     ;FOR TEST 40*2^6
    SETC  SXM
    RET
    
    
    

⌨️ 快捷键说明

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