📄 dv336.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.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 + -