精华内容
下载资源
问答
  • 本文主要介绍了PIC进阶HEXBCD转换汇编步骤。
  • HEX TO BCD

    2012-06-26 13:59:59
    HEX transfer to BCD example: input c function parameter :0x0CE0 PC "super terminal" show: "voltage:3296 mV
  • void HEXtoBCDData(void){unsigned char ucHEXdata[10] = {0},ucBCDdata[10] = {0};unsigned int uiHEXdata = 0;unsigned long int ulHEXdata = 0;ucHEXdata[0] = 0x63; //十进制为99ucBCDdata[0] = (ucHEXdata[0]/...

    void HEXtoBCDData(void)

    {

    unsigned char ucHEXdata[10] = {0},ucBCDdata[10] = {0};

    unsigned int uiHEXdata = 0;

    unsigned long int ulHEXdata = 0;

    ucHEXdata[0] = 0x63; //十进制为99

    ucBCDdata[0] = (ucHEXdata[0]/10)*0x10 + (ucHEXdata[0]%10);

    //ucBCDdata[0]=99

    ucHEXdata[0] = 0xf5; //十进制为245

    ucHEXdata[1] = ucHEXdata[0]/100;

    ucHEXdata[2] = ucHEXdata[0]%100;

    ucBCDdata[0] = ucHEXdata[1];

    ucBCDdata[1] = (ucHEXdata[2]/10)*0x10 + (ucHEXdata[2]%10);

    //ucBCDdata[1]=2,ucBCDdata[0]=45

    uiHEXdata = 0xfff5; //十进制为65525

    ucHEXdata[1] = uiHEXdata%100;

    ucBCDdata[0] = (ucHEXdata[1]/10)*0x10 + (ucHEXdata[1]%10);

    uiHEXdata = uiHEXdata/100;

    ucHEXdata[2] = uiHEXdata%100;

    ucBCDdata[1] = (ucHEXdata[2]/10)*0x10 + (ucHEXdata[2]%10);

    uiHEXdata = uiHEXdata/100;

    ucHEXdata[3] = uiHEXdata%100;

    ucBCDdata[2] = (ucHEXdata[3]/10)*0x10 + (ucHEXdata[3]%10);

    //ucBCDdata[2]=6,ucBCDdata[1]=55,ucBCDdata[0]=25

    ulHEXdata = 0xfffffff5; //十进制为4294967285

    ucHEXdata[1] = ulHEXdata%100;

    ucBCDdata[0] = (ucHEXdata[1]/10)*0x10 + (ucHEXdata[1]%10);

    ulHEXdata = ulHEXdata/100;

    ucHEXdata[2] = ulHEXdata%100;

    ucBCDdata[1] = (ucHEXdata[2]/10)*0x10 + (ucHEXdata[2]%10);

    ulHEXdata = ulHEXdata/100;

    ucHEXdata[3] = ulHEXdata%100;

    ucBCDdata[2] = (ucHEXdata[3]/10)*0x10 + (ucHEXdata[3]%10);

    ulHEXdata = ulHEXdata/100;

    ucHEXdata[4] = ulHEXdata%100;

    ucBCDdata[3] = (ucHEXdata[4]/10)*0x10 + (ucHEXdata[4]%10);

    ulHEXdata = ulHEXdata/100;

    ucHEXdata[5] = ulHEXdata%100;

    ucBCDdata[4] = (ucHEXdata[5]/10)*0x10 + (ucHEXdata[5]%10);

    //ucBCDdata[4]=42,ucBCDdata[3]=94,

    //ucBCDdata[2]=96,ucBCDdata[1]=72,ucBCDdata[0]=85

    ulHEXdata = 0xfffffff4; //十进制为42 94 96 72 84

    for(int i=0;i<5;i++)

    {

    ucHEXdata[i]=ulHEXdata%100;

    ulHEXdata=ulHEXdata/100;

    ucBCDdata[i]=(ucHEXdata[i]/10)*0x10+ucHEXdata[i]%10;

    }

    //ucBCDdata[4]=42,ucBCDdata[3]=94,

    //ucBCDdata[2]=96,ucBCDdata[1]=72,ucBCDdata[0]=84

    }

    展开全文
  • BCD转HEX(C语言)

    千次阅读 2019-12-31 12:05:11
    最近因项目需要将BCD码数据HEX格式而编写,大小端概念相关知识自行补充即可。 输出的十进制数hexindec_val可满足所有32位数可表达的bcd_data输入转换 输出的十六进制数组hex_data可满足32位和64位数可表达的hex_...

    如题

    • 最近因项目需要将BCD码数据转成HEX格式而编写,大小端概念相关知识自行补充即可
    • 输出的十进制数hexindec_val可满足所有32位数可表达的bcd_data输入转换
    • 输出的十六进制数组hex_data可满足32位和64位数可表达的hex_data输入转换

    • 输入
      1. 存放大端格式HEX数据的缓冲区指针
      2. 小端格式BCD数据缓冲区指针
      3. BCD数据长度
    • 输出
      1. HEX数据十进制表示

    代码实现:

    #include <stdio.h>
    #include <string.h>
    #include <math.h>
    
    typedef unsigned long long	uint64_t;
    typedef unsigned int		uint32_t;
    typedef unsigned short		uint16_t;
    typedef unsigned char		uint8_t;
    
    uint64_t BCD2HEX(uint8_t *hex_data, uint8_t *bcd_data, uint8_t data_len)
    {
    	uint8_t index = 0, pow_num = 0, move_cnt = 0;
        uint8_t res = 0x0f;
    	uint64_t hexindec_val = 0;
    
    	if (!data_len || (data_len > sizeof(uint64_t)))
    	{
    		return hexindec_val; 
    	}
    	for (index = 0; index < data_len; index++)
    	{
    		move_cnt = 0;
            
    		for (pow_num = index; pow_num < (2 + index); pow_num++)
    		{
    			hexindec_val += (((bcd_data[index] & res) >> (4 * move_cnt)) * pow(10, index + pow_num));
                
    			res ^= 0xff;
    			move_cnt++;
    		}
    	}
        memmove(hex_data, &hexindec_val, data_len);
    
    	return hexindec_val;
    }
    

    示例

    在这里插入图片描述

    • 第一行打印-1因为printf默认了有符号,左侧可看到变量值为0XFFFFFFFF的十进制表达
    • 由此可验证32位输入的BCD码都可转换,同样方法可验证64位依然可以

    注意

    1. 输入参数1*hex_data缓冲区大小要放得下最后memmove进去的数据,可能比输入参数3data_len大。
    2. 输入参数1*hex_data和参数2*bcd_data的大小端排列还需看使用者机器类型,我使用的是小端排列的设备,如果不同还需调整输入时的数据格式或循环的逻辑。
    3. 程序相当于有两个输出结果
      • returnhexindec_val十进制表示
      • memmovehex_data十六进制表示
    4. 无论是memmove进去的还是输入数据的格式都一定要看 使用者的机器属于大小端哪种!
    5. 同时编写的还有HEX转BCD码,如有需要可留言我再发。
    展开全文
  • /********** BCD to HEX **********/ //数值范围:0~9999 u16 BCD2HEX(u16 BCDdata) { u16 temp; temp = (((BCDdata&gt;&gt;12) &amp; 0x000f) * 1000) + (((BCDdata&gt;&gt;8) &amp; 0x...
    /********** BCD to HEX **********/
    //数值范围:0~9999
    u16 BCD2HEX(u16 BCDdata)
    {
      u16 temp;
      temp = (((BCDdata>>12) & 0x000f) * 1000)
           + (((BCDdata>>8) & 0x000f) * 100)
           + (((BCDdata>>4) & 0x000f) * 10)
           + (BCDdata & 0x000f);
      return temp;
    }
    
    /********** HEX to BCD **********/
    //数值范围:0~9999
    u16 HEX2BCD(u16 HEXdata)
    {
      u16 BCDdata;
      u16 temp;
      temp = HEXdata%10000;
      BCDdata = (temp/1000) << 12;
      BCDdata = BCDdata | ((temp/100) << 8);
      BCDdata = BCDdata | ((temp/10) << 4);
      BCDdata = BCDdata | temp%10;
      return BCDdata;
    }

     

    展开全文
  • 此的Keil uVision程序应该加载一个正整数ASCII数字(例如1234)。... 尤其:的Keil:汇编程序,ASCII号码转换成BCD和HEXMOV R4,#10和AND R1,R3,#0xFMLA R2,R4,R2,R3??? 这里是程序:LDR R0, =Wert ; Pointer ...

    此的Keil uVision程序应该加载一个正整数ASCII数字(例如1234)。该方案应该将其转换为BCD码数字在注册R1,并在注册2十六进制数... 有人可以解释我下面做什么的? 尤其:的Keil:汇编程序,ASCII号码转换成BCD和HEX

    MOV R4,#10

    AND R1,R3,#0xF

    MLA R2,R4,R2,R3

    ??? 这里是程序:

    LDR R0, =Wert ; Pointer laden

    LDR R1,[R0]

    BL KONVERT ; Unterprogramm KONVERT aufrufen

    endlos B endlos

    KONVERT

    LDRB R3,[R0],#1 ; Byte laden

    AND R1,R3,#0xF ; ASCII-HEX-Wandlung

    MOV R2,R1 ; HEX-Zahl

    MOV R4,#10

    LDRB R3,[R0],#1 ; nächstes laden

    AND R3,R3,#0xF ; ASCII-Hex-Wandlung

    ORR R1,R3,R1,LSL #4 ; BCD-Wert bilden

    MLA R2,R4,R2,R3 ; HEX-Zahl

    LDRB R3,[R0],#1 ; nächstes laden

    AND R3,R3,#0xF ; ASCII-Hex-Wandlung

    ORR R1,R3,R1,LSL #4 ; BCD-Wert bilden

    MLA R2,R4,R2,R3 ; HEX-Zahl

    LDRB R3,[R0],#1 ; nächstes laden

    AND R3,R3,#0xF ; ASCII-Hex-Wandlung

    ORR R1,R3,R1,LSL #4 ; BCD-Wert bilden

    MLA R2,R4,R2,R3 ; HEX-Zahl

    BX LR ; Rücksprung

    +0

    I'T相当有据可查的,所以问题出在哪里? –

    +0

    如果您不懂德语,可以使用http://translate.google.com/。 –

    +0

    MOV R4,#10没有记录,并且谢谢你没有帮助.. –

    展开全文
  • BCDHEX相互转换程序

    2021-02-04 10:09:08
    程序中有时会遇到时间的读取,会...Uint8 bcd_to_hex(Uint8 data) { Uint8 temp; temp = ((data>>4)*10 + (data&0x0f)); return temp; } Uint8 hex_to_bcd(Uint8 data) { Uint8 temp; temp = (((d
  • 再大可就不能表示了,咋办呢,想想办法,感觉还是用手算一下,分步解决吧,这部分代码参考论坛中一个大哥的代码,我改的不多, void hextobcd( unsigned char *hex, unsigned char BCD[], unsigned char length) { ...
  • bcdhex转换、以及编码格式

    万次阅读 2017-01-25 10:05:36
    1、BCD码 (1)压缩BCD:4位二进制数表示一个十进制数,例如:  0001 0010 --> 12  0001 0011 --> 13 (2)BCD:8位二进制数表示一个十进制数,高四位为0;  0000 0001 0000 0010 --> 12   0000 0
  • BCD_TO_HEX_BCD转换_源码

    2021-09-29 16:31:23
    能将普通十进制转化为BCD码,方便快捷,可以作为子VI使用
  • java二进制,字节数组,字符,十六进制,BCD编码转换java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制...
  • hex BCD码转换

    2013-12-27 13:24:12
    BCD码转换   BCD码转换
  • C# 十六进制数转BCD

    2018-02-06 14:49:36
    /// /// 十六进制数转BCD,只考虑无符号数,未处理小数据转换时效率不高问题 /// /// 待编码数 /// 编码后的数 static UInt64 UIntToBCD(UInt64 data) { UInt64 result = 0;
  • uint8_t BCD_to_HEX(uint8_t BCD_Data) { if(BCD_Data > 0 && BCD_Data <= 99) return ( (BCD_Data / 10 * 16) + (BCD_Data % 10) ); else return 0; } uint16_t DX_to_HX(uint16_t DX_Data) ...
  • HEX2BCD 实测可用

    2021-01-15 01:45:45
    在写程序时,经常需要进行BCD码和ASCII码的转换。... unsigned char BCD2HEX(unsigned char bcd_data) //BCD转为HEX子程序 { unsigned char temp; temp=(bcd_data/16*10 + bcd_data%1.
  • 51单片机实用子程序库(包含HEXBCD及ASCII码之间的转换),很实用的哦
  • PROJECT = "hex" VERSION = "1.0.0" -- 引入必要的库文件(lua编写), 内部库不需要require local sys = require "sys" log.info("main", "hello world") print(_VERSION) local num=0x22222202 local str="68656...
  • HEX/BCD/BYTE/之间的转换

    千次阅读 2016-08-09 23:30:36
    HEX/BCD/BYTE/之间的转换 **********************************/ /* 将srcBuff指向的len个字节的数据,按十六进制字符编码转换,并存于tarBuff中 */ void ByteToHexStr(char *tarBuff, const unsigned char *srcBu
  • BCDHEX转换程序

    2016-03-28 13:24:32
    自:http://blog.csdn.net/sdwuyulunbi/article/details/4741721 在写程序时,经常需要进行BCD码和ASCII码的转换,下面是我常用的...unsigned char BCD2HEX(unsigned char bcd_data) //BCD转为HEX子程序 { u
  • } ///////////////////////////////////////////////////////// // //功能:BCD转10进制 // //输入:const unsigned char *bcd 待转换的BCD码 // int length BCD码数据长度 // //输出: // //返回:unsigned long ...
  • C# 获取字符串转Hex格式和BCD格式

    千次阅读 2018-10-10 19:38:45
    一、字符串转BCD格式 1、设计要求 上位机获取输入的年月日字符串,转换成BCD格式后传递到下位机。 输入一串序列号,最小1位,年最大4位;月和日最小一位,最大两位。   2、设施步骤 (1)获取字符串,...
  • //功能:BCD转10进制 // //输入:const unsigned char *bcd 待转换的BCD码 // int length BCD码数据长度 // //输出: // //返回:unsigned long 当前数据位的权 // //思路:压缩BCD码一个字符所表示的十...
  • BCDHEX转换程序(绝对原创哦)

    万次阅读 2009-10-29 10:36:00
    在写程序时,经常需要进行BCD码和ASCII码的转换,下面是我常用的转换程序,如果...unsigned char BCD2HEX(unsigned char bcd_data) //BCD转为HEX子程序 { unsigned char temp; temp=(bcd_data/16*10 + bcd_data%16);
  • bcd码和hex

    千次阅读 2019-10-23 10:20:57
    1.hex码 ASCII码:A (65) 二进制码:0100_0001 重新分组:0000_0100 0000_0001 十六进制: 4 1 Hex编码:41 链接: 1-Hex编码 2.bcd码 链接: BCD码简介及其与十进制数字字符串之间的转换 ...
  • unsigned char BCD2HEX(unsigned char bcd_data) //BCD转为HEX子程序 {   unsigned char temp;   temp=(bcd_data/16*10 + bcd_data%16);   return temp;  }  unsigned char HEX2BCD(unsigned char ...
  • 关于这类算法,以前的文章已经讲过类似的:BCD二进制#include // HEX转BCD//bcd_data(<0x255,>0)unsigned char BCD2HEX(unsigned int bcd_data){unsigned char temp;temp=((bcd_data>>8)*100)|((bcd...
  • BCD,HEX,ASCII编码

    千次阅读 2017-08-21 11:52:24
    BCD码:简称BCD,称BCD码或二-十进制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的...
  • BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码。BCD码这种编码形式利用了四个位元来...
  • Binary to BCD Converter From: Binary to BCD Converter (johnloomis.org) Shift and Add-3 Algorithm Shift the binary number left one bit. If 8 shifts have taken place, the BCD number is in the Hundreds,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,263
精华内容 1,305
关键字:

hex转bcd

友情链接: 2、灰色模型.zip