📄 rd_ad2543.txt
字号:
硬件:小弟请教关于TLC1543的问题 [scott99] [21次] 01-9-29 上午 10:45:06
我在读取TLC1543内部标准数据:Vref+,Vref-,应当为3FF和000,实际数据总是在一定范围
内波动,而不是标准数据。请问各位是否遇到过这种情况,是否正常?
我用过2543的,一般只有+1或-1的波动。1543应该不会太远吧。另外把你的驱动程序给我一份好吗?我有个1543放在家里没用,我想利用它一下。 [傲气雄鹰] [4次] 01-9-29 下午 01:45:27
我用过2543的,一般只有+1或-1的波动。1543应该不会太远吧。另外把你的驱动程序给我一
份好吗?我有个1543放在家里没用,我想利用它一下。
我用的是龙版主的1543驱动程序,挺好用,只有+1,-1的波动,但是在2543上改造后,很不稳,对照时序也没找出毛病,不知你能不能贴出你的程序,让我们学学。 [半夜开车] [5次] 01-9-29 下午 06:27:53
RD_AD2543: [傲气雄鹰] [14次] 01-9-29 下午 07:04:31
DATA_SAM: ; 转换结果存数据缓冲区TESTDATA中
PUSH 00H
PUSH 01H
PUSH 02H
PUSH 03H
MOV R0,#TESTDATA ; 数据缓冲区首地址#TESTDATA->R0
MOV R1,#00001100B ; 0通道方式/通道数据
LCALL RD_AD2543 ;第一次读取的转换结果可能不准确,丢弃。
MOV R1,#00011100B ; 1通道方式/通道数据
LCALL RD_AD2543 ;送1通道方式/通道数据并读第0通道转换结果
0
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区,下同
INC R0
MOV @R0,03H ;R3 ; 转换结果存放到数据缓冲区
INC R0
MOV R1,#00101100B ; 2通道方式/通道数据
CLR I_U
LCALL DELAY02S
LCALL DELAY02S
LCALL RD_AD2543 ;送2通道方式/通道数据并读第1通道转换结果
1
SETB I_U
LCALL DELAY02S
LCALL DELAY02S
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区,下同
INC R0
MOV @R0,03H ;R3 ; 转换结果存放到数据缓冲区
INC R0
MOV R1,#00111100B ; 3通道方式/通道数据
LCALL RD_AD2543 ;送3通道方式/通道数据并读第2通道转换结果
2
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区,下同
INC R0
MOV @R0,03H ;R3
INC R0
MOV R1,#4CH ; 4通道方式/通道数据
LCALL RD_AD2543 ; 送4通道方式/通道数据并读第3通道转换结果
3
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区,下同
INC R0
MOV @R0,03H ;R3
INC R0
MOV R1,#5CH ; 5通道方式/通道数据
LCALL RD_AD2543 ; 送5通道方式/通道数据并读第4通道转换结果
4
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区,下同
INC R0
MOV @R0,03H ;R3
INC R0
MOV R1,#6CH ; 6通道方式/通道数据
LCALL RD_AD2543 ;送6通道方式/通道数据并读第5通道转换结果
5
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区,下同
INC R0
MOV @R0,03H ;R3
INC R0
MOV R1,#7CH ; 7通道方式/通道数据
LCALL RD_AD2543 ;送7通道方式/通道数据并读第6通道转换结果
6
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区,下同
INC R0
MOV @R0,03H ;R3
INC R0
MOV R1,#8CH ; 8通道方式/通道数据
LCALL RD_AD2543 ;送8通道方式/通道数据并读第7通道转换结果
7
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区,下同
INC R0
MOV @R0,03H ;R3
INC R0
MOV R1,#9CH ; 9通道方式/通道数据
LCALL RD_AD2543 ;送9通道方式/通道数据并读第8通道转换结果
8
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区,下同
INC R0
MOV @R0,03H ;R3
INC R0
MOV R1,#0ACH ; 10通道方式/通道数据
LCALL RD_AD2543 ;送10通道方式/通道数据并读第9通道转换结果
9
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区,下同
INC R0
MOV @R0,03H ;R3
INC R0
MOV R1,#0CH ; 0通道方式/通道数据
LCALL RD_AD2543 ;送0通道方式/通道数据并读第10通道转换结果
10
MOV @R0,02H ;R2 ; 转换结果存放到数据缓冲区。0~10共11个
INC R0
MOV @R0,03H ;R3
INC R0
POP 03H
POP 02H
POP 01H
POP 00H
RET
;供数据采集摸块“DATA_SAM”调用。
RD_AD2543: ; 转换结果R3,R2中格式为标准16进制
PUSH 04H
PUSH ACC
PUSH PSW
PUSH 01H
PUSH 00H
MOV A,R1 ; 把方式/通道控制字放到A
CLR CS ; 设置片选为低
JB ACC.1,LSB
MSB: MOV R4,#08 ; 先读高8位
LOP25431:
MOV C,DOUT ; 读转换结果
RLC A ; A寄存器左移,移入结果数据位,移出方式/通
道控制位
MOV DIN,C ; 输出方式/通道位
SETB CLK ; 设置I/O时钟为高
CLR CLK ; 清I/O时钟
DJNZ R4,LOP25431 ; R4不为0,则反回LOP25431
MOV R2,A ; 转换结果的高8位放到R2中
MOV A,R1 ; 复位A寄存器
JB ACC.1,RETURN
LSB: MOV R4,#08H ; 再读低4位
LOP25432:
MOV C,DOUT ; 读转换结果
RLC A ; A寄存器左移,移入结果数据位,
MOV DIN,A
SETB CLK ; 设置I/O时钟为高
CLR CLK
DJNZ R4,LOP25432 ; R4不为0,则反回LOP25432
MOV R3,A ; 转换结果的低4位放到R3中
MOV A,R1
JB ACC.1,MSB
RETURN: MOV A,R3 ;将R3,R2中格式转换为标准16进制
SWAP A
ANL A,#0FH
MOV R0,A ;0-3位
MOV A,R2 ;4-7位
SWAP A
ANL A,#0F0H
ORL A,R0
MOV R0,A
MOV A,R2 ;8-11位
SWAP A
ANL A,#00FH
MOV R1,A
MOV R2,00H
MOV R3,01H ;已将R3,R2中格式转换为标准16进制
POP 00H
POP 01H
POP PSW
POP ACC
POP 04H
RET
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -