c语言数码管动态显示 加减乘除,急求用单片机编写一个计算器程序,能够有计算机的数字显示方式(如输入12,数码管显示12),不要加减乘除。...

#include #pragma noregparms

#define g dbyte[0x30]

#define s dbyte[0x31]

#define b dbyte[0x32]

#define q dbyte[0x33]

#define w dbyte[0x34]

#define sw dbyte[0x35]

#define bw dbyte[0x36]

#define qw dbyte[0x37]

#define flag dbyte[0x38]

#define ww dbyte[0x39]

#define var dbyte[0x40]

unsigned long data a0 _at_ 0x42;

unsigned long data a1 _at_ 0x46;

unsigned long data a2 _at_ 0x50;

void count ()

{

unsigned long temp;

if(var>=0&&var<=9)

{

if(ww==1)

{

qw=bw=sw=w=q=b=s=g=0;

g=var;

ww=0;

}

else

{

qw=bw;

bw=sw;

sw=w;

w=q;

q=b;

b=s;

s=g;

g=var;

}

}

if(var>=0x0a&&var<=0x0d)

{

a0=qw*10000000+bw*1000000+sw*100000+w*10000+q*1000+b*100+s*10+g;

if(var==0x0a)flag=1;//加法运算标志

if(var==0x0b)flag=2;//减法运算标志

if(var==0x0c)flag=3;//乘法运算标志

if(var==0x0d)flag=4;//除法运算标志

ww=1;

}

if(var==0x0e)

{

a1=qw*10000000+bw*1000000+sw*100000+w*10000+q*1000+b*100+s*10+g;

if(flag==1)a2=a1+a0;

if(flag==2)a2=a0-a1;

if(flag==3)a2=a1*a0;

if(flag==4)a2=a0/a1;

g=a2%10;

temp=a2/10;

s=temp%10;

temp=temp/10;

b=temp%10;

temp=temp/10;

q=temp%10;

temp=temp/10;

w=temp%10;

temp=temp/10;

sw=temp%10;

temp=temp/10;

bw=temp%10;

qw=temp/10;

}

if(var==0x0f)

{

qw=bw=sw=w=q=b=s=g=var=flag=0;

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值