📄 cs5460a.asm
字号:
;********************************************************************
; Cs5460A器件读写程序
;********************************************************************
; write to cs5460 reg.
; input: a(command),csregh,csregm,csregl
; using r2
;--------------------------------
wrcsreg:lcall wrcsb
mov a, csregh
lcall wrcsb
mov a, csregm
lcall wrcsb
mov a, csregl
lcall wrcsb
clr sclk
ret
;--------------------------------
; write to cs5460 1 byte
; input : a=write byte
; using r2
;--------------------------------
wrcsb: mov r2, #08h
wrcsb1: clr sclk
rlc a
mov sdi, c
nop
nop
nop
setb sclk
djnz r2, wrcsb1
clr sclk ; *****
ret
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; read from cs5460 reg.
; input: a(read reg command)
; output:csregh,csregm,csregl
; using r2
;--------------------------------
rdcsreg:lcall wrcsb
mov a, #sync0
lcall rdcsb
mov csregh, a
mov a, #sync0
lcall rdcsb
mov csregm, a
mov a, #sync0
lcall rdcsb
mov csregl, a
clr sclk
ret
;--------------------------------
; read from cs5460 1 byte
; output: a= read byte
; using r2
;--------------------------------
rdcsb: mov r2, #08h
rdcsb1: clr sclk
rlc a
mov sdi, c
nop
nop
mov c, sdo
nop
setb sclk
djnz r2, rdcsb1
rlc a
clr sclk
ret
;********************************************************************
; power up cs5460
;********************************
pow_up: clr sclk
mov a, #sync1 ; if command mode error do
mov csregh, #sync1 ; serial port initialization
mov csregm, #sync1
mov csregl, #sync0
clr csa
call wrcsreg ;
setb csa
ret
;********************************************************************
; initialize cs5460a
;********************************
ics5460:call wrign
;
ics1: clr sclk
clr csa
call wcycn
setb csa
; ; pluse_rate =32000
; ; tbc =1.000
ics2: clr sclk
clr csa
call wmak
setb csa
;
ics3: clr sclk
clr csa
mov csregh, gbuf
call wcnf1
setb csa
;
ics4: clr sclk
clr csa
mov a, #start_cv
call wrcsb
setb csa
ret
;----------------------------------
wcnf: mov csregh, #configh
wcnf1: mov a, #w_config
mov csregm, #configm
mov csregl, #configl
call wrcsreg
ret
;
wcycn: mov a, #w_cycle_count
mov csregh, #cycle_Nh; write config reg.
mov csregm, #cycle_Nm
mov csregl, #cycle_Nl
call wrcsreg
ret
;
wmak: mov a, #w_mask
mov csregh, #maskh ; write mask reg.
mov csregm, #maskm ; enable DRDY & IC interrupt
mov csregl, #maskl
call wrcsreg
ret
;********************************
wrign: mov csregh, #vi_gnh ; vgn=0.625
mov csregm, #vi_gnm ; ign=0.625
mov csregl, #vi_gnl
clr sclk
clr csa
mov a, #w_vgn ; write Vgn
call wrcsreg
setb csa
clr sclk
clr csa
mov a, #w_ign ; write Ign
call wrcsreg
setb csa
ret
;********************************************
testgn: clr psw.5
clr sclk
clr csa
mov a, #r_vgn ; read Vgn
call rdcsreg
call texrl
setb csa
clr sclk
clr csa
mov a, #r_ign ; read Ign
call rdcsreg
call texrl
setb csa
ret
;--------------------------------
texrl: mov a, csregh
xrl a, #vi_gnh
jnz teerr
mov a, csregm
xrl a, #vi_gnm
jnz teerr
mov a, csregl
xrl a, #vi_gnl
jnz teerr
ret
teerr: setb psw.5
ret
;********************************************************************
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -