不知道,顶一下,盼望高手出现。
#include<reg51.h>
#include<absacc.h>
sbit XIAOSHI_0=P3^0;
sbit XIAOSHI_1=P3^1;
sbit FEN_0=P3^2;
sbit FEN_1=P3^3;
sbit setd=P3^4;
sbit movd=P3^5;
void XIANSHI();
void TJ_FEN();
void TJ_XIAOSHI();
void main(void)
{
unsigned char i;
i=0;
SP=0x70[s:9]1=0xff[s:9]3=0xff;
DBYTE[0x6f]=0;DBYTE[0x6e]=0;
DBYTE[0x6d]=0;DBYTE[0x6C]=0;
TH0=0x3c;TL0=0xaf;
ET0=1;EA=1;TR0=1;
while(1)
{
while(setd==0)
{
i++;TR0=0; while(setd==0);
}
XIANSHI()
if (i=1)
TJ_XIANSHI();
else if (i=2)
TJ_FEN();
}
}
void timer0() interrupt 1
{
unsigned char j,w;
j++;
while(j==20)
{
j=0;
DBYTE[0x6f]++;
if (DBYTE[0x6f]==10)
{DBYTE[0x6f]=0;DBYTE[0x6e]++;}
else if (DBYTE[0x6e]==6)
{DBYTE[0x6e]=0;DBYTE[0x6d]++;while((DBYTE[0x6c]*10+DBYTE[0x6d])>=24){DBYTE[0x6c]=0;DBYTE[0x6d]=0;}
else if (DBYTE[0x6d]==10)
{DBYTE[0x6d]=0;DBYTE[0x6c]++;}
TH0=0x3c;TL0=0xaf;
}
}
void XIANSHI()
{
unsigned char p;
p=DBYTE[0x6c];
XIAOSHI_0=0;
P1=SHUZI[p];
XIAOSHI_0=1;
p=DBYTE[0x6d];
XIAOSHI_1=0;
P1=SHUZI[p]
XIAOSHI_1=1;
p=DBYTE[0x6e];
FEN_0=0;
P1=SHUZI[p];
FEN_0=1;
p=DBYTE[0x6f];
FEN_1=0;
P1=SHUZI[p];
FEN_1=1;
}
unsigned char code SHUZI[10]={0x05,0xdd,0x46,0x54,0x9c,0x34,0x24,0x5d,0x04,0x14}
void TJ_FEN()
{}
void TJ_XIAOSHI()
{}
问题我在第一个if处出错,我现在可找不出错在哪!
你的问题具体是什么?
还有这里
XIANSHI() 〈----- 这里是不是忘了一个分号
if (i=1)
TJ_XIANSHI();
else if (i=2)
谁给你说的不用分号啊?
你把分号加上就可以了哈,你得好好多练练
原:
if (i=1)
TJ_XIANSHI();
else if (i=2)
TJ_FEN();
}
更改为:
if (i==1)
TJ_XIANSHI();
else if (i==2)
TJ_FEN();
}
原:
if (i=1)
TJ_XIANSHI();
else if (i=2)
TJ_FEN();
}
更改为:
if (1==i)
TJ_XIANSHI();
else if (2==i)
TJ_FEN();
}
这样如果只写一个“=”,编译器认为你给常量赋值,肯定通不过编译。
在判断语句都可以这样写,可以让编译器为你查错。
第28行少了;
:),这种错误最低级,建议写代码时小心;免得遭罪!
i++;TR0=0; while(setd==0); //这个分号是多的吧?
}
XIANSHI() //这个分号少了吧?
if (i=1) //这个显然错了,有时我们也这么写,但绝不会拿常量赋给变量,因为一点意义都没有,用变量赋变量的时候倒有
TJ_XIANSHI();
else if (i=2) //这个显然也是错的
TJ_FEN();
}
总的来说,编程习惯太差,还要多学一些提高编程风格的知识——无论做软件还是硬件,有一个整洁、有条理的环境,对提高工作效率、减少错误都是有帮助的。
200字以内,仅用于支线交流,主线讨论请采用回复功能。