这个单片机程序老是无法编译,求大神帮助!特别if(s3==0)老提示有错,小弟先谢过了!
#include<reg51.h>#definegledP0voidbianhuan3();voiddelay10ms();sbitk1=P2^2;sbitk2=P2^3...
#include<reg51.h>
#define gled P0
void bianhuan3();
void delay10ms();
sbit k1=P2^2;
sbit k2=P2^3;
sbit k3=P2^4;
sbit s1=P3^1;
sbit s2=P3^0;
sbit s3=P3^2;
sbit s4=P3^3;
unsigned int a,j;
unsigned char code shuzu[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char suzu;
void main()
{
k1=k2=k3=0;
a=0;
while(1)
{
bianhuan3();
switch(j)
{
case(0):
suzu=shuzu[0];a=0;break;
case(1):
suzu=shuzu[9];a=9;break;
case(2):
a--;suzu=shuzu[a];break;
case(3):
a++;suzu=shuzu[a];break;
}
gled=suzu;
}}
void bianhuan3()
{unsigned int i;
if(s3==0)
{
delay10ms();
if(s3==0)
{
j=3;}
while((i<50)&&(s3==0))
{Delay10ms();
i++;}
i=0; }
if(s4==0)
{Delay10ms();
if(s4==0)
{j=4;}
while((i<50)&&(s4==0))
{
Delay10ms();
i++;
}
i=0;
}
}
if(s1==0)
{Delay10ms();
if(s1==0)
{j=0;}
while((i<50)&&(s1==0))
{
Delay10ms();
i++;
}
i=0;}
if(s2==0)
{Delay10ms();
if(s2==0)
j=1;}
while((i<50)&&(s2==0))
{
Delay10ms();
i++;
}
i=0;
void Delay10ms() //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--); 展开
#define gled P0
void bianhuan3();
void delay10ms();
sbit k1=P2^2;
sbit k2=P2^3;
sbit k3=P2^4;
sbit s1=P3^1;
sbit s2=P3^0;
sbit s3=P3^2;
sbit s4=P3^3;
unsigned int a,j;
unsigned char code shuzu[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char suzu;
void main()
{
k1=k2=k3=0;
a=0;
while(1)
{
bianhuan3();
switch(j)
{
case(0):
suzu=shuzu[0];a=0;break;
case(1):
suzu=shuzu[9];a=9;break;
case(2):
a--;suzu=shuzu[a];break;
case(3):
a++;suzu=shuzu[a];break;
}
gled=suzu;
}}
void bianhuan3()
{unsigned int i;
if(s3==0)
{
delay10ms();
if(s3==0)
{
j=3;}
while((i<50)&&(s3==0))
{Delay10ms();
i++;}
i=0; }
if(s4==0)
{Delay10ms();
if(s4==0)
{j=4;}
while((i<50)&&(s4==0))
{
Delay10ms();
i++;
}
i=0;
}
}
if(s1==0)
{Delay10ms();
if(s1==0)
{j=0;}
while((i<50)&&(s1==0))
{
Delay10ms();
i++;
}
i=0;}
if(s2==0)
{Delay10ms();
if(s2==0)
j=1;}
while((i<50)&&(s2==0))
{
Delay10ms();
i++;
}
i=0;
void Delay10ms() //误差 0us
{
unsigned char a,b,c;
for(c=1;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--); 展开
1个回答
展开全部
有2处错误:
1。c语言区分大小写的,你的函数声明void delay10ms();中delay10ms是小写,而函数定义却是void Delay10ms() ,Delay10ms第一个字母变大写了。而你在
if(s3==0)
{
delay10ms();
调用又用了第一个字母小写的delay10ms(); 其它地方用的是大写的Delay10ms。
2。你的函数void bianhuan3()在第一个if(s1==0)前多了一个大反括号 } ,而最后的Delay10ms()又少了大反括号 } 。
以后源代码最好发文件上来,贴出来的代码复制后格式完全丧失,所有文件变成一行代码。我这里上传整理后的文件给你,文件是test.C。
更多追问追答
追问
为什么我的这个程序不能达到使用k3k4分别控制数字加一减一的操作呢,我用是52单片机开发板,shuzu这个数组是0123456789的显示码
哦,是s1s2s3s4这几个按键
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询