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

📄 dv336.asm

📁 基于VC33的关于铁路信号发送和处理的程序
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
        .sect    "init"
        .global  init,SINP
        .text
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;init start!!!
        br      init
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        nop
        br      timer0
stop:   br      stop
init:   ldp     0,dp
        ldi     @STCK,sp               ;INIT STACK
        ldi     1800H,st               ;INIT ST
        ldi     @MCTL,ar0              ;INIT MAIN BUS
        ldi     MBUS1,r0
        sti     r0,*ar0
        ldi     @MCTLS,ar0
        sti     r0,*ar0

        LDI     @ADD1,AR0
        LDI     *AR0,R0
        LDI     @ADD2,AR1
        STI     R0,*AR1

        ldi     2000H,st

        ldi     0,r0
        ldi     @TSDATA,ar0
        rpts    @SAMNUM
        sti     r0,*ar0++             
        ldi     @PORT232,ar1
        rpts    030h
        sti     r0,*ar1++
        ldi     @GRF0C,ar0
        sti     r0,*ar0
        ldi     @GRF1CO,ar0
        sti     r0,*ar0
        ldi     @HNUM,ar2
        sti     r0,*ar2
        ldi     @ZRF0C,ar2
        sti     r0,*ar2
        ldi     @ZRF1CO,ar2
        sti     r0,*ar2
        ldi     @ZMODE,ar2
        sti     r0,*ar2

        ldi     3,r0
        ldi     @ADADER,ar0            ;SET A/D MODE A CHANNL 1 LU
        sti     r0,*ar0
        ldi     @ADADERM,ar0
        sti     r0,*ar0                ;RUN A/D

        ldi     0,r0
        ldi     @JPOINT,ar0
        sti     r0,*ar0
        ldi     @JLJSC,ar0
        sti     r0,*ar0
        ldi     @JFLAG,ar0
        sti     r0,*ar0

        call    cjljs
        call    test_ram
        call    jinit
        call    ddsinit
        call    sinit

        ldi     1,r0
        ldi     @GMODE,ar0             ;SEND CODE MODE
        sti     r0,*ar0
        ldi     0,r0
        ldi     @PRLAMP,ar0
        sti     r0,*ar0

        ldi     @TSDATA,ar0
        ldi     @SADDR,ar1
        sti     ar0,*ar1

        ldi     32,r0
        ldi     @LAMPT,ar0
        sti     r0,*ar0

        call    initt0                 ;timer0 init
        ldi     100H,IE                ;ACTIVE TIMER0
        or      2000h,st               ;RUN TIMER0

        ldi     @DA55,ar0
        ldi     0,r0
        sti     r0,*ar0++
        ldi     @CMODE,ar0
        ldi     1,r0
        sti     r0,*ar0++
        ldi     @METHOD,ar0
        sti     r0,*ar0++
        ldi     @CHNUM,ar0
        sti     r0,*ar0
        ldi     @CLOOP,ar0
        ldi     55h,r0
        sti     r0,*ar0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;init end!!!
start:  ldi     0,r0
        ldi     @NOEND,ar0
        sti     r0,*ar0
        ldi     @SMODE,ar0
        ldi     *ar0,r0
        ldi     @SSMODE,ar0
        sti     r0,*ar0

starts: ldi     0,r0
        ldi     @SMODE,ar0
        sti     r0,*ar0
        ldi     @RF0C,ar0
        ldi     @RF1CO,ar1
        sti     r0,*ar0
||      sti     r0,*ar1
        ldi     0A3h,r0
        ldi     @RAX,ar0
        sti     r0,*ar0

        call    input
        call    sendd

        ldi     @TNUM,ar0
        ldi     *ar0,r0
        absi    r0
        ldi     @LAMPT,ar1
        ldi     *ar1,r1
        cmpi    r1,r0
        blt     wait2
        ldi     0,r0
        sti     r0,*ar0
        ldi     @LEDS,ar0
        ldi     *ar0,r0
        cmpi    1,r0
        ldieq   0,r0
        ldine   1,r0
        sti     r0,*ar0
        ldi     @LED,ar0
        sti     r0,*ar0

