有没有大神帮忙看下这个程序,这个不能实现加法。怎么修改让他能够实现加法啊。
#include<reg52.h>
char shu,k;
char biaozhi1,num1,num2,num3;
int values;
unsigned char code jianzhi[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
unsigned char code shumaguan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
void delay_ms(int haomiao)
{
char i;
while(haomiao--)
{
for(i=113;i>0;i--)
{
}
}
}
int anjianjiance()
{
int anjianzhi1,anjianzhi2,anjianzhi3;
P1=0xf0;
delay_ms(20);
anjianzhi1=P1;
P1=0x0f;
delay_ms(20);
anjianzhi2=P1;
anjianzhi3=anjianzhi1|anjianzhi2;
return anjianzhi3;
}
void xianshi(long shu)
{
char qwan,bwan,swan,wan,qian,bai,shi,ge;
qwan=shu/10000000;
bwan=shu/1000000%10;
swan=shu%1000000/100000;
wan=shu/100000%10;
qian=shu/1000%10;
bai=shu/100%10;
shi=shu/10%10;
ge=shu%10;
P2=0xfe;
P0=shumaguan[qwan];
delay_ms(2);
P2=0xfd;
P0=shumaguan[bwan];
delay_ms(2);
P2=0xfb;
P0=shumaguan[swan];
delay_ms(2);
P2=0xf7;
P0=shumaguan[wan];
delay_ms(2);
P2=0xef;
P0=shumaguan[qian];
delay_ms(2);
P2=0xdf;
P0=shumaguan[bai];
delay_ms(2);
P2=0xbf;
P0=shumaguan[shi];
delay_ms(2);
P2=0x7f;
P0=shumaguan[ge];
delay_ms(2);
}
void fuzhi(int m)
{
biaozhi1++;
xianshi(m);
while(P1==values)
{
xianshi(m);
}
if(biaozhi1==1)
{
num1=m;
}
if(biaozhi1==2)
{
num1=num1*10+m;
}
}
void main()
{
char i;
unsigned biaozhi;
while(1)
{
xianshi(num1);
values=anjianjiance();
switch(values)
{
case(0xee): fuzhi(1);break;//1
case(0xde):fuzhi(2);break;//2
case(0xbe): fuzhi(3);break;//3
case(0x7e):k=10;break;//+
case(0xed): fuzhi(4);break;//4
case(0xdd):fuzhi(5);break;//5
case(0xbd): fuzhi(6);break;//6
case(0x7d):k=11;break;//-
case(0xeb): fuzhi(7);break;//7
case(0xdb):fuzhi(8);break;//8
case(0xbb): fuzhi(9);break;//9
case(0x7b):k=12;break;//*
case(0xe7): fuzhi(0);break;//0
case(0xd7):fuzhi(0);break;//0
case(0xb7): k=14;break;//=
case(0x77):k=13;break; // /
}
/*
if(k<=9)
{
if(biaozhi1==1)
{
num1=k;
}
if(biaozhi1==2)
{
num1=num1*10+k;
}
while(P1==values);
xianshi(num1);
biaozhi1++;
} */
if(k==10)
{
num2=num1;
num1=0;
biaozhi=1;
biaozhi1=0;
}
if(k==11)
{
num2=num1;
xianshi(0);
biaozhi=2;
}
if(k==12)
{
num2=num1;
xianshi(0);
biaozhi=3;
}
if(k==13)
{
num2=num1;
xianshi(0);
biaozhi=4;
}
if(k==14)
{
if(biaozhi==1)
{
num3=num1+num2;
}
if(biaozhi==2)
{
num3=num2-num1;
}
if(biaozhi==3)
{
num3=num1*num2;
}
if(biaozhi==4)
{
num3=num2/num1;
}
xianshi(num3);
}
}
}
#include<reg52.h>
char shu,k;
char biaozhi1,num1,num2,num3;
int values;
unsigned char code jianzhi[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
unsigned char code shumaguan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff};
void delay_ms(int haomiao)
{
char i;
while(haomiao--)
{
for(i=113;i>0;i--)
{
}
}
}
int anjianjiance()
{
int anjianzhi1,anjianzhi2,anjianzhi3;
P1=0xf0;
delay_ms(20);
anjianzhi1=P1;
P1=0x0f;
delay_ms(20);
anjianzhi2=P1;
anjianzhi3=anjianzhi1|anjianzhi2;
return anjianzhi3;
}
void xianshi(long shu)
{
char qwan,bwan,swan,wan,qian,bai,shi,ge;
qwan=shu/10000000;
bwan=shu/1000000%10;
swan=shu%1000000/100000;
wan=shu/100000%10;
qian=shu/1000%10;
bai=shu/100%10;
shi=shu/10%10;
ge=shu%10;
P2=0xfe;
P0=shumaguan[qwan];
delay_ms(2);
P2=0xfd;
P0=shumaguan[bwan];
delay_ms(2);
P2=0xfb;
P0=shumaguan[swan];
delay_ms(2);
P2=0xf7;
P0=shumaguan[wan];
delay_ms(2);
P2=0xef;
P0=shumaguan[qian];
delay_ms(2);
P2=0xdf;
P0=shumaguan[bai];
delay_ms(2);
P2=0xbf;
P0=shumaguan[shi];
delay_ms(2);
P2=0x7f;
P0=shumaguan[ge];
delay_ms(2);
}
void fuzhi(int m)
{
biaozhi1++;
xianshi(m);
while(P1==values)
{
xianshi(m);
}
if(biaozhi1==1)
{
num1=m;
}
if(biaozhi1==2)
{
num1=num1*10+m;
}
}
void main()
{
char i;
unsigned biaozhi;
while(1)
{
xianshi(num1);
values=anjianjiance();
switch(values)
{
case(0xee): fuzhi(1);break;//1
case(0xde):fuzhi(2);break;//2
case(0xbe): fuzhi(3);break;//3
case(0x7e):k=10;break;//+
case(0xed): fuzhi(4);break;//4
case(0xdd):fuzhi(5);break;//5
case(0xbd): fuzhi(6);break;//6
case(0x7d):k=11;break;//-
case(0xeb): fuzhi(7);break;//7
case(0xdb):fuzhi(8);break;//8
case(0xbb): fuzhi(9);break;//9
case(0x7b):k=12;break;//*
case(0xe7): fuzhi(0);break;//0
case(0xd7):fuzhi(0);break;//0
case(0xb7): k=14;break;//=
case(0x77):k=13;break; // /
}
/*
if(k<=9)
{
if(biaozhi1==1)
{
num1=k;
}
if(biaozhi1==2)
{
num1=num1*10+k;
}
while(P1==values);
xianshi(num1);
biaozhi1++;
} */
if(k==10)
{
num2=num1;
num1=0;
biaozhi=1;
biaozhi1=0;
}
if(k==11)
{
num2=num1;
xianshi(0);
biaozhi=2;
}
if(k==12)
{
num2=num1;
xianshi(0);
biaozhi=3;
}
if(k==13)
{
num2=num1;
xianshi(0);
biaozhi=4;
}
if(k==14)
{
if(biaozhi==1)
{
num3=num1+num2;
}
if(biaozhi==2)
{
num3=num2-num1;
}
if(biaozhi==3)
{
num3=num1*num2;
}
if(biaozhi==4)
{
num3=num2/num1;
}
xianshi(num3);
}
}
}
