cs5550.asm
来自「CS5532及cs5550的测试程序,包含器件校准,配置等」· 汇编 代码 · 共 645 行 · 第 1/2 页
ASM
645 行
setb et0
setb ex0
setb ea
clr cs
setb sck
mov a , #78h ; 控制寄存器INT脚开漏设置
acall wr_byte
mov a , #00h
acall wr_byte
mov a , #00h
acall wr_byte
mov a , #10h
acall wr_byte
clr sck
setb cs
nop
clr cs
clr sck
mov a , #38h
acall wr_data
acall rd_byte
mov byte_1 , a
acall rd_byte
mov byte_2 , a
acall rd_byte
mov byte_3 , a
setb sck
setb cs
nop
clr cs
setb sck
mov a , #74h ; 开中断
acall wr_byte
mov a , #80h
acall wr_byte
mov a , #00h
acall wr_byte
mov a , #00h
acall wr_byte
clr sck
setb cs
nop
clr cs
clr sck
mov a , #34h
acall wr_data
acall rd_byte
mov byte_1 , a
acall rd_byte
mov byte_2 , a
acall rd_byte
mov byte_3 , a
setb sck
setb cs
nop
clr cs
setb sck
mov a , #40h ; 通道1配置值,增益50倍,分频系数为1,下降沿方式
acall wr_byte
mov a , #01h
acall wr_byte
mov a , #10h
acall wr_byte
mov a , #01h
acall wr_byte
clr sck
setb cs
nop
clr cs
clr sck
mov a , #00h
acall wr_data
acall rd_byte
mov byte_1 , a
acall rd_byte
mov byte_2 , a
acall rd_byte
mov byte_3 , a
setb sck
setb cs
nop
clr cs
setb sck
mov a , #5eh ; 清除DRDY位
acall wr_byte
mov a , #0ffh
acall wr_byte
mov a , #0ffh
acall wr_byte
mov a , #0ffh
acall wr_byte
clr sck
setb cs
nop
clr cs
mov a , #0e0h ; 发连续转换命令 e8h
acall wr_byte
nop
sjmp $
;----------------------------------------------------------------
; 校准操作(偏移,增益)
;----------------------------------------------------------------
s_off:clr cs
mov a , #0c9h ; 通道1偏移
acall wr_data
setb cs
sys_off:clr cs
clr sck
mov a , #1eh
acall wr_data
acall rd_byte
mov byte_1 , a
acall rd_byte
mov byte_2 , a
acall rd_byte
mov byte_3 , a
setb sck
setb cs
mov a , byte_1
jnb acc.7 , sys_off
clr cs
clr sck
mov a , #02h ; 通道1偏移值
acall wr_data
acall rd_byte
mov byte_1 , a
acall rd_byte
mov byte_2 , a
acall rd_byte
mov byte_3 , a
setb sck
setb cs
nop
ajmp s_off
s_gain:clr cs
mov a , #0cah ; 通道1增益
acall wr_data
setb cs
sys_gain:clr cs
clr sck
mov a , #1eh
acall wr_data
acall rd_byte
mov byte_1 , a
acall rd_byte
mov byte_2 , a
acall rd_byte
mov byte_3 , a
setb sck
setb cs
mov a , byte_1
jnb acc.7 , sys_gain
clr cs
clr sck
mov a , #04h ; 通道1增益值
acall wr_data
acall rd_byte
mov byte_1 , a
acall rd_byte
mov byte_2 , a
acall rd_byte
mov byte_3 , a
setb sck
setb cs
nop
ajmp s_gain
;----------------------------------------------------------------
;软件延时,占用(1EH,1FH)11。059M HZ 晶振
;----------------------------------------------------------------
dly_1ms:mov r2 , #4 ;1ms
lop1:mov r3 , #120
lop2:djnz r3 , lop2
djnz r2 , lop1
ret
dly_10ms:mov r2 , #38 ;10ms
lyp1:mov r3 , #120
lyp2:djnz r3 , lyp2
djnz r2 , lyp1
ret
dly_50ms:mov r2 , #189 ;50ms
lzp1:mov r3 , #120
lzp2:djnz r3 , lzp2
djnz r2 , lzp1
ret
dly_100ms:mov r2 , #205 ;100ms
lsp1:mov r3 , #223
lsp2:djnz r3 , lsp2
djnz r2 , lsp1
ret
;*************************************************
; 读数据:占用 A B commd
;*************************************************
rd_data:nop
clr cs
clr sck
mov a , #1eh
acall wr_data
acall rd_byte
mov byte_1 , a
acall rd_byte
mov byte_2 , a
acall rd_byte
mov byte_3 , a
setb sck
setb cs
mov a , byte_1
jnb acc.7 , rd_data
clr cs
clr sck
mov a , #0eh
acall wr_data
acall rd_byte
mov byte_1 , a
acall rd_byte
mov byte_2 , a
acall rd_byte
mov byte_3 , a
setb sck
setb cs
nop
clr cs
setb sck
mov a , #5eh ; 清除DRDY位
acall wr_byte
mov a , #0ffh
acall wr_byte
mov a , #0ffh
acall wr_byte
mov a , #0ffh
acall wr_byte
clr sck
setb cs
nop
ret
;-----------------------------------------------------------------------
; 写字节 :占用 A,B
;-----------------------------------------------------------------------
wr_byte:mov b , #8
wr_bit:clr sck
rlc a
mov sdi , c
setb sck
nop
djnz b , wr_bit
ret
wr_data:mov b , #8
rd_bit:rlc a
mov sdi , c
setb sck
nop
clr sck
djnz b , rd_bit
ret
;-----------------------------------------------------------------------
; 读字节 :占用 A,B
;-----------------------------------------------------------------------
rd_byte:mov a , #0feh
mov b , #8
rd_sum:mov c , sdo
rlc a
mov sdi , c
setb sck
nop
clr sck
djnz b , rd_sum
setb sdi
ret
;*************************************************
; 复位cs5550:占用 A B R4
;*************************************************
rst5550:clr cs
setb sdi
mov b , #32
rst_ok:clr sck
setb sck
djnz b , rst_ok
clr sdi
clr sck
setb sck
setb sdi
ret
;*************************************************
;
;*************************************************
int_0:push a
push b
clr cs
clr sck
mov a , #0eh
acall wr_data
acall rd_byte
mov byte_1 , a
acall rd_byte
mov byte_2 , a
acall rd_byte
mov byte_3 , a
setb sck
setb cs
nop
clr cs
setb sck
mov a , #5eh ; 清除DRDY位
acall wr_byte
mov a , #0ffh
acall wr_byte
mov a , #0ffh
acall wr_byte
mov a , #0ffh
acall wr_byte
clr sck
setb cs
pop b
pop a
reti
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?