找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1317|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

求助!keil寫單片機(jī)例程都報(bào)錯

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:379392 發(fā)表于 2018-8-8 17:39 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
程序是單片機(jī)資料里的例程 spi測試的,本來自己參考寫的時(shí)候翻譯在SPSTAT=SPIF|WCOL;處就會報(bào)錯141,于是直接重寫了一遍例程,還是報(bào)錯。
只要是出現(xiàn)了A|B的地方就報(bào)錯,求賜教什么原因呀!萬分感謝!
報(bào)錯內(nèi)容:
compiling 1.c...
1.c(43): error C141: syntax error near '|'
1.c(54): error C141: syntax error near '|'
1.c(80): error C141: syntax error near '|'
1.c - 3 Error(s), 0 Warning(s).

程序如下 報(bào)錯的是標(biāo)紅處

#include "reg51.h"
#define FOSC 1843200L
#define BAUD (256-FOSC/32/115200)
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned long DWORD;
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;
sfr SPDAT=0xcf;
sbit SPISS=P3^4;
sbit sss=P3^3;
sfr IE2=0xAF;
#define ESPI 0x02
void InitUart();
void InitSPI();
void SendUart(BYTE dat);
BYTE RecvUart();
bit MSSEL;
//////////////////////////
void main()
{
        InitUart();
        InitSPI();
        IE2|=ESPI;
        EA=1;
        while(1)
        {
                if(        RI)
                {
                        SPCTL=SPEN|MSTR;
                        MSSEL=1;
                        ACC=RecvUart();
                        SPISS=0;
                        SPDAT=ACC;        
                }
        }
}
/////////////////////
void spi_isr() interrupt 9 using 1
{
        SPSTAT=SPIF|WCOL;
        if(MSSEL)
        {
                SPCTL=SPEN;
                MSSEL=0;
                SPISS=1;
                SendUart(SPDAT);
        }
        else
        {
                SPDAT=SPDAT;
        }
}
/////////////////////////
void InitUart()
{
        SCON=0x5a;
        TMOD=0x20;
        AUXR=0x40;
        TH1=TL1=BAUD;
        TR1=1;
}
////////////////////////////////
void InitSPI()
{
        SPDAT=0;
        SPSTAT=SPIF|WCOL;
        SPCTL=SPEN;
}
//////////////////////////////////
void SendUart(BYTE dat)
{
        while(!TI);
        TI=0;
        SBUF=dat;
}
/////////////////////////////////
BYTE RecvUart()
{
        while(!RI);
        RI=0;
        return SBUF;
}
再次感謝!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:213173 發(fā)表于 2018-8-8 18:08 | 只看該作者
#define SSIG 0x80;........宏定義的分號多余,全部去掉就可以了。

評分

參與人數(shù) 1黑幣 +8 收起 理由
santo + 8 很給力!

查看全部評分

回復(fù)

使用道具 舉報(bào)

板凳
ID:277550 發(fā)表于 2018-8-8 18:13 | 只看該作者
sfr類型,,,換別的寫法,如使用if判斷、再賦1值或0值
回復(fù)

使用道具 舉報(bào)

地板
ID:277550 發(fā)表于 2018-8-8 18:18 | 只看該作者
更正一下,,,錯誤在#define的用法上,,,

下邊正確的

#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

評分

參與人數(shù) 1黑幣 +8 收起 理由
santo + 8 贊一個(gè)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

5#
ID:379392 發(fā)表于 2018-8-8 18:30 | 只看該作者
devcang 發(fā)表于 2018-8-8 18:18
更正一下,,,錯誤在#define的用法上,,,

下邊正確的

ok啦 謝謝謝謝!!
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表