/**************************************
工程名:简易计算器
***************************************/
#include
#define uchar unsigned char
#define uint unsigned int
//定义位选编码
#define WEI1 0xfe //千位控制
#define WEI2 0xfd //百位控制
#define WEI3 0xfb //十位控制
#define WEI4 0xf7 //个位控制
//定义运算操作符代号
#define add 0x0c //加
#define dec 0x0d //减
#define mul 0x0e //乘
#define div 0x0f //除
#define equ 0x0b //等于
#define clr 0x0a //清零
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
uchar step; //操作步骤变量
uchar sybol; //运算符号变量
uint first; //第一个操作数变量
uint second; //第二个操作数变量
uint res; //结果的变量
uint tempres; //中间结果的变量
uchar code table[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };//数字0~9的编码,共阴
uchar code err[] = { 0x00,//NULL
0x79,//E
0x50,//R
0x50 //R
}; //单词 ERR的编码
void delayms(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=120;j>0;j--);
}
//***********************************************************************************
//功能按键扫描程序
//返回值:有键按下,返回具体的键值,无键按下,返回0xff
//***********************************************************************************
uchar keyscan(void)
{
unsigned char temp; //用于检测按键的临时变量
unsigned char key;
P3=0xff;
P3_4=0; //第一行输出低电平
temp=P3;