//写控制字
PUBLIC _WRC
DFFE SEGMENT CODE
RSEG DFFE
SCLK EQU P1.0 //时钟控制
CS EQU P1.1 //片选
DIN EQU P1.2 //控制字输入
DOUT EQU P1.3 //采样结果输出
NOP
CLR DIN
CLR SCLK
CLR CS
MOV A, R7
MOV R0, #08H
L1:
NOP
CLR C
CLR SCLK
RLC A
MOV DIN, C
NOP
SETB SCLK
DJNZ R0, L1
NOP
NOP
CLR SCLK
CLR DIN
RET
END
//读AD转换结果
PUBLIC _RDATA
DFFE SEGMENT CODE
RSEG DFFE
SCLK EQU P1.0 //时钟控制
CS EQU P1.1 //片选
DIN EQU P1.2 //控制字输入
DOUT EQU P1.3 //采样结果输出
_RDATA:
MOV A, R7
MOV R1, A
CLR C
SETB SCLK
MOV R0, #08H
MOV A, #00H
NOP
CLR SCLK
NOP
NOP
L2:
NOP
NOP
SETB SCLK
MOV C, DOUT
RLC A
NOP
NOP
CLR SCLK
DJNZ R0, L2
MOV @R1, A
MOV R0, #08H
MOV A, #00H
L3:
CLR C
NOP
SETB SCLK
NOP
MOV C, DOUT
RLC A
NOP
CLR SCLK
DJNZ R0, L3
INC R1
ANL A, #0F0H
SWAP A
MOV @R1, A
SETB CS
RET
END
由于标准的MCS-51是不支持SPI串口的,所以MAX1247与51的通信可以选择模拟SPI通信,
这两段代码最初是作为两个模块,在Keil C51中被用C语言编写的主程序调用的.