keil的报错 error c141:syntax error near')'

#include"reg51.h"#defineDATA_BUS(P0)#defineRS(P2_bit.P2_0)#defineRW(P2_bit.P2_1)#defi... #include "reg51.h"

#define DATA_BUS (P0)

#define RS (P2_bit.P2_0)
#define RW (P2_bit.P2_1)
#define E (P2_bit.P2_2)
typedef unsigned char uchar;

typedef unsigned int uint;
void check_busy(void);

void write_command(uchar com);
void write_data(uchar data); <<<<<<<<报错所在的行
void LCD_init(void);
void string(uchar ad ,uchar *s);
void lcd_test(void);
void delay(uint);
void main(void)

{ LCD_init();
while(1)
{ string(0x80,"Have a nice day!");
string(0xC0," Proteus VSM");
delay(100);
write_command(0x01);
delay(100);
}
}
void delay(uint j)

{ uchar i = 60;
for(; j>0; j--)
{ while(--i);
i = 59;
while(--i);
i = 60;
}
}
void check_busy(void)

{ do
{ DATA_BUS = 0xff;
E = 0;
RS = 0;
RW = 1;
E = 1;
__no_operation();
} while(DATA_BUS & 0x80);
E = 0;
}

void write_command(uchar com)
{ check_busy();
E = 0;
RS = 0;
RW = 0;
DATA_BUS = com;
E = 1;
__no_operation();
E = 0;
delay(1);
}

void write_data(uchar data)
{ check_busy();
E = 0;
RS = 1;
RW = 0;
DATA_BUS = data;
E = 1;
__no_operation();
E = 0;
delay(1);
}

void LCD_init(void)
{ write_command(0x38); // 8-bits, 2 lines, 7x5 dots
write_command(0x0C); // no cursor, no blink, enable display
write_command(0x06); // auto-increment on
write_command(0x01); // clear screen
delay(1);
}

void string(uchar ad, uchar *s)
{ write_command(ad);
while(*s>0)
{ write_data(*s++);
delay(100);
}
}
展开
 我来答
元飞珍DR
推荐于2018-05-09 · TA获得超过2429个赞
知道小有建树答主
回答量:309
采纳率:95%
帮助的人:124万
展开全部
data 是系统保留字, 不能做为自定义的变量名。 你把它换个名字就可以了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ghost4063
2013-11-04 · TA获得超过6522个赞
知道大有可为答主
回答量:2940
采纳率:75%
帮助的人:2771万
展开全部
参数名不要用data,换个名字。data在KEIL中是个关键字
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式