MAX1247 模拟SPI通信汇编代码

//写控制字

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值