#include "reg52.h"
#include "intrins.h"
#define k1_press 1
#define k2_press 2
#define k3_press 3
#define k4_press 4
#define key_unpress 0
#define LED P2
sbit k1 = P3^1;
sbit k2 = P3^0;
sbit k3 = P3^2;
sbit k4 = P3^3;
u8 k1 = 1;//MAIN.C(17): error C129: missing ';' before 'k1'
u8 k2 = 1;
u8 k3 = 1;
u8 k4 = 1;
sbit l1 = P2^0;
sbit l2 = P2^1;
sbit l3 = P2^2;
sbit l4 = P2^3;
sbit l5 = P2^4;
sbit l6 = P2^5;
sbit l7 = P2^6;
sbit l8 = P2^7;
typedef unsigned char u8;
typedef unsigned int u16;
u16 ten_us;
void delay_10us(u16 ten_us)
{while(ten_us--);}
u8 key_scanf(u8 mode)
{
static u8 key = 1;
if(mode)key = 1;
if(key = 1&&(k1 = 0| k2 = 0| k3 = 0|k4 = 0))
{
delay_10us(1000);
key = 0;
if(k1 = 0)return k1_press;
if(k2 = 0)return k2_press;
if(k3 = 0)return k3_press;
if(k4 = 0)return k4_press;
}
else if(k1 = 1 && k2 = 1 && k3 = 1 && k4 = 1)
key = 1;
return key_unpress;
}
u8 water led left to right()//´Ó×óÍùÓÒ
{
u8 i = 0;
while(1)
{
for(i = 0;i < 8;i++)
{
LED= ~(0x01<50000);
}
}
}
void water led right to left()//´ÓÓÒÍù×ó
{
u8 i = 0;
while(1)
{
for(i = 0;i<8;i++)
{
LED = ~(0x80>>i);
delay_10us(50000);
}
}
}
void water led return()//˫ȯ
{
u8 i;
LED = ~0x01;
delay_10us(50000);
while(1)
{
for(i=0;i<7;i++)
{
LED = _crol_(LED_PORT,1);
delay_10us(50000);
}
for(i=0;i<7;i++)
{
LED = _cror_(LED_PORT,1);
delay_10us(50000);
}
}
}
void water led mid()//´ÓÖмäÏòÁ½±ß
{
while(1)
{
l4 = 0;
l5 = 0;
delay_10us(50000);
l4 = 1;
l5 = 1;
l3 = 0;
l6 = 0;
delay_10us(50000);
l3 = 1;
l6 = 1;
l2 = 0;
l7 = 0;
delay_10us(50000);
l2 = 1;
l7 = 1;
l1 = 0;
l8 = 0;
delay_10us(50000);
l1 = 1;
l8 = 1;
}
}
void main()
{
switch(u8 key_scanf(0))
{
case(1){water led right to left();break;}
case(2){water led right to left();break;}
case(3){water led return();break;}
case(4){water led mid();break;}
}
}
第一次使用u8的时候,u8这个类型还没有定义,你写到后面去了。
有时候编译器提示的错误并不是你真正的错误,编译器的思维方式和人不太一样。
应该把u8的那几个参数的定义放在typedef后面,如下图所示,仅修改部分代码。
如果放在前面,由于u8这个类型没有被重定义,所以识别到的是未知类型。
#include "reg52.h"
#include "intrins.h"
#define k1_press 1
#define k2_press 2
#define k3_press 3
#define k4_press 4
#define key_unpress 0
#define LED P2
sbit k1 = P3^1;
sbit k2 = P3^0;
sbit k3 = P3^2;
sbit k4 = P3^3;
sbit l1 = P2^0;
sbit l2 = P2^1;
sbit l3 = P2^2;
sbit l4 = P2^3;
sbit l5 = P2^4;
sbit l6 = P2^5;
sbit l7 = P2^6;
sbit l8 = P2^7;
typedef unsigned char u8;
typedef unsigned int u16;
u8 k1 = 1;//MAIN.C(17): error C129: missing ';' before 'k1'
u8 k2 = 1;
u8 k3 = 1;
u8 k4 = 1;
不知道你这个问题是否已经解决, 如果还没有解决的话:CH579M
CH579F