找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 284|回复: 9
打印 上一主题 下一主题
收起左侧

如何十进制转十六进制?

[复制链接]
跳转到指定楼层
楼主
ID:76044 发表于 2024-4-7 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我制作了几个时钟,DS1203,PGS,都分别制作成功了,现在想结合一下,想制作DS1203走时,GPS校准的时钟,发现得到时间是,DS1203是十六进制的,GPS是十进制,折腾了几天都没有做好,思想枯竭,哪个高手给个思路,说明一下,本人C语言只能看个大概,会点汇编,拜托!拜托!高手,先在这里谢谢了!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:883242 发表于 2024-4-7 18:07 | 只看该作者
假设字符串gps[]从第5个字节开始是hhmmss

hour=(gps[5]-'0')*10+gps[6]-'0';
minute=(gps[7]-'0')*10+gps[8]-'0';
second=(gps[9]-'0')*10+gps[10]-'0';
回复

使用道具 举报

板凳
ID:1080935 发表于 2024-4-7 18:15 | 只看该作者
是DS1302吧,查下十进制转BCD子程序可以直接用。其实就是把GPS的十进制对10取余数作为个位(低四位),然后原数除10再对10取余作为十位(高四位,原数据不大于99的话不取余也可,就是原数除10,商做高四位,余数做低四位),时钟8位够用了。
回复

使用道具 举报

地板
ID:69038 发表于 2024-4-7 18:52 | 只看该作者
24转0x24(数字转换):
(24/10)*16+24%10  ; //===>0x14
24转16进制(数值变换):
24/16+24%16   ;        //===>0x18
回复

使用道具 举报

5#
ID:213173 发表于 2024-4-7 19:02 | 只看该作者
//BCD码转十进制函数
unsigned char BCD_D(unsigned char bcd)
{
        return ((bcd>>4)*10)+(bcd & 0x0f);
}
//十进制转BCD码函数
unsigned char D_BCD(unsigned char Dec)
{
        return (Dec/10*16+Dec%10);
}
回复

使用道具 举报

6#
ID:883242 发表于 2024-4-8 07:57 | 只看该作者
zhuls 发表于 2024-4-7 18:52
24转0x24(数字转换):
(24/10)*16+24%10  ; //===>0x14
24转16进制(数值变换):

你查下NMEA0183格式,人家是ASCII字符串!
回复

使用道具 举报

7#
ID:1117741 发表于 2024-4-23 14:52 | 只看该作者
在C语言中,可以使用标准库函数sprintf来实现十进制转十六进制。如:

#include <stdio.h>
#include <stdlib.h>

void decimal_to_hexadecimal(int decimal_number) {
    char hex_string[100];
    sprintf(hex_string, "%x", decimal_number);
    printf("%s\n", hex_string);
}

int main() {
    int number = 255;
    decimal_to_hexadecimal(number);
    return 0;
}
回复

使用道具 举报

8#
ID:1034262 发表于 2024-4-23 15:51 | 只看该作者
((((a*10)+b)*10+c)*10+d)*10....
回复

使用道具 举报

9#
ID:140275 发表于 2024-4-23 16:09 | 只看该作者
BCD整数转换为二进制整数(3位)       
;入口:R0(高位地址),N位数;出口:R2,R3,R4       
;占用资源:ACC,B;堆栈需求:2字节       
IPP3:        MOV        R7,N       
        CLR        A       
        MOV        R2,A       
        MOV        R3,A       
        MOV        R4,A       
IPP31:        MOV        A,R4       
        MOV        B,#0AH       
        MUL        AB       
        MOV        R4,A       
        MOV        A,B       
        XCH        A,R3       
        MOV        B,#0AH       
        MUL        AB       
        ADD        A,R3       
        MOV        R3,A       
        CLR        A       
        ADDC        A,B       
        XCH        A,R2       
        MOV        B,#0AH       
        MUL        AB       
        ADD        A,R2       
        MOV        R2,A       
        MOV        A,R4       
        ADD        A,@R0       
        INC        R0       
        MOV        R4,A       
        CLR        A       
        ADDC        A,R3       
        MOV        R3,A       
        CLR        A       
        ADDC        A,R2       
        MOV        R2,A       
        DJNZ        R7,IPP31       
        RET       
回复

使用道具 举报

10#
ID:883242 发表于 2024-4-23 17:19 | 只看该作者
1534545848 发表于 2024-4-23 16:09
BCD整数转换为二进制整数(3位)       
;入口:R0(高位地址),N位数;出口:R2,R3,R4       
;占用资源:ACC,B;堆栈需求:2字 ...

不对,楼主要的是ascii码转十六进制。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表