资源简介
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个文件信息
相关资源
- ISD1700SPI通讯总结
- STC12C5A60S2内部AD+LCD1602显示
- HSpice电路仿真软件教程与
- 32位SPI通信FPGA
- STM32-硬件SPI-4004语音播放实验
- CListCtrl重绘,内嵌按钮等控件
- OrCAD的PSpice元件库
- SPI通信协议中文版SPIV3
- ClistCtrl中集成treeCtrl
- zw_STC_单片机原理图库.zip
- ModbusTCPMQTT
- 基于stm32f103c8t6的已实现模拟iic和模拟
- 功能强大美观的画图程序,可画各种
- RTL8305的寄存器读写以及stc的串口设置
- TestCenter过滤器的使用
- Hspice 0.18um工艺库
- STC15 万年历程序
- STC15W4-nRF24L01 项目
- 开发板原理图
- STC含下位机通信和上位机贪吃蛇.zip
- PID方式PWM输出温度控制stc12c5a+ds18b20
- keil程序stc89c52/51rc读取rfid rc522射频卡
- SPI接口与74HC595的连接原理图
- ModbusTCP 客户端
- fpga spi通信程序
- 重写Spinner类,实现点击后弹出带有确
- 基于Verilog的SPI总线写数据
- spi fpga verilog 代码
- BEACONSTC8G1K08.zip
- MSP430F149利用硬件SPI口读写串行Flash
评论
共有 条评论