不好意思,前段时间有点事,没能及时回复。下边是我写的程序,前辈看看是不是有问题?
;**************************************************
; ADS1232接口定义
;**************************************************
PDWN BIT P2.0
SCLK BIT P2.1
DRDY_OUT BIT P2.2
;**************************************************
; 称重AD值缓冲区定义
;**************************************************
CZADZ DATA 31H
CZADZ+1 DATA 32H
CZADZ+2 DATA 33H
;*************************************************
; 主循环
;**************************************************
START:
CALL CSHADS1232 ;开机初始化ADS1232
CALL KJJZS1232 ;ADS1232开机校准程序
START2:
CALL CJCZAD ;采集称重A/D值
CALL JSADJSLBCL ;采集AD计数滤波处理数据
CALL CZZXSCX ;显示称重值程序
JMP START2
;**************************************************
; 开机初始化ADS1232
;**************************************************
CSHADS1232:
CLR PDWN ;复位脚拉低,复位ADS1232
NOP
CLR SCLK ;开机时钟脚拉低
NOP
MOV R0,#0FFH ;延时
DJNZ R0,$ ;增益和滤波在板子上固定连接
;增益:128 滤波:10HZ
SETB PDWN ;复位脚拉高,复位结束
MOV R0,#0FFH ;延时一会儿
DJNZ R0,$
RET
;**************************************************
; ADS1232开机校准程序
;**************************************************
KJJZS1232:
CLR SCLK
NOP
NOP
JB DRDY_OUT,KJJZS1232;数据没有准备好等待
MOV R2,#24 ;采集数据位数
KJJZS1232B:
SETB SCLK
NOP ;延时
CLR SCLK
NOP ;延时
MOV C,DRDY_OUT
MOV A,R3
RLC A
MOV R3,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R5
RLC A
MOV R5,A
DJNZ R2,KJJZS1232B
SETB SCLK
NOP
CLR SCLK ;发送第25个脉冲
NOP
SETB SCLK
NOP
CLR SCLK ;发送第26个脉冲,启用校准
NOP
CALL YS0D5S ;延时0.5S等待校准结束
RET
;***************************************************************************
; 采集称重A/D值
;出口:R3,R4,R5存称重A/D值,R3存低位,R4存次高位,R5存高位
;***************************************************************************
CJCZAD:
CLR SCLK
NOP
NOP
JB DRDY_OUT,CJCZAD1 ;数据没有准备好等待
MOV R2,#24
KJJZS1232B:
SETB SCLK
NOP ;延时
CLR SCLK
NOP ;延时
MOV C,DRDY_OUT
MOV A,R3
RLC A
MOV R3,A
MOV A,R4
RLC A
MOV R4,A
MOV A,R5
RLC A
MOV R5,A
DJNZ R2,KJJZS1232B
SETB SCLK
NOP
CLR SCLK ;发送第25个脉冲
NOP
ZSTZ1:
CLR A
MOV A,R5
CPL ACC.7 ;取反符号位变成偏移的二进制数
MOV R5,A
MOV CZADZ,R3
MOV CZADZ+1,R4
MOV CZADZ+2,R5 ;称重AD值存入CZADZ-CZADZ+2
RET |