目前实现功能:
1.末尾数置0
2.加减乘的五位数计算
3.计算结果溢出时,报错“ERROR”
4.有删除键
#include <REGX52.H>
int digit[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0~9数字数码管的段选
int zero[]={0xff,0xc0};//0xff即数码管全灭,用作末位置0
unsigned long box[5]={0};//计算器的个十百千万位
int i;
unsigned int KeyValue; //用于定义16个按键
unsigned int KeySwitch; //用于判断按下的是数字还是符号
int w; w=0; //用于判断计算器是否该置0
//延时函数
void delay(int ms)
{
int x,y;
for(x= ms;x>0;x--)
for(y=110;y>0;y--);
}
//显示函数
void display()
{
if (w==0) //w初值赋为0,只有检测到有按键被按下时才为1
{
P2=0x01; //将前四位全灭,第五位亮0
P0=zero[0];
delay(10);
P2=0x02;
P0=zero[0];
delay(10);
P2=0x04;
P0=zero[0];
delay(10);
P2=0x08;
P0=zero[0];
delay(10);
P2=0x10;
P0=zero[1];
delay(10);
}
//当有按键被按下后,w赋为1,开始显示box列表里的值,box列表中五个值初值都置0,通过按下数字0~9来往里赋值
if (w!=0)
{
P2=0x01; //万位
P0=digit[box[4]];
delay(10);
P2=0x02; //千位
P0=digit[box[3]];
delay(10);
P2=0x04; //百位
P0=digit[box[2]];
delay(10);
P2=0x08; //十位
P0=digit[box[1]];
delay(10);
P2=0x10; //个位
P0=digit[box[0]];
delay(10);
}
}
//按键函数
void KeyDown(void)
{ int n;
n=0;
P3=0x0f; //定义好初值
if(P3!=0x0f) //检测是否有按键被按下,查找到被按下的键&#x