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

📄 ex5.asm

📁 基于VC33的信号采集软件
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        lsh     12,ar0
        addi    30h,ar0
        sti     r0,*+ar0(4)            ;COUNTER CLEAR
        sti     r4,*+ar0(8)            ;15000000/FS
        ldi     3c1h,r0                ;RUN TIMER1
        sti     r0,*ar0
        rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;comm subE: invf
invf:   ldf     r0,r3                  ;use r0,r1,r2,r3
        absf    r0                     ;input & output use r0
        pushf   r0
        pop     r1
        ash     -24,r1
        negi    r1
        subi    1,r1
        ash     24,r1
        push    r1
        popf    r1
        mpyf    r1,r0,r2
        subrf   2.0,r2
        mpyf    r2,r1
        mpyf    r1,r0,r2
        subrf   2.0,r2
        mpyf    r2,r1
        mpyf    r1,r0,r2
        subrf   2.0,r2
        mpyf    r2,r1
        mpyf    r1,r0,r2
        subrf   2.0,r2
        mpyf    r2,r1
        rnd     r1
        mpyf    r1,r0,r2
        subrf   1.0,r2
        mpyf    r1,r2
        addf    r2,r1
        rnd     r1,r0
        negf    r0,r2
        ldf     r3,r3
        ldfn    r2,r0
        rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;comm subF: sqrt
sqrt:   ldf     r0,r3                  ;use r0,r1,r2,r3
        retsle                         ;input & output use r0
        pushf   r0
        pop     r1
        ash     -24,r1
        addi    1,r1
        ash     -1,r1
        negi    r1,r1
        ash     24,r1
        push    r1
        popf    r1
        mpyf    0.5,r0
        mpyf3   r1,r1,r2
        mpyf    r0,r2
        subrf   1.5,r2
        mpyf    r2,r1
        rnd     r1,r1
        mpyf3   r1,r1,r2
        mpyf    r0,r2
        subrf   1.5,r2
        mpyf    r2,r1
        rnd     r1,r1
        mpyf3   r1,r1,r2
        mpyf    r0,r2
        subrf   1.5,r2
        mpyf    r2,r1
        rnd     r1,r1
        mpyf3   r1,r1,r2
        mpyf    r0,r2
        subrf   1.5,r2
        mpyf    r2,r1
        rnd     r1,r1
        mpyf3   r1,r1,r2
        mpyf    r0,r2
        subrf   1.5,r2
        mpyf    r2,r1
        rnd     r1,r0
        mpyf    r3,r0
        rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;comm subK: fft
fft:    ldi     @LOGFFT,ar0           ;ar0 save 09--512,0b--2048
        ldi     1,ar1
        lsh3    *ar0,ar1,r7
        ldi     r7,ir0
        ldi     r7,ar7
        lsh     -1,ar7
        ldi     2048,ir1
        ldi     13,ar4
        subi    *ar0,ar4
    	lsh3    ar4,ar1,ar5
        ldi     1,ar6
fft1:   ldi     @INADDRD,ar0
        ldi     *ar0,ar0
        addi3   ar7,ar0,ar1
        addi3   r7,ar0,ar2
        addi3   ar7,ar2,ar3
        ldi     ar6,rc
    	subi    1,rc
        rptb    fft2
    	addf3   *ar1,*ar0,r0
        subf3   *ar1,*ar0,r1
    	addf3   *ar3,*ar2,r2
        subf3   *ar3,*ar2,r3
    	stf     r1,*ar1++(ir0)
||      stf     r0,*ar0++(ir0)
fft2:   stf     r3,*ar3++(ir0)
||      stf     r2,*ar2++(ir0)
        cmpi    1,ar7
    	bzd     fft5
        ldi     1,r6
        ldi     @SINTAB,ar4
fft3:   addi    ar5,ar4
        ldf     *ar4,r5
        ldi     r6,ar0
        ldi     @INADDRD,ar1
        ldi     *ar1,ar1
        addi    ar1,ar0
        addi3   ar7,ar0,ar1
        addi3   r7,ar0,ar2
        addi3   ar7,ar2,ar3
        addi    1,r6
        ldi     ar6,rc
    	subi    1,rc
        rptb    fft4
        subf3   *ar1,*ar0,r2
    	subf3   *ar3,*ar2,r1
        mpyf3   r2,r5,r0
||      addf3   *ar3,*ar2,r3
        mpyf3   *+ar4(ir1),r1,r3
||      stf     r3,*ar2++(ir0)
    	subf3   r0,r3,r4
        mpyf3   r1,r5,r0
||      addf3   *ar1,*ar0,r3
        mpyf3   *+ar4(ir1),r2,r3
