怎么用数码管显示可连续加减乘除的计算器

2019-07-15 13:42发布

这是我在一个只能加减、而且不能连续的计算器程序基础上改的,但是不知道怎么改能让它可以连续运算,求帮助。
就直接发运算部分了。
void KeyAction(unsigned char keycode)
{
    static char oprt =0;
    static unsigned long result = 0;  //用于保存运算结果
    static unsigned long addend = 0;  //用于保存输入的加数

    if ((keycode>=0x30) && (keycode<=0x39))  //输入0-9的数字
    {
        addend = (addend*10)+(keycode-0x30); //整体十进制左移,新数字进入个位
        ShowNumber(addend);    //运算结果显示到数码管
    }






        else if (keycode == 0x26)  //向上键用作加号
    {
        oprt = 0;              //设置运算符变量
        result = addend;       //运算数存到结果中,准备进行加减
        addend = 0;            //清零运算数,准备接收下一个运算数
        ShowNumber(addend);    //刷新数码管显示
    }

    else if (keycode == 0x28)  //向下键用作减号
    {
        oprt = 1;              //设置运算符变量
        result = addend;       //运算数存到结果中,准备进行加减
        addend = 0;            //清零运算数,准备接收下一个运算数
        ShowNumber(addend);    //刷新数码管显示
    }

        else if (keycode ==0x25)
        {
             oprt=2;
                 result =addend;                                //乘
                 addend=0;
                 ShowNumber(addend);
        }

        else if (keycode ==0x27)
        {
             oprt=3;
                 result =addend;                                 //除
                 addend=0;
                 ShowNumber(addend);
        }

         
       



    else if (keycode == 0x0D)  //回车键,执行加减运算
    {
        if (oprt == 0)
        {
            result += addend;  //进行加法运算
        }
        else if(oprt==1)
        {
            result -= addend;  //进行减法运算
        }
                else if(oprt==2)
                {
                    result *=addend;        //乘
                }
                else if(oprt==3)
                {
                    result /=addend;          //除
                }
        addend = 0;
        ShowNumber(result);    //运算结果显示到数码管
    }




   else if (keycode == 0x1B)  //Esc键,清零结果
    {
        addend = 0;
        result = 0;
        ShowNumber(addend);    //清零后的加数显示到数码管
    }
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
数码小叶
1楼-- · 2019-07-15 15:11
 精彩回答 2  元偷偷看……
chenwei6991627
2楼-- · 2019-07-15 20:36
我有个这方面的代码,用iar编译的
天眼M
3楼-- · 2019-07-16 00:24
chenwei6991627 发表于 2016-6-8 09:24
我有个这方面的代码,用iar编译的

我这是用的金沙滩工作室的那款单片机,能借鉴吗
天眼M
4楼-- · 2019-07-16 00:34
数码小叶 发表于 2016-6-8 08:48
连续只要不断查询按键不就可以了,最简单的是加一个大循环。让你的KeyAction一直工作。不知道理解对没

怎么写啊,我都晕了
数码小叶
5楼-- · 2019-07-16 06:22
天眼M 发表于 2016-6-8 12:41
怎么写啊,我都晕了

你的KeyAction在主程序里怎么摆的?
张大猛
6楼-- · 2019-07-16 08:16
 精彩回答 2  元偷偷看……

一周热门 更多>