找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2432|回復(fù): 11
收起左側(cè)

求一個51單片機(jī)匯編,將16進(jìn)制轉(zhuǎn)為十進(jìn)制的程序

[復(fù)制鏈接]
ID:259813 發(fā)表于 2023-7-16 11:53 | 顯示全部樓層 |閱讀模式
串口發(fā)送的16進(jìn)制需要轉(zhuǎn)為十進(jìn)制
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2023-7-16 17:24 | 顯示全部樓層
一般不會有十六進(jìn)制轉(zhuǎn)十進(jìn)制發(fā)送的奇怪需求,對于兩邊都非常麻煩,完全沒有意義。我猜你的真實(shí)需求是把十六進(jìn)制轉(zhuǎn)成十進(jìn)制的ASCII碼。
回復(fù)

使用道具 舉報

ID:1085441 發(fā)表于 2023-7-16 19:58 | 顯示全部樓層
是16進(jìn)制轉(zhuǎn)為BCD嗎?很長時間沒寫過匯編了,寫了一下,應(yīng)該差不多吧,如有錯誤請大家指正
;入口 R0, 出口 R0
    MOV     A,R0
    MOV     B,#10
    DIV      AB
    RL        A
    RL        A
    RL        A
    RL        A
    MOV     R0,B
    ORL      A,R0
    MOV     R0,A
回復(fù)

使用道具 舉報

ID:259813 發(fā)表于 2023-7-16 20:48 | 顯示全部樓層
是把十六進(jìn)制轉(zhuǎn)成十進(jìn)制的ASCII碼,目的是通過串口發(fā)送后接收方好讀
回復(fù)

使用道具 舉報

ID:73992 發(fā)表于 2023-7-16 22:56 | 顯示全部樓層
ORG        0000H
MOV        R0,#0XAF        ;單字節(jié)數(shù)值入口        ,R0         ,假設(shè) R0=#AF
MOV        A,R0
MOV        B,#0X64
DIV        AB
MOV        R5,A                ;百位 存入R5
MOV        A,B
MOV        B,#0X0A
DIV        AB
MOV        R6,A                ;十位 存入R6
MOV        A,B
MOV        B,#0X01
DIV        AB
MOV        R7,A                ;個位 存入R7
END
        無標(biāo)題.jpg

回復(fù)

使用道具 舉報

ID:259813 發(fā)表于 2023-7-17 13:34 | 顯示全部樓層
我沒說清楚,風(fēng)速傳感器用串口助手看到的是十六進(jìn)制例如0A,將其轉(zhuǎn)換為好讀的十進(jìn)制發(fā)出
回復(fù)

使用道具 舉報

ID:1085441 發(fā)表于 2023-7-17 14:29 | 顯示全部樓層
;如果小于100,如果大于100,耀多除一次100
;入口 R0, 出口 R0,R1,R0是十位,R1是各位
    MOV     A,R0
    MOV     B,#10
    DIV      AB
    ADD     A,#30H
    MOV     R0,A
    MOV     A,B
    ADD     A,#30H
    MOV     R1,A
回復(fù)

使用道具 舉報

ID:884147 發(fā)表于 2023-7-17 15:33 | 顯示全部樓層
chydn2000 發(fā)表于 2023-7-17 13:34
我沒說清楚,風(fēng)速傳感器用串口助手看到的是十六進(jìn)制例如0A,將其轉(zhuǎn)換為好讀的十進(jìn)制發(fā)出

就是說數(shù)據(jù)0A你想在串口工具上顯示10,這需要16進(jìn)制轉(zhuǎn)BCD碼程序,還要看16進(jìn)制是幾位的
回復(fù)

使用道具 舉報

ID:384109 發(fā)表于 2023-7-17 16:06 | 顯示全部樓層
51匯編有專門的指令
回復(fù)

使用道具 舉報

ID:123289 發(fā)表于 2023-7-17 16:13 | 顯示全部樓層
;格式轉(zhuǎn)換類:BIN→ASCII----
;HEXTOASC_AR0.ASM:  BIN→ASCII,數(shù)字A→(R0,+1+2)3位高位在前。
;輸入:A=16進(jìn)制數(shù),R0=存入地址
;輸出:(R0,+1+2)=A的ASCII
;影響:PSW,A,B,R0
HEXTOASC_AR0:   MOV     B, #C_100                   ;取百位數(shù)
                DIV     AB
                ORL     A, #C_30H                   ;做成ASCII碼
                MOV     @R0, A                      ;存入
                INC     R0
                MOV     A, B                        ;取余數(shù)
                MOV     B, #C_10                    ;取十位數(shù)
                DIV     AB
                ORL     A, #C_30H                   ;做成ASCII碼
                MOV     @R0, A                      ;存入
                INC     R0
                MOV     A, B                        ;取余數(shù),是個位
                ORL     A, #C_30H                   ;做成ASCII碼
                MOV     @R0, A                      ;存入
                RET
注:
C_10 = 10; C_30H = 30H = 48; C_100 = 100 = 64H
回復(fù)

使用道具 舉報

ID:259813 發(fā)表于 2023-7-18 23:10 | 顯示全部樓層
lyonkon的程序經(jīng)過驗(yàn)證完全正確,謝謝
回復(fù)

使用道具 舉報

ID:1089019 發(fā)表于 2023-7-19 19:44 | 顯示全部樓層
進(jìn)制也就是進(jìn)位計數(shù)制,是人為定義的帶進(jìn)位的計數(shù)方法(有不帶進(jìn)位的計數(shù)方法,比如原始的結(jié)繩計數(shù)法,唱票時常用的“正”字計數(shù)法,以及類似的tally mark計數(shù))。 對于任何一種進(jìn)制---X進(jìn)制,就表示每一位置上的數(shù)運(yùn)算時都是逢X進(jìn)一位。 十進(jìn)制是逢十進(jìn)一,十六進(jìn)制是逢十六進(jìn)一,二進(jìn)制就是逢二進(jìn)一,以此類推,x進(jìn)制就是逢x進(jìn)位。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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