keil c 的错误error C141: syntax error near '='

#include <reg51.h>

#define LED P1^1
#define KEY_ON P1^6
#define KEY_OFF P1^7

void main(void)
{
KEY_ON = 1; //开关亮输出高电平,接通就变为低电平
KEY_OFF = 1; //开关灭输出高电平,接通就变为低电平
while(1)
{
if(KEY_ON==0) LED = 1;
if(KEY_OFF==0) LED = 0;
}
}
//就是这一小段程序 编译提示:
compiling LED_ONOFF.c...
LED_ONOFF.C(9): error C141: syntax error near '='
LED_ONOFF.C(10): error C141: syntax error near '='
LED_ONOFF.C(13): error C141: syntax error near '='
LED_ONOFF.C(14): error C141: syntax error near '='
Target not created
#define是宏定义语句
很明显楼主想做的是位操作,应该改将#define LED P1^1
#define KEY_ON P1^6
#define KEY_OFF P1^7
改为
sbit LED = P1^1;
sbit KEY_ON = P1^6;
sbit KEY_OFF = P1^7;
这样你文中的“=”就不违法了
在=附近遇到字符错误
这种错误一般是你在网上copy的代码,中间有非C语言标识符(即不是英文字符)的字符(一般是中文字符)。找到然后删除即可。
不行就照着原样重新打一遍代码,不要复制粘贴。
想独立使用 IO口,需先进行位定义,如:sbit P32=P3^2; 别忘了分号,之后就使用 P32 就代表 P3^2口了,^ 这个符号,在 C语言里面 是 个 运算符,跟你的 位定义冲突,所以,要先进行位定义,在程序里出现 ^ ,是 按位异或 运算。
应该是#include <reg51.h>
#define LED P1^1
#define KEY_ON P1^6
#define KEY_OFF P1^7
这几句有问题 你应该用的不是keil2吧 把这几条改成如下试试(即把^改成-)
#define LED P1-1
#define KEY_ON P1-6
#define KEY_OFF P1-7
最好打开reg51.h这个文件看一下头文件包含的内容 希望能帮到你
#define LED P1^1
#define KEY_ON P1^6
#define KEY_OFF P1^7

改为

sbit LED = P1^1;
sbit KEY_ON = P1^6;
sbit KEY_OFF = P1^7;