标题:
请问一下我的这个s4单片机编译的程序为什么出现这种错误?error C141: syntax error...
[打印本页]
作者:
suning
时间:
2021-11-21 15:17
标题:
请问一下我的这个s4单片机编译的程序为什么出现这种错误?error C141: syntax error...
错误是:
PCI协议.C(75): error C141: syntax error near '|'
PCI协议.C(103): error C141: syntax error near ';'
PCI协议.C(103): error C141: syntax error near ')'
PCI协议.C(104): error C141: syntax error near '|'
这个程序是要实现一次SPI协议,各种方法都试了就是解决不了这个问题。
我在c++里都试了一遍,可以通过。
单片机源程序如下:
#include<reg51.h>
#define MASTER
typedef unsigned int u8;
typedef unsigned char u16;
typedef unsigned long int u32;
#define URMD 0
sfr T2H=0XD6;
sfr T2L=0XD7;
sfr AUXR=0X8E;
sfr SPSTAT=0Xcd;
#define SPIF 0X80;
#define WCOL 0X40;
sfr SPCTL=0XCE;
#define SSIG 0X80
#define SPEN 0X40
#define DORD 0X20
#define MSTR 0X10
#define CPOL 0X08
#define CPHA 0X04
#define SPDHH 0X00
#define SPDH 0X01
#define SPDL 0X02
#define SPDLL 0X03
sbit SPISS=P1^1;
sfr SPDAT=0XCF;
#define ESPI 0X02
void SendUart(u16 dat);
void InitUart();
void InitSPI();
u16 RecvUart();
u16 SPISwap(u16 dat);
void main()
{
InitUart();
InitSPI();
while(1)
{
#ifdef MASTER
SendUart(SPISwap(RecvUart()));
#else
ACC=SPISwap(ACC);
#endif
}
}
void InitUart()
{
SCON=0X5A;
#if URMD==0
T2L=0XD8;
T2H=0XFF;
AUXR=0X14;
AUXR|=0X01;
#elif URMD==1
AUXR=0X40;
TMOD=0X00;
TL1=0XD8;
TH1=0XFF;
TR1=1;
#else
TMOD=0X20;
AUXR=0X40;
TH1=TL1=0XFB;
TR1=1;
#endif
}
void InitSPI()
{
SPDAT=0;
SPSTAT=SPIF|WCOL;
#ifdef MASTER
SPCTL=SPEN|MSTR;
#else
SPCTL=SPEN;
#endif
}
void SendUart(u16 dat)
{
while(!TI)
TI=0;
SBUF=dat;
}
u16 RecvUart()
{
while(!RI)
RI=0;
return SBUF;
}
u16 SPISswap(u16 dat)
{
#ifdef MASTER
SPISS=0;
#endif
SPDAT=dat;
while(!(SPSTAT&SPIF))
SPSTAT=SPIF|WCOL;
#ifdef MASTER
SPISS=1;
#endif
return SPDAT;
}
复制代码
作者:
小黑屋525
时间:
2021-11-22 11:04
语法错误啊,,,,在75行和104行,把这两行改成SPSTAT=(SPIF|WCOL);这样子试试。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1