標(biāo)題:
編譯錯誤,拜托各位大神幫幫忙!實在沒辦法了!
[打印本頁]
作者:
Zlagh
時間:
2021-4-28 21:08
標(biāo)題:
編譯錯誤,拜托各位大神幫幫忙!實在沒辦法了!
可以幫忙看看這個程序的錯誤嗎!拜托了,真的找不出了,14個錯誤,謝謝。!
#include<reg52.h>
#define unchar unsigned char
#define unint unsigned int
#define SW1 0x2e
#define SW2 0x2d
#define SW3 0x2b
#define SW4 0x27
#define SW5 0x0f
#define ZHENGZHUAN 0
#define FANZHUAN 1
#define TINGZHI 2
#define JIASU 3
#define JIANSU 4
unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xal,0x84,0xff,0xf7};
unsigned char dispbitcode[]={0x7f,0xbf,0xdf,0xef};
unsigned char dispbuf[4]={0,0,0,0};
unsigned char dispbitcnt;
unint i;
unchar tp=0;
unint count=0;
unint n=0;
unint xs;
unint m;
unchar keyvalue;
sbit p07=P0^7;
sbit p30=P3^0;
sbit p31=P3^1;
sbit p37=P3^7;
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p15=P1^5;
void ledshow();
unsigned char keyscan()
void zhengzhuan();
void fanzhuan();
void tingzhi();
void jiasu();
void jiansu();
void t0(void);
void INT_0(void);
void Timer_1(void);
void main(void);
{
P30=1;
P31=0;
TMOD=0x12;
THO=0x66;
TLO=0x50;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
IT0=1;
EX0=1;
while(1)
{
ledshow();
keyvalue=keyscan();
switch(keyvalue);
{
case ZHENGZHUAN:
zhengzhuan();
break;
case FANZHUAN:
fanzhuan();
break;
case TINGZHI:
tingzhi();
break;
case JIASU:
jiasu();
break;
case JIANSU:
jiansu();
break;
default:break;
}
}
}
void delay()
{
unsigned char i,j;
for (i=1;i<=125;i++)
for (j=1;j<=50;j++)
{}
]
unsigned char keyscan()
{
unchar temp=0;
P1=0xff;
if((P1&0x2f)!=0x2f)
{
delay();
if((P1&0x2f)!=0x2f)
{
temp=P1&0x2f)!
switch (temp)
{
case SW1:
return 0;
break;
case SW2:
return 1;
break;
case SW3:
return 2;
break;
case SW4:
return 3;
break;
case SW5:
return 4;
break;
default:break;
}
}
}
while((P1&0x2f)!=0x2f);
}
void ledshow()
{
P2|0xf0;
P0=dispcode[dispbuf[0]];
P2=0xef;
for(i=0;i<700;i++);
P2|0xf0;
P0=dispcode[dispbuf[1]];
P2=0xdf;
p07=0;
for(i=0;i<700;i++);
P2|0xf0;
P0=dispcode[dispbuf[2]];
P2=0xbf;
for(i=0;i<700;i++);
P2|0xf0;
P0=dispcode[dispbuf[3]];
P2=0x7f;
for(i=0;i<700;i++);
disbuf[3]=xs/1000;
dispuf[2]=(xs%1000)/100;
dispuf[1]=(xs%100)/10;
dispuf[0]=xs%10;
}
void t0(void)interrupt 1 using 0
{
if (count>100)
count=0;
if(count>tp)
P37=0;
else P37=1;
count++;
}
void INT_0(void) interrupt 0
{
EX1=0;
n++;
EX1=1;
}
void Timer_1(void) interrupt 3
{
TH1=0x65;
TL1=0xF3;
m++;
if(m==20)//50*20=1S
{
xs=(n*10)/4;
m=0;
n=0;
}
}
void zhengzhuan()
{
P30=0;
P31=1;
}
void tingzhi()
{
P30=0;
P31=0;
}
void jiasu()
{
if(tp>99)
tp=100;
else tp=tp+2;
}
void jiansu()
tp=0;
else tp=tp-2;
}
作者:
robinsonlin
時間:
2021-4-28 22:34
你這代碼寫得太隨心所欲了吧,用“狂草”來形容,一點(diǎn)不為過哦。
1,#define 和 typedef 是有區(qū)別的。
2,大小寫不區(qū)分。
3,程序格式一線天,數(shù)花括號都要費(fèi)不小的勁咧。
作者:
glinfei
時間:
2021-4-28 22:43
void main(void);
switch(keyvalue);
P2|0xf0;
我就是看看有多長,就看到好幾個問題,順手復(fù)制了三個而已。
作者:
birdzhyli
時間:
2021-4-28 23:24
THO=0x66;
TLO=0x50;
TH0,TL0
這代碼應(yīng)該是老師發(fā)給大家發(fā)錯的吧?
作者:
angmall
時間:
2021-4-29 07:05
錯誤太多:主要是抄寫錯誤,少寫分號,錯用字符號,錯用大小寫等等。
給你改了,對比一下就知道哪里錯了。
#include <reg52.h>
#define unchar unsigned char
#define unint unsigned int
#define SW1 0x2e
#define SW2 0x2d
#define SW3 0x2b
#define SW4 0x27
#define SW5 0x0f
#define ZHENGZHUAN 0
#define FANZHUAN 1
#define TINGZHI 2
#define JIASU 3
#define JIANSU 4
unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xal,0x84,0xff,0xf7};
unsigned char dispbitcode[]={0x7f,0xbf,0xdf,0xef};
unsigned char dispbuf[4]={0,0,0,0};
unsigned char dispbitcnt;
unint i;
unchar tp=0;
unint count=0;
unint n=0;
unint xs;
unint m;
unchar keyvalue;
sbit p07=P0^7;
sbit p30=P3^0;
sbit p31=P3^1;
sbit p37=P3^7;
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p15=P1^5;
void ledshow();
unsigned char keyscan(); //<-------------
void zhengzhuan();
void fanzhuan();
void tingzhi();
void jiasu();
void jiansu();
void t0(void);
void INT_0(void);
void Timer_1(void);
void main(void) //; <-------
{
p30=1; //P30<------
p31=0; //P31<------
TMOD=0x12;
TH0=0x66; //THO<------
TL0=0x50; //TLO<------
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
IT0=1;
EX0=1;
while(1)
{
ledshow();
keyvalue=keyscan();
switch(keyvalue) //;<------
{
case ZHENGZHUAN:
zhengzhuan();
break;
case FANZHUAN:
fanzhuan(); // <------
break;
case TINGZHI:
tingzhi();
break;
case JIASU:
jiasu();
break;
case JIANSU:
jiansu();
break;
default:break;
}
}
}
void delay()
{
unsigned char i,j;
for (i=1;i<=125;i++)
for (j=1;j<=50;j++)
{}
} //]<------
unsigned char keyscan()
{
unchar temp=0;
P1=0xff;
if((P1&0x2f)!=0x2f)
{
delay();
if((P1&0x2f)!=0x2f)
{
temp=P1&0x2f; //)!<------
switch (temp)
{
case SW1:
return 0;
break;
case SW2:
return 1;
break;
case SW3:
return 2;
break;
case SW4:
return 3;
break;
case SW5:
return 4;
break;
default:break;
}
}
}
while((P1&0x2f)!=0x2f);
}
void ledshow()
{
P2|=0xf0; //P2|0xf0; <------
P0=dispcode[dispbuf[0]];
P2=0xef;
for(i=0;i<700;i++);
P2|=0xf0; //P2|0xf0; <------
P0=dispcode[dispbuf[1]];
P2=0xdf;
p07=0;
for(i=0;i<700;i++);
P2|=0xf0; //P2|0xf0; <------
P0=dispcode[dispbuf[2]];
P2=0xbf;
for(i=0;i<700;i++);
P2|=0xf0; //P2|0xf0; <------
P0=dispcode[dispbuf[3]];
P2=0x7f;
for(i=0;i<700;i++);
dispbuf[3]=xs/1000; //disbuf <------
dispbuf[2]=(xs%1000)/100; //dispuf <------
dispbuf[1]=(xs%100)/10; //dispuf <------
dispbuf[0]=xs%10; //dispuf <------
}
void t0(void)interrupt 1 using 0
{
if (count>100)
count=0;
if(count>tp)
p37=0; //P37<------
else p37=1; //P37<------
count++;
}
void INT_0(void) interrupt 0
{
EX1=0;
n++;
EX1=1;
}
void Timer_1(void) interrupt 3
{
TH1=0x65;
TL1=0xF3;
m++;
if(m==20)//50*20=1S
{
xs=(n*10)/4;
m=0;
n=0;
}
}
void zhengzhuan()
{
p30=0; //P30<------
p31=1; //P31<------
}
void tingzhi()
{
p30=0; //P30<------
p31=0; //P31<------
}
void jiasu()
{
if(tp>99)
tp=100;
else tp=tp+2;
}
void jiansu()
{ // 少寫<------
if(tp<0) //少寫 <------
tp=0;
else tp=tp-2;
}
void fanzhuan() //少寫 <------
{
;
}
復(fù)制代碼
作者:
haokey
時間:
2021-4-29 08:20
編譯器有提示錯誤的位置,點(diǎn)進(jìn)去看一下就知道了。
作者:
Zlagh
時間:
2021-4-29 20:40
angmall 發(fā)表于 2021-4-29 07:05
錯誤太多:主要是抄寫錯誤,少寫分號,錯用字符號,錯用大小寫等等。
給你改了,對比一下就知道哪里錯了。 ...
謝謝。。。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1