两字节压缩BCD 码转换为两字节二进制数。算法如下:
BCD 码abcd=1000a+100b+10c+d=10{10[10a+b]+c}+d,将各位BCD 码分离出之后,即可根据此式转换为二进制
数。涉及到乘法运算和多字节加法运算。
0X20,0X21 中为BCD 码,0X21 高4 位为最高位。转换结果放在0X30,0X31 中。
main: MOV a,@0x79
MOV 0x20,a
MOV a,@0x54
MOV 0x21,a ;赋值
MOV a,0x20
and a,@0x0f
MOV 0x22,a
swapa 0x20
and a,@0x0f
MOV 0x23,a
MOV a,0x21
and a,@0x0f
MOV 0x24,a
swapa 0x21
and a,@0x0f
MOV 0x25,a ;BCD 码展开后存于0X22,0X23,0X24,0X25
MOV a,0x25, ;0X25 为最高位
MOV 0x30,a
MOV a,@0x0 ;多字节加法高位为0
MOV 0x31,a
MOV a,0x24
MOV 0x32,a
call a_b ;调子程
MOV a,0x23
MOV 0x32,a
call a_b
MOV a,0x22
MOV 0x32,a
call a_b
self: jmp self
a_b:
MOV a,@0x0 ;0X34,0X35 存储中间结果
MOV 0x34,a
MOV 0x35,a
MOV a,@0x0a ;实现乘10
MOV 0x33,a
a1: MOV a,0x35 ;两字节二进制加法,在本例中高字节肯定无进位
add a,0x31
MOV 0x35,a
MOV a,0x34
add a,0x30
MOV 0x34,a
jbc 0x03,0
inc 0x35
djz 0x33
jmp a1
MOV a,0x32
add 0x34,a
jbc 0x03,0
inc 0x35
MOV a,0x34
MOV 0x30,a
MOV a,0x35
MOV 0x31,a
ret
eop
关键字:BCD 二进制数 义隆单片机
引用地址:
BCD 数转换为二进制数(义隆单片机)
推荐阅读最新更新时间:2024-03-16 15:53
BCD与HEX之间相互转换
最近在做一个项目,用到这个东东,可是网上找到的一些相关函数还是有点错误,干脆自己写了一个,大家看能用就用吧。 //Val_BCD的范围( 0x99, 0) INT8U BCD2HEX(INT8U Val_BCD) { INT8U temp; temp = Val_BCD&0x0F; //按位与,temp得到低四位数。 Val_BCD = 4; //右移四位,将高四位移到低四位的位置,得到高四位码值。 Val_BCD &= 0x0F; //防止移位时高位补进1,只保留高四位码值 Val_BCD *= 10; //高位码值乘以10 temp += Val_BCD; //然后与第四
[单片机]
C3065 BCD-七段译码液晶显示驱动器的应用
C3065 BCD-七段译码液晶显示驱动器功耗低微,在25度条件下仅几十微安,工作电压范围为4~18V,采用交流驱动,可直接驱动液晶显示屏.C306的管脚外引线排列和功用如图所示,C306的功能真值表如9.42表所示.
显示.
[电源管理]
义隆电子推出符合工业规格的低功耗微控制器
义隆电子股份有限公司日前推出符合工业规格的微控制器(MCU)新品——EM78P159N系列8位MCU,该产品具有低功耗,拥有抗干扰及抗静电的能力,同时操作温度范围可达-45℃~85℃,可以广泛的应用于小家电产品。 EM78P159N的详细规格为1K×13位ROM,48字节RAM,I/O最大可达15个,另提供三种工作模式——IRC、ERC、Crystal三组的中断资源,以及快速的唤醒模式、一组8bit计时/计数器、Watch Dog Timer。为符合客户需求,EM78P159N提供18pin/20 pin, DIP/SOP等多种包装。此外,还有14pin封装,编号为EM78P154N。 义隆电子自2004年起,全面提升8位微控
[嵌入式]
BCD半导体计划在美国纳斯达克上市
BCD半导体(BCD Semiconductor Manufacturing)上周三向SEC提交IPO申请,拟融资8600万美元。公司计划于纳斯达克挂牌交易,代码“BCDS”,Jefferies & Co. 和Stifel Nicolaus Weisel 将担任此次发行的主承销商,具体IPO时间和细则尚未确定。 BCD半导体成立于2000年,是一家位于大中华区的模拟信号集成电路制造商(IDM),从事电源管理集成电路产品的设计研发、工艺制造和销售。截止2010年9月30日的12个月,公司销售额为1.29亿美元。 公司原计划于2008年上市,计划发行600万ADS,发行价区间为9-11美元,但因市场整体状况不佳延期。
[模拟电子]