找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1867|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)加法計(jì)算器程序調(diào)試問(wèn)題

[復(fù)制鏈接]
回帖獎(jiǎng)勵(lì) 10 黑幣 回復(fù)本帖可獲得 10 黑幣獎(jiǎng)勵(lì)! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:1079270 發(fā)表于 2023-6-30 14:21 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
void KeyAction(unsigned char keycode)
{
    static unsigned long result = 0;  //用于保存運(yùn)算結(jié)果
    static unsigned long addend = 0;  //用于保存輸入的加數(shù)
   
    if ((keycode>=0x30) && (keycode<=0x39))  //輸入0-9的數(shù)字
    {
        addend = (addend*10)+(keycode-0x30); //整體十進(jìn)制左移,新數(shù)字進(jìn)入個(gè)位
        ShowNumber(addend);    //運(yùn)算結(jié)果顯示到數(shù)碼管
    }
    else if (keycode == 0x26)  //向上鍵用作加號(hào),執(zhí)行加法或連加運(yùn)算
    {
        result += addend;      //進(jìn)行加法運(yùn)算
        addend = 0;
        ShowNumber(result);    //運(yùn)算結(jié)果顯示到數(shù)碼管
    }
    else if (keycode == 0x0D)  //回車(chē)鍵,執(zhí)行加法運(yùn)算(實(shí)際效果與加號(hào)相同)
    {
        result += addend;      //進(jìn)行加法運(yùn)算
        addend = 0;
        ShowNumber(result);    //運(yùn)算結(jié)果顯示到數(shù)碼管
    }
    else if (keycode == 0x1B)  //Esc鍵,清零結(jié)果
    {
        addend = 0;
        result = 0;
        ShowNumber(addend);    //清零后的加數(shù)顯示到數(shù)碼管
    }
}
問(wèn):(keycode-0x30)計(jì)算出是一個(gè)十六進(jìn)制的數(shù), ShowNumber(addend)的addend是一個(gè)十進(jìn)制的數(shù)





分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

5#
ID:1079270 發(fā)表于 2023-7-3 08:31 | 只看該作者
dwping 發(fā)表于 2023-7-1 21:13
在給定的代碼中,(keycode-0x30)計(jì)算的結(jié)果是一個(gè)十六進(jìn)制數(shù)減去十六進(jìn)制數(shù)字0x30,這實(shí)際上是將十六進(jìn)制數(shù) ...

非常感謝,看了你的解釋我大致明白了
回復(fù)

使用道具 舉報(bào)

地板
ID:1086796 發(fā)表于 2023-7-1 21:13 | 只看該作者
在給定的代碼中,(keycode-0x30)計(jì)算的結(jié)果是一個(gè)十六進(jìn)制數(shù)減去十六進(jìn)制數(shù)字0x30,這實(shí)際上是將十六進(jìn)制數(shù)轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制數(shù)。這是因?yàn)樵贏SCII編碼中,數(shù)字0-9的十六進(jìn)制表示正好是0x30-0x39。所以,通過(guò)將keycode減去0x30,可以將十六進(jìn)制數(shù)字轉(zhuǎn)換為對(duì)應(yīng)的十進(jìn)制數(shù)字。

ShowNumber(addend)函數(shù)可能接受的是十進(jìn)制數(shù)字作為參數(shù),因?yàn)樵诖a中沒(méi)有給出ShowNumber函數(shù)的實(shí)現(xiàn)細(xì)節(jié),無(wú)法確定確切的數(shù)據(jù)類(lèi)型。但是,根據(jù)代碼中的邏輯,addend應(yīng)該是一個(gè)保存十進(jìn)制數(shù)字的變量,因?yàn)樗诿看伟聪?-9的數(shù)字鍵時(shí)都會(huì)被更新,并且最終傳遞給ShowNumber函數(shù)以顯示在數(shù)碼管上。

評(píng)分

參與人數(shù) 1黑幣 +12 收起 理由
xnysfh + 12 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:404160 發(fā)表于 2023-6-30 18:00 | 只看該作者
你的shownumber()是按十進(jìn)制格式顯示的,可改成十六進(jìn)制格式輸出,就不是十進(jìn)制的數(shù)了。你可以手工轉(zhuǎn)換下十進(jìn)制數(shù)為十六進(jìn)制數(shù),看看顯示的值是否正確
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:161164 發(fā)表于 2023-6-30 17:56 | 只看該作者
進(jìn)制是給人看得
單片機(jī)只認(rèn)1/0
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表