STC12C5A60S2的SPI单主单从机通信的问题,请神们相助.......
时间:10-02
整理:3721RD
点击:
以下是主机和从机的程序,为什么从机在串口助手中显示的数据和主机发送过去的不一样呢,我试着换了几个主机发送的数据,发现从机显示的数据也会改变,但没有规律。请神门指点。
主机程序:
#include<STC12C5A60S2.H>
#define SPIF (SPSTAT & 0x80)
sbit SCLK=P1^7;
sbit MISO=P1^6;
sbit MOSI=P1^5;
sbit SS=P1^4;
sbit LED=P1^0;
void init_UART()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
PCON=0x00;
SM0=1;
SM1=1;
REN=1;
TR1=1;
EA=1;
ES=1;
ET1=1;
}
void init_SPI()
{
SPCTL=0xfd;
SPSTAT=0xc0;
SPDAT=0;
}
void main()
{
init_UART();
init_SPI();
while(1)
{
SPDAT=15;
while(!SPIF);
SPSTAT=0xc0;
}
}
从机程序:
#include<STC12C5A60S2.H>
#include<stdio.h>
#define SPIF ( SPSTAT & 0x80 )
sbit SCLK=P1^7;
sbit MISO=P1^6;
sbit MOSI=P1^5;
sbit SS=P1^4;
sbit LED=P1^1;
unsigned int result;
void init_SPI()
{
SPCTL=0xed;
SPSTAT=0xc0;
EA=1;
IE2=0x03;
}
void Init_UART()
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SCON=0x50;
PCON=0x00;
SM0=1;
SM1=1;
ET1=1;
EA=1;
ES=1;
}
void main()
{
init_SPI();
init_UART();
result=0;
while(1)
{
ES=0;
TI=1;
printf("the get is:%i\n",result);
while(!TI);
ES=1;
TI=0;
}
}
void SPI_REC() interrupt 9
{
SPSTAT=0xc0;
result=SPDAT;
}