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

標題: 求一個51單片機匯編,將16進制轉為十進制的程序 [打印本頁]

作者: chydn2000    時間: 2023-7-16 11:53
標題: 求一個51單片機匯編,將16進制轉為十進制的程序
串口發送的16進制需要轉為十進制

作者: Hephaestus    時間: 2023-7-16 17:24
一般不會有十六進制轉十進制發送的奇怪需求,對于兩邊都非常麻煩,完全沒有意義。我猜你的真實需求是把十六進制轉成十進制的ASCII碼。
作者: cnfloatleaf    時間: 2023-7-16 19:58
是16進制轉為BCD嗎?很長時間沒寫過匯編了,寫了一下,應該差不多吧,如有錯誤請大家指正
;入口 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

作者: chydn2000    時間: 2023-7-16 20:48
是把十六進制轉成十進制的ASCII碼,目的是通過串口發送后接收方好讀
作者: lyonkon    時間: 2023-7-16 22:56
ORG        0000H
MOV        R0,#0XAF        ;單字節數值入口        ,R0         ,假設 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
       


作者: chydn2000    時間: 2023-7-17 13:34
我沒說清楚,風速傳感器用串口助手看到的是十六進制例如0A,將其轉換為好讀的十進制發出
作者: cnfloatleaf    時間: 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

作者: mtdzok    時間: 2023-7-17 15:33
chydn2000 發表于 2023-7-17 13:34
我沒說清楚,風速傳感器用串口助手看到的是十六進制例如0A,將其轉換為好讀的十進制發出

就是說數據0A你想在串口工具上顯示10,這需要16進制轉BCD碼程序,還要看16進制是幾位的
作者: 人中狼    時間: 2023-7-17 16:06
51匯編有專門的指令
作者: yzwzfyz    時間: 2023-7-17 16:13
;格式轉換類:BIN→ASCII----
;HEXTOASC_AR0.ASM:  BIN→ASCII,數字A→(R0,+1+2)3位高位在前。
;輸入:A=16進制數,R0=存入地址
;輸出:(R0,+1+2)=A的ASCII
;影響:PSW,A,B,R0
HEXTOASC_AR0:   MOV     B, #C_100                   ;取百位數
                DIV     AB
                ORL     A, #C_30H                   ;做成ASCII碼
                MOV     @R0, A                      ;存入
                INC     R0
                MOV     A, B                        ;取余數
                MOV     B, #C_10                    ;取十位數
                DIV     AB
                ORL     A, #C_30H                   ;做成ASCII碼
                MOV     @R0, A                      ;存入
                INC     R0
                MOV     A, B                        ;取余數,是個位
                ORL     A, #C_30H                   ;做成ASCII碼
                MOV     @R0, A                      ;存入
                RET
注:
C_10 = 10; C_30H = 30H = 48; C_100 = 100 = 64H
作者: chydn2000    時間: 2023-7-18 23:10
lyonkon的程序經過驗證完全正確,謝謝
作者: XXSSSD    時間: 2023-7-19 19:44
進制也就是進位計數制,是人為定義的帶進位的計數方法(有不帶進位的計數方法,比如原始的結繩計數法,唱票時常用的“正”字計數法,以及類似的tally mark計數)。 對于任何一種進制---X進制,就表示每一位置上的數運算時都是逢X進一位。 十進制是逢十進一,十六進制是逢十六進一,二進制就是逢二進一,以此類推,x進制就是逢x進位。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1