資源簡(jiǎn)介
stc單片機(jī)的SPI例程,測(cè)試通過(guò),大家可以參考下。

代碼片段和文件信息
/*------------------------------------------------------------------*/
/*?---?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;??????????????
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????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個(gè)文件信息
評(píng)論
共有 條評(píng)論