单片机c语言: error C129: missing ';' before 'rom_sed'怎么修改错误?

高手哪位知道,单片机c语言: error C129: missing ';' before 'rom_sed'怎么修改错误??

#include<reg51.h>
#include<intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int

#define AddWr 0xa0
#define AddRd 0xa1
sbit Sda=P1^3;
sbit Scl=P1^4;
sbit WP=P1^5;
sbit TSOR=P1^0;

#define addWr 0xa2
#define addRd 0xa3
sbit sda=P1^1;
sbit scl=P1^2;

idata byte rom_sed[9];
idata byte rom_rec[7];
rom_sed[0]=0x00;
rom_sed[1]=0x00;
rom_sed[2]=0x00;
rom_sed[3]=0x55;
rom_sed[4]=0x23;
rom_sed[5]=0x31;
rom_sed[6]=0x06;
rom_sed[7]=0x92;
rom_sed[8]=0x99;

sbit FUZAI=P1^6;
sbit BELL=P1^7;
sbit RS=P2^7;
sbit RW=P2^1;
sbit EN=P2^5;
sbit S0=P3^0;
sbit S1=P3^1;
sbit S2=P3^2;
sbit S3=P3^3;
sbit S4=P3^4;
sbit S5=P3^5;
/*------------------全局变量------------------*/
static unsigned char max temp1,maxtemp2;
static unsigned char min temp1,mintemp2;
static unsigned char hour,min;
static unsigned char hourset str1[];
static unsigned char minset str2[];
static unsigned char countset;
static char line0[]="00:00";
static char line1[]=".C";
/*--------------------------------------------*/
void KeyboardDelay();
/*---------------LCD驱动电路------------------*/
void DelayL();
void DelayS();
void WriteCommand(unsigned char c);
void WriteData(unsigned char c);
void ShowChar(unsigned char pos,unsigned char c);
void ShowString(unsigned char line,char *ptr);
void InitLcd();
/*---------------时钟函数--------------------*/
void PCF8563WriteRead()
/*-----------温度传感器DS18B20驱动-----------*/
void Delay15();
void Delay60();
void Delay100ms();
void Write0TS();
void Write1TS();
bit ReadTS();
Void ResetTS();
void WriteByteTS(unsigned char byte);
unsigned char ReadByteTS();
void InitTS();
void GetTmepTS();
/*------------------------------------------*/
void KeyboardDelay();
/*-------------LCD驱动电路------------------*/
void DelayL();
void DelayS();
void WriteCommand(unsigned char c);
void WriteData(unsigned char c);
void ShowChar(unsigned char pos,unsigned char c);
void ShowString(unsigned char line,char *ptr);
void InitLcd();
/*----------------------主程序--------------*/
void main (void)
{
char code str1[]=" Hello World!";
char code str2[]=" 2005-5-20";
unsigned char i;
countset=0;
SP=0x50;
TSOR=1;
DelayL();
InitLcd();
DelayL();
ShowString(0,str1);
ShowString(1,str2);
for(i=0;i<15;i++)
Delay100ms();
InitInterupt();
Hoursetstr1[0]=00;
Minsetstr2[0]=00;
min=rom-rec[0];
Hour=rom-rec[1];
BELL=0;
FUZAI=0;
count=0;
P1=0xFF;
InitTS();
While(1)
{
GetTempTS();
line1[0]=0x20;
i=temp1;
if(I<max temp1&&i>min temp1)
FUZAI=1;
ine1[1]=i/10+0x30;
line1[2]=i%10+0x30;
line1[4]=temp2+0x3;

ShowString(1,line1);
line0[5]=hour/10+0x30;
line0[6]=hour%10+0x30;
line0[8]=min/10+0x30;
line0[9]=min%10+0x30;
ShowString(0,line0);
Delay100ms();
}
}
最新回答
大大滴狡猾

2024-09-27 03:05:14

你从哪里抄的代码,有写地方没加“;”和“,”,void 你写成Viod; while你写成While,有些变量没定义。
总之错误很多。你自己要分析··
#include<reg51.h>
#include<intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define uint unsigned int

#define AddWr 0xa0
#define AddRd 0xa1
sbit Sda=P1^3;
sbit Scl=P1^4;
sbit WP=P1^5;
sbit TSOR=P1^0;

#define addWr 0xa2
#define addRd 0xa3
sbit sda=P1^1;
sbit scl=P1^2;

unsigned char rom_sed[9];
unsigned char rom_rec[7];

