⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bin2bcd.lst

📁 一个提取一个整数万位、千位、百位、十位、各位的快速算法
💻 LST
字号:
C51 COMPILER V8.15   BIN2BCD                                                               04/14/2009 10:13:05 PAGE 1   


C51 COMPILER V8.15, COMPILATION OF MODULE BIN2BCD
OBJECT MODULE PLACED IN Bin2BCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Bin2BCD.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //本程序是将一个unsigned int整形数的万位、千位、百位、十位、各位提取出来
   2          //各个位依次存放在一个有5个unsigned char组成的数组中
   3          #include<reg51.h>
   4          union bin16
   5          {
   6            unsigned int ax;        //需要提取各个位的整数
   7            unsigned char al[2];
   8          };
   9          
  10          
  11          
  12          //函数入口参数:需要提取各个位的整数,存放各个位的数组起始地址
  13          void bin2bcd(unsigned int ua,char data *ps)
  14          {
  15   1        union bin16 data b16;
  16   1        char data *p;
  17   1        unsigned char data wq;   //存放预估的千位
  18   1        b16.ax=ua;
  19   1        wq=b16.al[0]>>2;         //暂存预估的千位
  20   1        b16.al[0]&=0x03;         //减去整数中预估千位
  21   1        b16.ax+=wq*24;           //求余数
  22   1        if(b16.al[0]>=4)         //第一次校正千位
  23   1        {                        //余数大于1024,利用余数的高字节判断
  24   2          wq++;
  25   2              b16.ax-=1000;
  26   2        }
  27   1        if(b16.ax>=1000)         //第二次校正千位
  28   1        {
  29   2          wq++;
  30   2              b16.ax-=1000;
  31   2        }
  32   1        p=ps;
  33   1        *p++=wq/10;             //取万位
  34   1        *p++=wq%10;             //取千位
  35   1        wq=(unsigned char)(b16.ax>>2)/25;    //取余数的百位,wq/100
  36   1        *p++=wq;
  37   1        wq=b16.ax-wq*100;
  38   1        *p++=wq/10;                          //取十位
  39   1        *p++=wq%10;                          //取个位
  40   1      }
  41          
  42          
  43          
  44          //测试数据 
  45          //需要提取各个位的整数a
  46          //依次存放万位、千位、百位、十位、各位的数组c
  47          void main()
  48          {
  49   1        unsigned int a=23;                  
  50   1        unsigned char c[5];
  51   1        bin2bcd(a,c);
  52   1        while(1); 
  53   1      }


C51 COMPILER V8.15   BIN2BCD                                                               04/14/2009 10:13:05 PAGE 2   

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    163    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -