• 大小: 112KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-26
  • 语言: 其他
  • 标签: stc  SPI  

资源简介

stc单片机的SPI例程,测试通过,大家可以参考下。

资源截图

代码片段和文件信息

/*------------------------------------------------------------------*/
/* --- STC MCU International Limited -------------------------------*/
/* --- STC 1T Series MCU SPI Demo(Each other as the master-slave) --*/
/* --- Mobile: (86)13922805190 -------------------------------------*/
/* --- Fax: 86-755-82944243 ----------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------*/
/* If you want to use the program or the program referenced in the  */
/* article please specify in which data and procedures from STC    */
/*------------------------------------------------------------------*/

#include “reg51.h“

#define FOSC        18432000L
#define BAUD        (256 - FOSC / 32 / 115200)

typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned long DWORD;

sfr  AUXR       =   0x8e;       //Auxiliary register

sfr SPSTAT      =   0x84;       //SPI status register
#define SPIF        0x80        //SPSTAT.7
#define WCOL        0x40        //SPSTAT.6
sfr SPCTL       =   0x85;       //SPI control register
#define SSIG        0x80        //SPCTL.7
#define SPEN        0x40        //SPCTL.6
#define DORD        0x20        //SPCTL.5
#define MSTR        0x10        //SPCTL.4
#define CPOL        0x08        //SPCTL.3
#define CPHA        0x04        //SPCTL.2
#define SPDHH       0x00        //CPU_CLK/4
#define SPDH        0x01        //CPU_CLK/16
#define SPDL        0x02        //CPU_CLK/64
#define SPDLL       0x03        //CPU_CLK/128
sfr SPDAT       =   0x86;       //SPI data register
sbit SPISS      =   P1^3;       //SPI slave select connect to other MCU‘s SS(P1.4) pin

void InitUart();
void InitSPI();
void SendUart(BYTE dat);        //send data to PC
BYTE RecvUart();                //receive data from PC
BYTE SPISwap(BYTE dat);         //swap SPI data between master and slave

///////////////////////////////////////////////////////////

void main()
{
    InitUart();                 //initial UART
    InitSPI();                  //initial SPI

    while (1)
    {
        if (RI)
        {
            SPCTL = SPEN | MSTR; //set as master
            SendUart(SPISwap(RecvUart()));
            SPCTL = SPEN; //reset as slave
        }
        if (SPSTAT & SPIF)
        {
            SPSTAT = SPIF | WCOL; //clear SPI status
            SPDAT = SPDAT; //mov data from receive buffer to send buffer
        }
    }
}

///////////////////////////////////////////////////////////

void InitUart()
{
    SCON = 0x5a;                //set UART mode as 8-bit variable baudrate
    TMOD = 0x20;                //timer1 as 8-bit auto reload mode
    AUXR = 0x40;                //timer1 work at 1T mode
    TH1 = TL1 = BAUD;           //115200 bps
    TR1 = 1;
}

///////////////////////////////////////////////////////////

void InitSPI()
{
    SPDAT = 0;              

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        981  2010-08-04 09:13  互为主从\STC12C5628AD\ASM\SPIDemo

     文件       3925  2010-08-04 09:13  互为主从\STC12C5628AD\ASM\SPIDemo.asm

     文件        325  2010-08-04 09:13  互为主从\STC12C5628AD\ASM\SPIDemo.hex

     文件         46  2010-08-04 09:13  互为主从\STC12C5628AD\ASM\SPIDemo.lnp

     文件       9642  2010-08-04 09:13  互为主从\STC12C5628AD\ASM\SPIDemo.LST

     文件       4148  2010-08-04 09:13  互为主从\STC12C5628AD\ASM\SPIDemo.M51

     文件       1003  2010-08-04 09:13  互为主从\STC12C5628AD\ASM\SPIDemo.OBJ

     文件        859  2010-08-03 20:04  互为主从\STC12C5628AD\ASM\SPIDemo.Opt

     文件        372  2010-08-04 09:13  互为主从\STC12C5628AD\ASM\SPIDemo.plg

     文件       2138  2010-08-03 20:04  互为主从\STC12C5628AD\ASM\SPIDemo.Uv2

    .......       859  2010-08-03 19:59  互为主从\STC12C5628AD\ASM\SPIDemo_Opt.Bak

    .......      2140  2010-08-03 19:57  互为主从\STC12C5628AD\ASM\SPIDemo_Uv2.Bak

     文件       4526  2010-08-04 09:13  互为主从\STC12C5628AD\C\SPIDemo

     文件       4046  2010-08-04 09:13  互为主从\STC12C5628AD\C\SPIDemo.c

     文件        395  2010-08-04 09:13  互为主从\STC12C5628AD\C\SPIDemo.hex

     文件         46  2010-08-04 09:13  互为主从\STC12C5628AD\C\SPIDemo.lnp

     文件       6679  2010-08-04 09:13  互为主从\STC12C5628AD\C\SPIDemo.LST

     文件       5548  2010-08-04 09:13  互为主从\STC12C5628AD\C\SPIDemo.M51

     文件       4880  2010-08-04 09:13  互为主从\STC12C5628AD\C\SPIDemo.OBJ

     文件        853  2010-08-04 09:13  互为主从\STC12C5628AD\C\SPIDemo.Opt

     文件        367  2010-08-04 09:13  互为主从\STC12C5628AD\C\SPIDemo.plg

     文件       2134  2010-08-03 19:47  互为主从\STC12C5628AD\C\SPIDemo.Uv2

    .......       853  2010-08-03 19:47  互为主从\STC12C5628AD\C\SPIDemo_Opt.Bak

    .......      2136  2010-08-03 19:10  互为主从\STC12C5628AD\C\SPIDemo_Uv2.Bak

     文件        981  2010-08-04 09:13  互为主从\STC12C5A60S2\ASM\SPIDemo

     文件       3925  2010-08-04 09:13  互为主从\STC12C5A60S2\ASM\SPIDemo.asm

     文件        325  2010-08-04 09:13  互为主从\STC12C5A60S2\ASM\SPIDemo.hex

     文件         46  2010-08-04 09:13  互为主从\STC12C5A60S2\ASM\SPIDemo.lnp

     文件       9642  2010-08-04 09:13  互为主从\STC12C5A60S2\ASM\SPIDemo.LST

     文件       4148  2010-08-04 09:13  互为主从\STC12C5A60S2\ASM\SPIDemo.M51

............此处省略119个文件信息

评论

共有 条评论