不知道是哪里出错了(没有C语言基础)

问题描述:

#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;
sbit s1=P3^1;
sbit s2=P3^3;
sbit s3=P3^4;
sbit led1=P2^0;
sbit led2=P2^1;

void delay(u16 i)
{
while(i--);
}

void keypros()
{
if(s1==1)
{
delay(1000);
if(s1==0)
{
led1=led1;
}
while(!s1);
}
if(s2==1)
{
delay(1000);
if(s2==0)
{
led2=
led2;
}
while(!s2);
}
if(s3==0)
{
delay(1000);
if(s3==1)
{
led1=led1;
led2=
led2;
}
while(!s3);
}
}
{
led=1;
while(1)
{
keypros();
}
}
以下是报错内容
Build target 'Target 1'
compiling main.c...
main.c(49): error C141: syntax error near '{'
main.c(51): error C141: syntax error near 'while'
main.c(51): error C141: syntax error near '1'
main.c(53): error C231: 'keypros': redefinition
main.c(54): error C141: syntax error near '}'
Target not created.
Build Time Elapsed: 00:00:00
是在Keil5编译的

你抄代码是不是把main忘抄了:

#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;
sbit s1 = P3 ^ 1;
sbit s2 = P3 ^ 3;
sbit s3 = P3 ^ 4;
sbit led1 = P2 ^ 0;
sbit led2 = P2 ^ 1;

void delay(u16 i)
{
    while (i--)
        ;
}

void keypros()
{
    if (s1 == 1)
    {
        delay(1000);
        if (s1 == 0)
        {
            led1 = led1;
        }
        while (!s1)
            ;
    }
    if (s2 == 1)
    {
        delay(1000);
        if (s2 == 0)
        {
            led2 = led2;
        }
        while (!s2)
            ;
    }
    if (s3 == 0)
    {
        delay(1000);
        if (s3 == 1)
        {
            led1 = led1;
            led2 = led2;
        }
        while (!s3)
            ;
    }
}
int main()
{
    led = 1;
    while (1)
    {
        keypros();
    }
}