sbit FUZAI=P1^6;
sbit BELL=P1^7;
sbit RS=P2^7;
sbit RW=P2^1;
sbit EN=P2^5;
sbit S0=P3^0;
sbit S1=P3^1;
sbit S2=P3^2;
sbit S3=P3^3;
sbit S4=P3^4;
sbit S5=P3^5;
/*------------------全局变量------------------*/
static unsigned char max,temp1,maxtemp2;
static unsigned char min,temp1,mintemp2;
static unsigned char hour,min;
static unsigned char hourset;
static unsigned char minset;
static unsigned char countset;
static char line0[]="00:00";
static char line1[]=".C";
/*--------------------------------------------*/
void KeyboardDelay();
/*---------------LCD驱动电路------------------*/
void DelayL();
void DelayS();
void WriteCommand(unsigned char c);
void WriteData(unsigned char c);
void ShowChar(unsigned char pos,unsigned char c);
void ShowString(unsigned char line,char *ptr);
void InitLcd();
/*---------------时钟函数--------------------*/
void PCF8563WriteRead() ;
/*-----------温度传感器DS18B20驱动-----------*/
void Delay15();
void Delay60();
void Delay100ms();
void Write0TS();
void Write1TS();
bit ReadTS();
void ResetTS();
void WriteByteTS(unsigned char byte);
unsigned char ReadByteTS();
void InitTS();
void GetTmepTS();
/*------------------------------------------*/
void KeyboardDelay();
/*-------------LCD驱动电路------------------*/
void DelayL();
void DelayS();
void WriteCommand(unsigned char c);
void WriteData(unsigned char c);
void ShowChar(unsigned char pos,unsigned char c);
void ShowString(unsigned char line,char *ptr);
void InitLcd();
/*----------------------主程序--------------*/
void main (void)
{
char code str1[]=" Hello World!";
char code str2[]=" 2005-5-20";
unsigned char i;
countset=0;
SP=0x50;
TSOR=1;
DelayL();
InitLcd();
DelayL();
ShowString(0,str1);
ShowString(1,str2);
for(i=0;i<15;i++)
Delay100ms();

BELL=0;
FUZAI=0;

P1=0xFF;
InitTS();
while(1)
{
line1[0]=0x20;
i=temp1;
FUZAI=1;

line1[2]=i%10+0x30;

ShowString(1,line1);
line0[5]=hour/10+0x30;
line0[6]=hour%10+0x30;
line0[8]=min/10+0x30;
line0[9]=min%10+0x30;
ShowString(0,line0);
Delay100ms();
}
}
追问
那两个就是大写和小写没注意,我需要的是分号的错误在哪里,哪少了分号?
宛若晴空

2024-09-27 01:03:00

你的代码错误很多。
你指出的那个错误是下边的这个原因照成的:
rom_sed[0]=0x00;
rom_sed[1]=0x00;
rom_sed[2]=0x00;
rom_sed[3]=0x55;
rom_sed[4]=0x23;
rom_sed[5]=0x31;
rom_sed[6]=0x06;
rom_sed[7]=0x92;
rom_sed[8]=0x99;
这个赋值是不对的,必须在一个函数里才能赋值。
static unsigned char hourset str1[];
static unsigned char minset str2[];
这两个数组的长度没有,这样是错误的。
还有很多函数都没有定义,只有声明。
追问
不会吧。错误有那样多吗?我从《单片机中级教程--原理与应用》(第二版)张俊谟 ,里看的程序!可以帮忙改好吗,在急用~~~
追答
你把完整的程序贴出来,我帮你改改。
追问
上面那些就是全部的程序了
追答
那我给你说说大概都有哪些错误。
1、很多函数只有声明没有函数定义。
原因:有可能是一些头文件没有添加,还有可能是书上其他部分有给出这些函数,但是你没有找到。
解决方案:找到相应的头文件或者函数,添加进来,如果没有则需要自己编写代码(从网上搜索也可以,但要注意根据你的需要修改一些东西)。
注:推荐自己编写代码(这样进步比较快,也比较有成就感);
2、使用了未定义的变量;(temp1,temp2.)
解决方法:按照你的需求定义这两个变量。
3、rom_sed[]数组的赋值;
解决方案:3.1、定义的时候初始化, idata byte rom_sed[9]= {0x00,0x00,0x00,0x55,0x23,0x31,0x06,0x92,0x99};
3.2、在你的初始化函数或者另外编写另一个函数对数组初始化:
void intiRom(void)
{rom_sed[0]=0x00;
rom_sed[1]=0x00;
rom_sed[2]=0x00;
rom_sed[3]=0x55;
rom_sed[4]=0x23;
rom_sed[5]=0x31;
rom_sed[6]=0x06;
rom_sed[7]=0x92;
rom_sed[8]=0x99;
}
注:推荐使用第一种(比较方便);
4、你的程序中有很多地方不分大小写(有可能是打错了),但这是个很坏的习惯,要尽量避免。
解决方案:找到错误的地方,改正之。