新手求解: missing ';' before 'code'

key0518 2011-07-15 01:18:04
#include<reg51.h>
#include<absacc.h>
#include<stdio.h>
#include<math.h>
#define uchar unsigned char
#define int unsigned int
uchar STH0;
uchar STL0;
bit FY=0;
uchar Song_Index=0,Tone_Index=0;
uchar k,key;
sbit SPK=P3^7;
sbit LED1=P0^0;
sbit LED2=P0^1;
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
uint code tab[]={0,63628,63835,64021,64103,64260,64400,64254,64580,
64684,64777,64820,64898,64968,65030,65058,65110,
65157,65178,65217,65252,65283};
void delay1(uint ms)
{
uchar t;
while(ms--)
for(t=0;t<120;t++);
}
void delay(void)
{
uchar i
for(i=300;i>0;i--);
}
uchar getkey(void)
{
uchar scancode,tmpcode;
if((P0&0Xf0)==0xf0)
return(0);
scancode=0xfe;
while((scancode&0x10)!=0)
{
P0=scancode;
if((P0&0Xf0)==0xf0)
{
tmpcode=(P0&0xf0)|0x0f;
return((~scancode)+(~tmpcode));
}
else scancode=(scancode<<1)|0x01;
}
}
/*void EX0_INT() interrupt 0
{
FY=0;LED1=1;LED2=0;
}
void EX0_INT() interrupt 0
{
FY=1;LED1=0;LED2=1;
}*/
void time0_int(void) interrupt 1 using 0
{
TH0=STH0;
TL0=STL0;
SPK=!SPK;
P2=DSY_CODE[K];
}
void main (void)
{
LED1=1;
LED2=0;
P2=0xc0;
IE=0x87;
TMOD=0x01;
IT0=1;
IT1=1;
while(1)
{
P1=0xf0;
if((P1&0xf0)!=0xf0)
{
delay();
if((P1&0xf0)!=0xf0)
{
key=getkey();
switch(key)
{
case 0x11:k=0;break;
case 0x21:k=1;break;
case 0x41:k=2;break;
case 0x81:k=3;break;
case 0x12:k=4;break;
case 0x22:k=5;break;
case 0x42:k=6;break;
case 0x82:k=7;break;
case 0x14:k=8;break;
case 0x24:k=9;break;
case 0x44:k=10;break;
case 0x84:k=11;break;
case 0x18:k=12;break;
case 0x28:k=13;break;
case 0x48:k=14;break;
case 0x88:k=15;break;
default:break;
}
if(FY==0)
{
STHO=tab[k]/256;
STL0=tab[k]%256;
TR0=1;
while((P1&0xf0)!=0xf0);
TR0=0;
}
else
{
while(FY==1)
{
if(Song[k][Tone_Index]==-1)
Tone_Index=0;
STHO=(tab[Song[k][Tone_Index]])/256;
STLO=(tab[Song[k][Tone_Index]])%256;
P2=DSY_CODE[Song[k][Tone_Index]];
TR0=1;
delay1(300*Len[k][Tone_Index]);
Tone_Index++;
TRO=0;
}
}
}
}
}
}



错误提示是:QIN.C(17): error C129: missing ';' before 'code'

前面该加的都加了 实在是不知道哪里有错误。。 求助高手。。。

...全文
979 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
MHBBCRCPJ 2011-07-16
  • 打赏
  • 举报
回复
这个错误好熟悉。
AnYidan 2011-07-16
  • 打赏
  • 举报
回复
点击错误,看看发生在那一行

void delay(void)
{
uchar i //=============================== ;
for(i=300;i>0;i--);
}
kuang52873731 2011-07-16
  • 打赏
  • 举报
回复
bing@ubuntu:~$ gcc csdn003.c
csdn003.c:1:18: fatal error: reg51.h: 没有那个文件或目录
compilation terminated.
xmxqiyan 2011-07-15
  • 打赏
  • 举报