wait2:  call    msamp
        call    sudc
        call    haming

        ldi     @INADDRD,ar0
        ldi     @INADDR,r0     
        sti     r0,*ar0
        ldi     @LOGFFT,ar0           
        ldi     SULOG0,r0
        sti     r0,*ar0
        call    fft
  	
        ldi     10,ar0                 ;s/n must need
        ldi     4096,ar1               ;loop number=4096
        addi    @INADDR,ar0
        addi    @INADDR,ar1
        ldi     DLENTH0,r0
        call    spc10

        call    s50hz
        call    tcqxb
        call    subak

        ldi     SF1,ar0
        ldi     3000,ar1
        addi    @INADDR,ar0
        addi    @INADDR,ar1
        ldi     DLENTH0,r0
        call    spc1                   ;call spc and save f1,f2,0f

        ldi     UF1,ar0
        ldi     UF2,ar1
        subi3   ar0,ar1,ar7
        ldi     @PWADDR,ar0
        ldi     UF1,r0
        subi    SF1,r0
        addi    r0,ar0
        ldi     @URESU0,ar2            ;compi max data
        float   UF1,r4
        ldf     DFDD,r3                 
        ldf     DFD,r5
        ldi     3,r7
        call    comp                   ;comp use:r0-r6,ar0-ar7,r7 free!

        ldi     SF1,ar0
        ldi     SF2,ar1
        subi3   ar0,ar1,ar7
        ldi     @PWADDR,ar0
        ldi     @SRESUL0,ar2            ;compi max data
        float   SF1,r4
        ldf     DFDD,r3                 
        ldf     DFD,r5
        ldi     7,r7
        call    comp                   ;comp use:r0-r6,ar0-ar7,r7 free!
;--------------------------------------record_use
        ldi     @URESU2,ar0            ;
        ldi     @UOUT,ar6              ;
        ldi     5,rc                   ;
        rptb    start2                 ;
        ldf     *ar0++,r0              ;
start2: stf     r0,*ar6++              ;

        ldi     @SRESUL0,ar0           ;
        ldi     @SOUT,ar6              ;
        ldi     6,r7                   ;
        call    csort                  ;

        ldi     1,r1                   ;
        ldi     @UMFLAG,ar0            ;
        ldi     @SFSFLAG,ar1           ;
        sti     r1,*ar0                ;
||      sti     r1,*ar1                ;
;--------------------------------------record_use
        ldi     @SSMODE,ar0
        ldi     *ar0,r0
        cmpi    0,r0
        bgt     sortc
        ldi     @GMODE,ar0
        ldi     *ar0,r0
        cmpi    0,r0
        bgt     sortc
        ldi     1,r0
        ldi     2,r1
        ldi     3,r2
        br      sorte

sortc:  cmpi    1,r0
        ldieq   2,r1
        ldieq   3,r2

        cmpi    2,r0
        ldieq   1,r1
        ldieq   3,r2

        cmpi    3,r0
        ldige   1,r1
        ldige   2,r2
        ldige   3,r0

sorte:  ldi     @SORT1,ar1
        ldi     @SORT2,ar2
        sti     r1,*ar1
||      sti     r2,*ar2
;--------------------------------------
mloop:	cmpi    0,r0
        ble     msort
        cmpi    3,r0
        bgt     msort
  
        cmpi    1,r0        
        beq     sfs0
    	cmpi    2,r0
    	beq     um710
        cmpi    3,r0
        bge     jljs0
        br      f0a3

msort:  ldi     0,r1
        ldi     @SORT1,ar0
        ldi     *ar0,r0
	sti     r1,*ar0 
	cmpi    0,r0
        bgt     mloop
        ldi     @SORT2,ar0
        ldi     *ar0,r0
	sti     r1,*ar0 
	cmpi    0,r0
        bgt     mloop

        ldi     @NOEND,ar0
        ldi     *ar0,r0
        cmpi    1,r0
        bne     f0a3
        br      starts
;--------------------------------------------------------
sfs0:   ldi     SFSMODE,r0
        cmpi    0,r0
    	beq     msort
        call    stdc
        call    sfs1
        cmpi    55h,r7
        bne     msort
        call    mlamp
        call    srcout
        br      f0a0
;--------------------------------------------------------
um710:  ldi     UMMODE,r0
        cmpi    0,r0
    	beq     msort
        call    utdc
        call    um711
        cmpi    55h,r7
        bne     msort
        call    mlamp
        call    urcout
        br      f0a0
;--------------------------------------------------------
jljs0:  ldi     JLJS25,r0
        cmpi    0,r0
        bne     jljsm
        br      msort  

jljsm:  ldi     @JLJSC,ar0
        ldi     *ar0,r1
        cmpi    0,r1        
        beq     jljsm1
        ldi     0,r1
        sti     r1,*ar0
        call    cjljs

jljsm1: ldi     @JFLAG,ar0
        ldi     *ar0,ar6
        cmpi    0,ar6
        bne     jcount
        ldi     @GMODE,ar0
        ldi     *ar0,r0
        cmpi    3,r0
        blt     msort
        ldi     @NOEND,ar0
        ldi     1,r0
        sti     r0,*ar0
        br      msort