||      stf     r3,*ar0++(ir0)
        addf    r0,r3
fft4:   stf     r4,*ar3++(ir0)
||      stf     r3,*ar1++(ir0)
    	cmpi    ar7,r6
        bnz     fft3
        lsh     1,ar5
    	brd     fft1
        lsh     1,ar6
        ldi     ar7,ir0
    	lsh     -1,ar7
fft5:   ldi     r7,rc
        subi    3,rc
        ldi     r7,ir0
        lsh     -1,ir0
        ldi     @INADDRD,ar0
        ldi     *ar0,ar0
        addi3   r7,ar0,ar1
        ldi     ar0,ar2
    	nop     *ar0++(1)
        nop     *ar2++(ir0)B
        ldi     ar1,ar3
    	rptb    fft6
        cmpi    ar2,ar0
    	bged    fft6
        nop     *ar1++(1)
    	nop     *ar3++(ir0)B
        ldf     *ar2,r2
||      ldf     *ar0++(1),r0
        ldf     *ar3,r3
||      ldf     *ar1,r1
        stf     r2,*-ar0(1)
||      stf     r0,*ar2
        stf     r3,*ar1
||      stf     r1,*ar3
fft6:   nop     *ar2++(ir0)B
        rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
output: ldi     @MCTL,ar3
        ldi     MBUS3,ar1
        sti     ar1,*ar3
        ldi     @MCTLS,ar3
        sti     ar1,*ar3

        ldi     @PORT232,ar1
        addi    1,ar1
        ldi     21,r0
        sti     r0,*ar1++              ;1

        ldi     @PWADDR,ar2
;add program

        ldi     99,rc
        rptb    out1
        ldf     *ar2++,r0          
        call    dwamp
out1:   nop
;--------------------------------------
        ldi     @PORT232,ar1
        ldi     55h,r0
        sti     r0,*ar1

        ldi     @MCTL,ar3
        ldi     MBUS1,ar1
        sti     ar1,*ar3
        ldi     @MCTLS,ar3
        sti     ar1,*ar3
        rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
dwamp: 	call    sqrt
        ldf     @XNUM,r6
   	mpyf    r6,r0
        fix     r0
        ldi     0ffh,ar4
        and3    ar4,r0,r1              ;r1=low 8 bit
        and     0ff00h,r0              ;r0=high 8 bit
        lsh     -8,r0
        sti     r1,*ar1++
        sti     r0,*ar1++
        rets
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        .data
;--------------------------------------common data
SINTAB          .word    SINP
FS              .set     727H
DLENTH          .set     8192
SULOG           .set     0dH
SAMNUM          .word    2000H
;--------------------------------------
XNUM            .float   0.00048828    ;1/2048
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ADRR
SADDR           .word    7000H
TNUM            .word    7001H
INADDRD         .WORD    7002H
LOGFFT          .WORD    7003H
;--------------------------------------
MCTLS           .WORD    7004H
LEDS            .WORD    7005H
FL              .WORD    7006H
FH              .WORD    7007H
F1              .WORD    7008H
;---------------------------------------------------------------FLASH
TSDATA          .WORD    10000H    
TSDATAM         .WORD    12000H 
;------------------------------------------------------------inter ram
MCTL            .word    808064H
STCK            .word    809E00H  
INADDR          .word    800000H
PWADDR          .word    804000H
;--------------------------------------------------------------------------
ADADER          .WORD    810000H      ;read
ADADERM         .WORD    810001H      ;write
LED             .WORD    810003H

DDS_FREQ0L      .WORD    810008H
DDS_FREQ0H      .WORD    810009H
DDS_FREQ1L      .WORD    81000AH
DDS_FREQ1H      .WORD    81000BH
DDS_PHASE0      .WORD    81000CH
DDS_PHASE1      .WORD    81000DH
DDS_PHASE2      .WORD    81000EH
DDS_PHASE3      .WORD    81000FH
;--------------------------------------------------------------------------
PORT232         .word    0C00000H
PORT2           .word    0C00200H
;--------------------------------------------------------------------------
MBUS1           .set     0001038H      ;xxx1  wait level 3--1 wait
MBUS3           .set     0001098H      ;x111  wait level 7--3 wait dual port
MBUS7           .set     00010F8H      ;x111  wait level F--7 wait DDS & D/A
;-----------------------------------------------------------T_DATA
SINGFXS         .FLOAT   178.95697     ;2^32/24000000
FT15M           .FLOAT   15000000.0    ;FT15M=F0/FS/8=120000000/8/FS=15000000/FS
;-----------------------------------------------------------------------------
             	.end

⌨️ 快捷键说明

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