回复
#include<reg51.h>
#include<absacc.h>
#include<stdio.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int //第一个int 改成uint
uchar STH0;
uchar STL0;
bit FY=0;
uchar Song_Index=0,Tone_Index=0;
uchar k,key;
sbit SPK=P3^7;
sbit LED1=P0^0;
sbit LED2=P0^1;
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
uint code tab[]={0,63628,63835,64021,64103,64260,64400,64254,64580,
64684,64777,64820,64898,64968,65030,65058,65110,
65157,65178,65217,65252,65283};
void delay1(uint ms)
{
uchar t;
while(ms--)
for(t=0;t<120;t++);
}
void delay(void)
{
uchar i; //少了分号
for(i=300;i>0;i--);
}
uchar getkey(void)
{
uchar scancode,tmpcode;
if((P0&0Xf0)==0xf0)
return(0);
scancode=0xfe;
while((scancode&0x10)!=0)
{
P0=scancode;
if((P0&0Xf0)==0xf0)
{
tmpcode=(P0&0xf0)|0x0f;
return((~scancode)+(~tmpcode));
}
else scancode=(scancode<<1)|0x01;
}
}
/*void EX0_INT() interrupt 0
{
FY=0;LED1=1;LED2=0;
}
void EX0_INT() interrupt 0
{
FY=1;LED1=0;LED2=1;
}*/
void time0_int(void) interrupt 1 using 0
{
TH0=STH0;
TL0=STL0;
SPK=!SPK;
P2=DSY_CODE[k]; // 你定义的k是小写,这里k应该为小写
}
void main (void)
{
LED1=1;
LED2=0;
P2=0xc0;
IE=0x87;
TMOD=0x01;
IT0=1;
IT1=1;
while(1)
{
P1=0xf0;
if((P1&0xf0)!=0xf0)
{
delay();
if((P1&0xf0)!=0xf0)
{
key=getkey();
switch(key)
{
case 0x11:k=0;break;
case 0x21:k=1;break;
case 0x41:k=2;break;
case 0x81:k=3;break;
case 0x12:k=4;break;
case 0x22:k=5;break;
case 0x42:k=6;break;
case 0x82:k=7;break;
case 0x14:k=8;break;
case 0x24:k=9;break;
case 0x44:k=10;break;
case 0x84:k=11;break;
case 0x18:k=12;break;
case 0x28:k=13;break;
case 0x48:k=14;break;
case 0x88:k=15;break;
default:break;
}
if(FY==0)
{
STH0=tab[k]/256; //注意0和O不要写错了
STL0=tab[k]%256;
TR0=1;
while((P1&0xf0)!=0xf0);
TR0=0;
}
else
{
while(FY==1)
{
if(Song[k][Tone_Index]==-1) // Song数组没有定义
Tone_Index=0;
STH0=(tab[Song[k][Tone_Index]])/256; //注意0和O不要写错了
STL0=(tab[Song[k][Tone_Index]])%256; //注意0和O不要写错了
P2=DSY_CODE[Song[k][Tone_Index]];
TR0=1;
delay1(300*Len[k][Tone_Index]); //Len没有定义
Tone_Index++;
TR0=0; //注意0和O不要写错了
}
}
}
}
}
}


key0518 2011-07-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bjtea 的回复:]
看是不是:
第6行,你将uint写成int, 使得uint没有定义了; 第17行,你正好使用了uint。
[/Quote]

试过了 还是没有用 第六行和第七行都分别改了下 错误提示还是一样。。。真是纳闷。。。
bjtea 2011-07-15
  • 打赏
  • 举报
回复
看是不是:
第6行,你将uint写成int, 使得uint没有定义了; 第17行,你正好使用了uint。
key0518 2011-07-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xmxqiyan 的回复:]
#include<reg51.h>
#include<absacc.h>
#include<stdio.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int //第一个int 改成uint
uchar STH0;
uchar STL0;
bit FY=0;
uchar Song_Inde……
[/Quote]


哎。。还是编译不过。。。

27,377

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