51汇编实现的spi代码(模式0)

来源:互联网 发布:淘宝衣服挂拍布光技巧 编辑:程序博客网 时间:2024/06/07 00:35

鉴于很多单片机书上是多是使用C51实现的spi模式1,用于读取SD卡,实际上spi模式0应该更普遍才对。故这里附上汇编实现的spi代码,已在指纹模组上验证过,功能ok。

/*CopyRight@piaoxiang.zhang****/

CSn EQU P0.4MOSI EQU P0.5MISO EQU P0.6CLK EQU P0.7ORG 0000H   LJMP startORG 0100Hstart:        LCALL spi_init        MOV R2,#40Hread_reg_all:        MOV40H,#0BFH;        LCALL spi_enable        MOV R0,#10H        MOV A,@R1        ADD A,R2        LCALL spi_write        LCALL spi_disable        DJNZ R2, read_reg_all        SJMP startspi_read:       CPL CLK       NOP       NOP       MOV C,MISO       RLC A       CPL CLK       DJNZ R0,spi_read           RETspi_write:       RLC A       MOV MOSI,C       CPL CLK;CLK为低,发送数据       NOP       NOP       NOP       CPL CLK;CLK 为高       DJNZ R0,spi_write       SETB MOSI       RETspi_enable:       CLR CSn       ;MOV R0,#01H       ;LCALL delay       RETspi_disable:       SETB CSn       ;MOV R0,#01H       ;LCALL delay       RETspi_init:    CLR CLK ;CPOL=0,CLK 空闲低电平    SETB CSn ;片选低电平有效    SETB MOSI    SETB MISO    MOV R1,#40H    MOV 40H,#5FH    CLR P0.2;在取上拉电阻时    CLR P0.1;P01 与 P02 短路了    RET

仿真图这里写图片描述

0 0