这个单片机程序老是无法编译,求大神帮助!特别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--);
展开
 我来答
七彩镜
推荐于2016-09-18 · TA获得超过1127个赞
知道小有建树答主
回答量:273
采纳率:0%
帮助的人:210万
展开全部

有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这几个按键
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式