标题:
求助修改单片机代码错误
[打印本页]
作者:
DarkNISS
时间:
2019-4-3 11:18
标题:
求助修改单片机代码错误
用的是keil 5,芯片是AT89C52
#include<reg51.h>#define uchar unsigned char#define uint unsegned intsbit g=P2^1;sbit s=P2^0;bit button,flag;uchar shi,ge,temp,t0;uchar code table[]={0x3f,0x6f,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}void display(shi,ge)void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}uchar switchscan(){ temp=P1; if(temo==0xfe) { delay(5) temo=P1; if(temo==0xfe) { button=~button; if(button) TR0=1; else TR0=0;t0=0; flag=0; shi=o; ge=0; } } while (temp==0xfe) { temp=P1; desplay(shi,ge); } return button;}void keyscan(){ temp=P1; if(temp==0xfd||temp==0xfb||temp==0xf7) {delay(5);temp=P1;if (temp==0xfd||temp==0xfb||temp==0xf7) switch(temp) { case 0xfd: { TR0=~TR0; } break; case 0xfb: { TR0=0; t0=0; shi=0; ge=0; } break; case 0xf7:{flag=~flag;} break; } }}while(gemp==0xfd||temp==0xfb||temp==0xf7) { temp=P1; display(shi,ge); }}Void display(shi,ge){ P0=table[shi]; s=o; P0=table[shi];delay(1);s=1;P0=table[ge];g=o;P0=table[ge];delay(1);g=1;}void count(){ t0=0; ge++; if(ge==10){ge=0;shi++;} if(shi==10) shi=0;}main(){shi=0;ge=0;button=0;TM0D=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=0;while(1){display(shi,ge);switchscan();{while(button){display(shi,ge);switchscan();if(button)keyscan();}while(!button){TR0=0;display(shi,ge);switchscan();}}} }void timer0() interrut 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;t0++;if(flag){if(t0>=2)count();}if(!flag){if(t0>=20)count();}}
作者:
DarkNISS
时间:
2019-4-3 11:20
本帖最后由 DarkNISS 于 2019-4-3 11:26 编辑
新手小白,请求大神帮忙看看代码错误。
作者:
robinsonlin
时间:
2019-4-3 12:42
你不知道先贴在记事本里面,然后再拷贝粘贴过来么?
作者:
飞机翻筋斗
时间:
2019-4-3 12:55
求求你好好排下版,再发出来好吧,你这样太乱了
作者:
new_hand
时间:
2019-4-3 13:11
问题也不说,报错也不贴,版也不排.....
作者:
liuzx66
时间:
2019-4-3 13:42
看的我是眼花缭乱,不知所踪。
作者:
lrkeji1982
时间:
2019-4-3 14:36
看着代码,有一种晕车的感觉
作者:
wulin
时间:
2019-4-3 17:34
DarkNISS 发表于 2019-4-3 11:20
新手小白,请求大神帮忙看看代码错误。
错误不是一点点,是错得离谱,好像是东拼西凑抄的来,并且抄都没有抄好。 而且楼主根本没有说明程序功能,神仙也难办。
作者:
angmall
时间:
2019-4-3 20:33
给你改了,对比一下就知道哪里错了。
//用的是keil 5,芯片是AT89C52
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit g=P2^1;
sbit s=P2^0;
bit button, flag;
uchar shi, ge, temp, t0;
uchar code table[]={0x3f,0x6f,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void display(uchar shi, uchar ge);
void delay(uint z)
{
uint x, y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
uchar switchscan()
{
temp=P1;
if(temp==0xfe)
{
delay(5);
temp=P1;
if(temp==0xfe)
{
button=~button;
if(button)
TR0=1;
else
TR0=0;
t0=0;
flag=0;
shi=0; //o;
ge=0;
}
}
while (temp==0xfe)
{
temp=P1;
display(shi, ge);
}
return button;
}
void keyscan()
{
temp=P1;
if(temp==0xfd||temp==0xfb||temp==0xf7)
{
delay(5);
temp=P1;
if (temp==0xfd||temp==0xfb||temp==0xf7)
switch(temp)
{
case 0xfd:
{
TR0=~TR0;
}
break;
case 0xfb:
{
TR0=0;
t0=0;
shi=0;
ge=0;
}
break;
case 0xf7:
{
flag=~flag;
}
break;
}
}
//}
while(temp==0xfd||temp==0xfb||temp==0xf7)
{
temp=P1;
display(shi, ge);
}
}
void display(uchar shi, uchar ge)
{
P0=table[shi];
s=0; //o;
P0=table[shi];
delay(1);
s=1;
P0=table[ge];
g=0; //o;
P0=table[ge];
delay(1);
g=1;
}
void count()
{
t0=0;
ge++;
if(ge==10)
{
ge=0;
shi++;
}
if(shi==10)
shi=0;
}
main()
{
shi=0;
ge=0;
button=0;
TMOD=0x01; //TM0D=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1; //允许总中断
ET0=1; //允许定时器0中断 ET0=0;
while(1)
{
display(shi, ge);
switchscan();
{
while(button)
{
display(shi,ge);
switchscan();
if(button)
keyscan();
}
while(!button)
{
TR0=0;
display(shi,ge);
switchscan();
}
}
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t0++;
if(flag)
{
if(t0>=2) count();
}
if(!flag)
{
if(t0>=20) count();
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1