📄 ad8325a.asm
字号:
;CPU各个输入输出端口定义
SPICLK BIT P1.1 ;SPI时钟,X5645DE的SCK6 MCP42010的SCK2 ADS8325的DCLK7
PXDZA BIT P1.2 ;二四译码器74139 14脚A端
PXDZB BIT P1.3 ;二四译码器74139 13脚B端
SPISR BIT P1.6 ;SPI,DAC8532数据输入,X5645DE的输入,MCP42010的输入,
SPISC BIT P3.1 ;SPI,DAC8532的SYNC,X5645DE的数据输出,ADS8325的数据输出
;***************启动ADS8325子程序 ********************
;一次滤波,0至128次。二次滤波,加次数
;用一区寄存器
ADS8325: PUSH PSW ;保护PSW
SETB RS0 ;用一区寄存器
CLR RS1
MOV R6,#08H ;无滤波时
SETB YCLBBZ ;置一次滤波标志
MOV DPTR,#YCLBDZ ;一次滤波地址
MOVX R7,@DPTR ;一次滤波参数进R7
MOV A,R7
JNZ ADS1 ;不是零有滤波则转ADS1,
INC R7 ;无滤波一次采集
CLR YCLBBZ ;清一次滤波标志
ADS1: SETB ECLBBZ ;置二次滤波标志
MOV DPTR,#ECLBDZ
MOVX A,@DPTR ;二次滤波参数
JNC A,ADS2 ;不零转ADS2
MOV R6,#0FH
CLR ECLBBZ ;清二次滤波标志
ADS2: JNB ECLBBZ,ADS3 ;二次滤波标志,零转
MOV A,#08H
ADD A,R7
MOV R7,A
ADS3: SETB PXDZA
SETB PXDZB
SETB SPISC
SETB SPICLK
MOV R0, #40H
ADS4: MOV R5, #2 ;十六位采集
SETB PXDZA ;片选信号
CLR PXDZB ;CS2 A=1 ,B=0
MOV A, #06 ;启动脉冲数6个
ADS5: CLR SPICLK ;启动脉冲
DEC A
SETB SPICLK
JNZ ADS5 ;启动脉冲结束
ADS6: JB SPISC, ADS6 ;AD数据读准备好 ;/???????
ADS7: MOV R4,#08 ;8次一个循环
ADS8: CLR SPICLK
CLR C
SETB SPICLK
MOV C, SPISC ;读一位数据
RLC A ;左移C一位数据进A
DJNZ R4, ADS8
MOV @R0,A ;8位数据送RAM
INC R0
DJNZ R5,ADS7 ;读下一字节数据
SETB PXDZA ;关片选
SETB PXDZB
MOV A,#03 ;停AD8325Z转换,停止脉冲数3
ADS9: CLR SPICLK
DEC A
SETB SPICLK
JNZ ADS9 ;停AD8325Z脉冲结束
DJNZ R6, ADS4
DJNZ R7, ADS4
NOP
POP PSW
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -