没搞懂我这个单片机语言错在哪里,救救命,他就显示那有错我实在找不出来

#include<reg52.h>
#include<intrins.h>
sbit WE=P2^7;
sbit DU=P2^6;
sbit SCL=P2^1;
sbit SDA=P2^0;
#define I2cRead 1
#define I2cWrite 0
#define AckFlag//标志位
unsigned char code tatel[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f} ;
unsigned char code weixuan[]={0xfe,0xFd,0xFb} ;
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y = 114; y>0; y--);
}
void xianshu(int i)
{static int wei;

P0=0xff ;
WE=1;
P0=weixuan[wei]; //1111 1110
WE=0;

switch(wei)
{
case 0: DU=1;P0=tatel[i/100];DU=0; break;
case 1: DU=1;P0=tatel[i%100/10];DU=0; break;
case 2: DU=1;P0=tatel[i%10];DU=0;break;
}
wei++;
if(wei==3)
wei=0;
}
void delay5us()
{
nop();//执行这一语句以一个周期
}
void cs()
{
EA=1;
ET0=1;
TR0=1;
TMOD|=0x01;
TH0=0xed;
TL0=0xff;
}
void I2cStart()
{
SCL=1;
SDA=1;
delay5us;
SDA=0;
delay5us;
}
void I2cStop()
{
SCL=0;//先记忆
SDA=0;//此处往下按原理图三虚线内编成
SCL=1;
delay5us();
SDA=1;
delay5us();
}
int zyingda()
{
SCL=1;
delay5us();
if(SDA)
{
SCL=0;
return(1);
}
else
{
SCL=0;
return (0);
}
}
void ReadACK(bit i)
{
SCL=0;
if(i)
SDA=1;//非应答
else
SDA=0;//应答
SCL=1;
delay5us();
SCL=0;
SDA=1;//释放总线
}
void I2cSendBYte(char DAT)
{ int i;
for(i=0;i<8;i++)
{
SCL=0;//允许数据变化
if(DAT&0x80)//本章笔记第二页有传输解释笔记
SDA=1;//传输数据
else
SDA=0;//传输数据
SCL=1;//为了可以接下来接着传输数据
DAT<<=1;//左移一位(高位移除低位补0)
}
SCL=0;//因为在传输数据程序中SCL为1时,SDA才允许变化
SDA=1;//释放数据总线
}
void At24c02write(char ADDR,DAT)
{
I2cStart();
I2cSendBYte(0xa0+I2cWrite);
if( ReadACK() )
AckFlag=1;//非应答
else
AckFlag=0;//应答
I2cSendBYte(ADDR);
if(ReadACK())
AckFlag=1;//非应答
else
AckFlag=0;//应答
I2cSendBYte(DAT);
if(ReadACK())
AckFlag=1;//非应答
else
AckFlag=0;//应答
I2cStop();
}
char I2cReadByte()
{
char i,DAT;
for(i=0;i<9;i++)
{
DAT<<=1;
SCL=0;
SCL=1;
if(SDA)
DAT|=0x01;
}
return (DAT);
}
char At24c02Read(char ADDR)
{char DAT
I2cStart();
I2cSendBYte(0xa0+I2cWrite);
if(ReadACK()))
AckFlag=1;//非应答
else
AckFlag=0;//应答
I2cSendBYte(ADDR);
cyingda();
I2cStart();
I2cSendBYte(0xa0+I2cRead);
if(ReadACK())
AckFlag=1;//非应答
else
AckFlag=0;//应答
DAT=I2cReadByte();
zyingda(1);//给1直接表非应答
I2cStop();
return(DAT);
}
void main()
{
int num;
cs();
EA=0;//屏蔽中断以免影响程序模仿
At24c02write(2,9);
num=At24c02Read(2);
EA=1;//此处可打开,因为模仿以完成
while(1);
}
void time0() interrupt 1
{
TH0=0xed;
TL0=0xff;
xianshu(num);
}

你至少应该把报错内容和报错的行贴出来吧。

这行
#define AckFlag//标志位
把注释去掉或者换行试试。