jcount: ldi     0,r0
        sti     r0,*ar0
        ldi     @NOEND,ar0
        sti     r0,*ar0

        call    rdata
        call    jfirlp
        call    jljsdc

        ldi     @INADDRD,ar0
        ldi     @JINADDR,r0     
	sti     r0,*ar0
        ldi     @LOGFFT,ar0           ;ar0 save 09--512,0b--2048
        ldi     JLOGNUM,r0
	sti     r0,*ar0
	call    fft
	call    move

        ldi     J_S1,ar0
        ldi     J_S2,ar1
        addi    @JINADDR,ar0
        addi    @JINADDR,ar1
        ldi     JDLENTH,r0
	call    spc1                   ;call spc and save f1,f2,0f
	
        call    jfindf
	call    jljsf                  

        ldi     @JLFLAG,ar0
        ldi     *ar0,r0
        cmpi    0,r0
        ble     msort

        ldi     25,r2
        subi3   r2,r0,r1
        absi    r1
        cmpi    2,r1
        bgt     msort

        call    jprc
        cmpi    55h,r7
        bne     msort

        call    mlampj

        ldi     @JLJS1SZ,ar2
        ldi     *ar2,ar2
        call    jrcout
        br      f0a0
;-------------------------------------------------
f0a0:   ldi     2,r0
        ldi     @LAMPT,ar0
        sti     r0,*ar0
        br      nloop
;-------------------------------------------------
f0a3:   ldi     32,r0
        ldi     @LAMPT,ar0
        sti     r0,*ar0

        ldi     @GMODE,ar0
        ldi     *ar0,r0
f0a3u:  cmpi    2,r0
        bne     jljsa3
        call    mlamp
        call    urcout
        br      nloop
jljsa3: cmpi    3,r0
        blt     f0a3s
        call    mlampj
        ldi     @JLJS1,ar2
        call    jrcout
        br      nloop
f0a3s:  call    mlamp
        call    srcout
nloop:  br      start
;--------------------------------------------------------------comm_sub list
;  1: timer0  2: msamp   3: haming  4: sudc   5: subak  6: spc1
;  7: spc10   8: csort   9: rsort   A: comp   C: tcqxb
;  D: initt0  E: invf    F: sqrt    G: wfreq  H: wamp   I: fft  J: ifft
;--------------------------------------------------------------comm sub list
;INTERRUPT SERVER;;;;;;;;;;;;;;;;;;;;;;comm sub1: timer0
timer0: push    st
        push    ar0
        push    ar1
        push    ar2
        push    ar3
        push    ar4
        push    ir0

        ldi     @MCTL,ar3              ;INIT MAIN BUS
        ldi     MBUS7,ar1
        sti     ar1,*ar3
        nop
        ldi     @ADADER,ar0
        ldi     *ar0,ar1
        addi    2000h,ar1
        and     3fffh,ar1       
        ldi     *ar0,ar2
        addi    2000h,ar2
        and     3fffh,ar2       
        ldi     *ar0,ar3
        addi    2000h,ar3
        and     3fffh,ar3       
        ldi     *ar0++,ar4
        addi    2000h,ar4
        and     3fffh,ar4       
        sti     ar1,*ar0

        ldi     4000h,ir0
        ldi     @SADDR,ar0
        ldi     *ar0,ar0
        sti     ar1,*ar0++(ir0)
        sti     ar2,*ar0++(ir0)
        sti     ar3,*ar0++(ir0)
        sti     ar4,*ar0++
        subi    @TSC,ar0
        cmpi    @TSDATAM,ar0
        ldieq   @TSDATA,ar0
        ldi     @SADDR,ar1
        sti     ar0,*ar1

        ldi     @MCTL,ar3
        ldi     MBUS1,ar1
        sti     ar1,*ar3

        ldi     ar0,ar4
        and     7fh,ar0
        cmpi    1,ar0
        bne     tend1

        ldi     1,ar3
        ldi     @CNUM,ar0              ;64/s
        addi3   ar3,*ar0,ar1
        sti     ar1,*ar0++             ;CNUM
        addi3   ar3,*ar0,ar1
        sti     ar1,*ar0++             ;
        addi3   ar3,*ar0,ar1
        sti     ar1,*ar0++             ;
        addi3   ar3,*ar0,ar1
        sti     ar1,*ar0++             ;
        addi3   ar3,*ar0,ar1
        sti     ar1,*ar0++             ;
        addi3   ar3,*ar0,ar1
        absi    ar1
        cmpi    33,ar1
        ldige   1,ar1
        sti     ar1,*ar0               ;CNUM---4 wordS
        cmpi    1,ar1
        bne     tend1
        ldi     @JFLAG,ar0
        ldi     *ar0,ar1
        sti     ar4,*ar0
        ldi     @JLJSC,ar0
        sti     ar1,*ar0

tend1:  ldi     @DA55,ar0
        ldi     *ar0,ar1
        cmpi    55H,ar1
        bne     n_da

        ldi     @DANUM,ar0
        ldi     *ar0,ar1

⌨️ 快捷键说明

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