MAX1247 模拟SPI通信汇编代码

来源:互联网 发布:java获取访问者ip地址 编辑:程序博客网 时间:2024/05/18 03:11

//写控制字

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语言编写的主程序调用的. 

原创粉丝点击