图中,tCONV为转换时间;tCSS为CS下降模沿的时间;tCSH为SCLK最后一个下降沿至CS上升沿的时间。
4 注意事项
(1)Tcss必须大于75μs,应在程序中先置CS为零,然后再发转换开始信号。
(2)转换开始脉冲必须与转换时钟同步,为此在P1.0和ALE之间应加一个或门后再接至CONV,以确保同步。
(3)在TXD直接至SCLK相连时,由于89C51在TXD的下降沿读数,而TXD(SCLK)的第一个下降沿以开始输出次高位,这样以会丢失最高位。为此,可在TXD与SCLK之间接一个反相器,这样在TXD的下降沿读入数据时,即可在TXD的上升沿(SCLK的下降沿)使DOUT输出数据。由于读入数据和输出数据是分时进行的,因而保证了这种先读出最高位,再输出次高位的全数据输出方式。
(4)由于在收缓冲器SBUF中,数据的存储顺序为:
d6 | d7 | d8 | d9 | d10 | d11 | d12 | d13 |
所以要在程序中重新排列其顺序,图6为其程序框图,具体的程序如下:
ADZHUAN:CLR PSW
CLR C
CLR P2.7
MOV P0,#02H
MOV R1,#03H
SETB P1.0
CLR P1.0
SETB P1.0
SETB P3.2
HERE:JB P3.2,HERE
LOOP:MOV SCON,10H
WAIT1:JNB RI,WAIT1
MOV A,SBUF
MOV @R1,A
INC R1
DJNZ R0,LOOP
SETB P2.7
LCALL EXCH
RET
EXCH:MOV R1,30H
MOV A,#00H
CLR C
MOV R7,#08H
LOOP0:XCH A,R1
RRC A
XCH A,R1
RLC A
DJNZ R7,LOOP0
MOV 32H,A
MOV R1,31H
MOV A,#00H
CLR C
MOV R7,#08H
LOOP1:XCH,A,R1
RRC A
XCH A,R1
RLC A
DJNZ R7,LOOP1
MOV 33H,A
RET