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

📄 cs5460a.asm

📁 电能计量芯片CS5460的C51汇编程序
💻 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 + -