资源简介
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个文件信息
相关资源
- STC8951系列单片机中方指南
- Omron ETN21模块进行modbustcp通讯
- Spire API文档
- The direction of synaptic plasticity mediated
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 基于MFC扩展CListCtrl子项显示图片并叠
- 51模拟SPI读写SD卡(包括Fat和Fat32文件
- 28335写的用spi读取传感器数据并用CA
- STC12C5A60S2 CH4521 驱动数码管 显示
- STM32F103 CC2500完整驱动(模拟SPI)
- 可编辑的CListctrl 支持CEDIT文本框,C
- STC12C系列单片机函数库
- 手机短信api接口(源代码)
- CListCtrlExDemo.rar
- cs5530的SPI程序
- 9s12单片机SPI功能代码
- stm32 用SPI 方式读写 SDHC
- SPI Master 的Verilog源代码
- 适用于STC单片机和51单片机的SX1262驱动
- EESkill NRF24L01 无线模块用户手册
- Spire.Doc 破解版
- Spin-1目标的广义parton分布的多项式和
- 介子和S波氘核的四极矩以及对spin-1系
- 基于SPCE061A和PTR8000的模拟SPI总线通信
- 用8位spi实现16位spi
- linux SPI设备注册和驱动小结
- 用Verilog语言写的CPLD和MCU通讯的SPI接口
- IAP15f2k61s2
- Spirent iTest用户手册详细介绍iTest的各
- 精确结果为3d N $$ \\ mathcal {N} $$ = 2 S
评论
共有 条评论