欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2407|回復: 4
收起左側

單片機加法計算器程序調試問題

[復制鏈接]
回帖獎勵 10 黑幣 回復本帖可獲得 10 黑幣獎勵! 每人限 1 次
ID:1079270 發表于 2023-6-30 14:21 | 顯示全部樓層 |閱讀模式
void KeyAction(unsigned char keycode)
{
    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)  //向上鍵用作加號,執行加法或連加運算
    {
        result += addend;      //進行加法運算
        addend = 0;
        ShowNumber(result);    //運算結果顯示到數碼管
    }
    else if (keycode == 0x0D)  //回車鍵,執行加法運算(實際效果與加號相同)
    {
        result += addend;      //進行加法運算
        addend = 0;
        ShowNumber(result);    //運算結果顯示到數碼管
    }
    else if (keycode == 0x1B)  //Esc鍵,清零結果
    {
        addend = 0;
        result = 0;
        ShowNumber(addend);    //清零后的加數顯示到數碼管
    }
}
問:(keycode-0x30)計算出是一個十六進制的數, ShowNumber(addend)的addend是一個十進制的數





回復

使用道具 舉報

ID:161164 發表于 2023-6-30 17:56 | 顯示全部樓層
進制是給人看得
單片機只認1/0
回復

使用道具 舉報

ID:404160 發表于 2023-6-30 18:00 | 顯示全部樓層
你的shownumber()是按十進制格式顯示的,可改成十六進制格式輸出,就不是十進制的數了。你可以手工轉換下十進制數為十六進制數,看看顯示的值是否正確
回復

使用道具 舉報

ID:1086796 發表于 2023-7-1 21:13 | 顯示全部樓層
在給定的代碼中,(keycode-0x30)計算的結果是一個十六進制數減去十六進制數字0x30,這實際上是將十六進制數轉換為對應的十進制數。這是因為在ASCII編碼中,數字0-9的十六進制表示正好是0x30-0x39。所以,通過將keycode減去0x30,可以將十六進制數字轉換為對應的十進制數字。

ShowNumber(addend)函數可能接受的是十進制數字作為參數,因為在代碼中沒有給出ShowNumber函數的實現細節,無法確定確切的數據類型。但是,根據代碼中的邏輯,addend應該是一個保存十進制數字的變量,因為它在每次按下0-9的數字鍵時都會被更新,并且最終傳遞給ShowNumber函數以顯示在數碼管上。

評分

參與人數 1黑幣 +12 收起 理由
xnysfh + 12 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

ID:1079270 發表于 2023-7-3 08:31 | 顯示全部樓層
dwping 發表于 2023-7-1 21:13
在給定的代碼中,(keycode-0x30)計算的結果是一個十六進制數減去十六進制數字0x30,這實際上是將十六進制數 ...

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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表