在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 4800|回复: 5

求助!三字节二进制转十进制BCD码

[复制链接]
发表于 2009-3-25 10:12:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
那位高手可以指导一下
如何编写三字节二进制转十进制BCD码的程序
万分感谢

发表于 2009-3-26 13:30:25 | 显示全部楼层
unsigned char BCD_Buf[10];
void ULongToBcd (unsigned long a,unsigned char len)
{
   unsigned long tmp;
   unsigned char i;
   tmp = a;
   for (i = 0;i < len;i ++)
   {
      BCD_Buf = (unsigned char)(tmp % 10);
      tmp = tmp / 10;
   }
}

参考一下。
发表于 2009-3-28 02:32:40 | 显示全部楼层

楼主我先支持一下你啊

感觉很不错,先顶一下了有时间也到我的单机小游戏网站看看,里面有最新的游戏。
发表于 2009-3-28 13:47:46 | 显示全部楼层
二楼的答案正确!!!
楼主也不说声谢谢!!!!
发表于 2009-8-16 18:45:46 | 显示全部楼层

我来回答!

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity B_BCD is
port(clk:       in  std_logic;
      din:       in  std_logic_vector(26 downto 0);
        y0,y1,y2,y3,y4,y5,y6,y7: out  std_logic_vector(3 downto 0));
end B_BCD;
architecture behav of B_BCD is
  type state is (s0,s1,s2);
  signal present_state:state;
  signal mid_in:std_logic_vector(26 downto 0);
  signal d0,d1,d2,d3,d4,d5,d6,d7:std_logic_vector(3 downto 0);
begin
  process(clk)is
   begin
    if clk'event and clk='1' then
     mid_in<=din;
     present_state<=s0;
        case (present_state) is
       when s0=>
         d0<="0000";d1<="0000";d2<="0000";d3<="0000";d4<="0000";d5<="0000";d6<="0000";d7<="0000";
         present_state<=s1;
       when s1=>
         if mid_in>="100110001001011010000000" then mid_in<=mid_in-"100110001001011010000000";
        d7<=d7+1;
        present_state<=s1;
       elsif mid_in>="000011110100001001000000" then  mid_in<=mid_in-"000011110100001001000000";
        d6<=d6+1;
       present_state<=s1;
       elsif mid_in>="000000011000011010100000" then  mid_in<=mid_in-"000000011000011010100000";
        d5<=d5+1;
        present_state<=s1;
       elsif mid_in>="000000000010011100010000" then  mid_in<=mid_in-"000000000010011100010000";
        d4<=d4+1;
        present_state<=s1;
       elsif mid_in>="000000000000001111101000" then  mid_in<=mid_in-"000000000000001111101000";
        d3<=d3+1;
        present_state<=s1;
       elsif mid_in>="000000000000000001100100" then  mid_in<=mid_in-"000000000000000001100100";
        d2<=d2+1;
       present_state<=s1;
       elsif mid_in>="000000000000000000001010" then  mid_in<=mid_in-"000000000000000000001010";
        d1<=d1+1;
        present_state<=s1;
       elsif mid_in>="000000000000000000000001" then
      mid_in<=mid_in-"000000000000000000000001";
          d0<=d0+1;
        present_state<=s1;
     else
        present_state<=s2;
       end if;
    when s2=>
      y0<=d0;y1<=d1;y2<=d2;y3<=d3;y4<=d4;y5<=d5;y6<=d6;y7<=d7;
       present_state<=s0;
      when others=>
         present_state<=s0;
      end case;
     end if;
   end process;
end behav;
发表于 2009-9-14 23:05:59 | 显示全部楼层
ls是vhdl了吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-24 00:47 , Processed in 0.031694 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表