51单片机C语言程序编译错误

#include<reg52.h>

sbit DUAN=P2^6;
sbit WEI=P2^7;
sbit L1=P0^0;
void delay(unsigned int z)

void main()

{
DUAN=0;
WEI=0;

while(1)
{
L1=0;
delay(200);
L1=1;
delay(200);
}
}

void delay(unsigned int z)
{ unsigned int x,y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
错误一大堆,包括
SHANSHUO.C(10): error C132: 'main': not in formal parameter list
SHANSHUO.C(10): error C141: syntax error near '{'
SHANSHUO.C(11): error C136: 'DUAN': 'void' on variable
SHANSHUO.C(11): error C244: 'DUAN': can't initialize, bad type or class
SHANSHUO.C(11): error C136: 'DUAN': 'void' on variable
SHANSHUO.C(11): error C132: 'DUAN': not in formal parameter list
SHANSHUO.C(12): error C244: 'WEI': can't initialize, bad type or class
SHANSHUO.C(12): error C132: 'WEI': not in formal parameter list
SHANSHUO.C(14): error C141: syntax error near 'while'
SHANSHUO.C(14): error C141: syntax error near '1'
SHANSHUO.C(16): error C231: 'L1': redefinition
SHANSHUO.C(16): error C231: 'L1': redefinition
SHANSHUO.C(17): error C141: syntax error near '200'
SHANSHUO.C(18): error C279: 'L1': multiple initialization
SHANSHUO.C(18): error C231: 'L1': redefinition
SHANSHUO.C(18): error C231: 'L1': redefinition
SHANSHUO.C(19): error C141: syntax error near '200'
SHANSHUO.C(20): error C141: syntax error near '}'
SHANSHUO.C(24): error C231: '_delay': redefinition
shanshuo.c - 19 Error(s), 0 Warning(s).
请问是该怎么改

第1个回答  2014-04-15
#include<reg52.h>
sbit DUAN=P2^6;
sbit WEI=P2^7;
sbit L1=P0^0;
void delay(unsigned int z); //这里少一个分号
void main()

{
DUAN=0;
WEI=0;
while(1)
{
L1=0;
delay(200);
L1=1;
delay(200);
}
}
void delay(unsigned int z)
{ unsigned int x,y;
for(x=z;x>0;x--)
for(y=200;y>0;y--);
}
第2个回答  2014-04-15
void delay(unsigned int z);
你这句话结尾少了一个分号
第3个回答  2014-04-15
void delay(unsigned int z)少了分号本回答被提问者采纳

sbit去掉后为什么编译错误(51单片机c语言)
P1^0中 ^ 就是一个运算符了,代表着把取P1的最低位。这个^是C51里面定义的运算符。所以你这句在赋值前还有运算,当然编译不通过了。类比就是:i = i + j; 这个是合法的;i + j = i; 这个就是不合法的了;

C语言单片机程序 初学大家帮忙看看错在哪里了 #include <reg51.h...
程序百分百没问题,可能是编译的有问题,你 用的是keil编译的吗? 建议你多重新编译一下, 也有可能是你烧写程序的时候 数据传输的过程中出错了,校验出错 一般是传输过程中某个或者某些bit或者byte出错 建议你重新编译 重新下载烧写试试, 单片机这东西就是经常出些小问题,有时候我们买的开发板或者有...

51单片机编译出现redefine
程序执行c语言是从main函数开始执行的,P0=0X01;是一个执行语句,不是定义变量、申明什么的,你放在外面八辈子都执行不到,所以编译器就会认为这是不科学的,嘿嘿,所以不能正确编译通过。

51单片机C语言编程错误问题,有图
unit x,y这行少个分号,改成 unit x,y;

单片机编程时为什么总出现syntax error
我认为,单片机中的c语言和纯c还是有点差别的,有时你用的c语句或函数,在51中有可能不识别,就会产生这种错误的。个人拙见,仅供参考

单片机c语言编译出现C(2): error C100: unprintable character 0xA1 ski...
用了很多中文符号。都弄好了。#include<reg51.h>unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsigned char int_time;unsigned char second ;unsigned char minute;unsigned char hour;sbit S1=P1^4 ;sbit S2=P1^5 ;sbit S3=P1^6;sbit S4=P1^7...

C语言 初学者 51单片机 将程序第五行的 #define led P2 替换成sbit led...
首先,sbit led= P2,这个写法是错误的,虽然编译时不报错,但编译后执行程序时却是错误的。sbit 是定义一个引脚的,注意,只是定义一个引脚,而 P2是一个并行口,有8个引脚,是不能sbit 来定义,可以用 sfr 定义。define 并不是定义引脚的,也不是定义并行口,只是一个宏替换,就是程序中的led ...

我在keil软件 用c语言写51单片机的时候发现?
其实,C语音的变量并不直接定义到寄存器,而是定义到内存单元,寄存器算是个中介,数据从内存取出临时存放到寄存器,然后将当时用不上的数据又从寄存器回写到内存,这样就解决了寄存器共享问题了;另外,你在调试时,再打开个反汇编窗口,跟踪C语音程序的汇编代码,就更清楚了;...

51单片机,c语言,怎么老是'-delayxs':redefinition
你程序的主要错误见注释行,但愿对你有帮助。#include<reg52.h> define uchar unsigned char define uint unsigned int uchar code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}\/\/这里缺少了个分号 void delayxs(uint xs);sbit ...

单片机C语言编程与汇编混合编程时出现的问题
D2:MOV R4,#229 DJNZ R4,DJNZ R3,D2 DJNZ R2,D1 pragma endasm 的意思是这段程序向SRC文件编译时保持源代码不变 也就把这段汇编加进SRC汇编文件中。但C文件要生成HEX文件时是通过OBJ文件进行的,所以直接编译是肯定出错的 正确的方法是生成SRC文件后 打开直接对SRC文件编译来生成HEX文件 ...

相似回答
大家正在搜