📄 bin2bcd.c
字号:
//本程序是将一个unsigned int整形数的万位、千位、百位、十位、各位提取出来
//各个位依次存放在一个有5个unsigned char组成的数组中
#include<reg51.h>
union bin16
{
unsigned int ax; //需要提取各个位的整数
unsigned char al[2];
};
//函数入口参数:需要提取各个位的整数,存放各个位的数组起始地址
void bin2bcd(unsigned int ua,char data *ps)
{
union bin16 data b16;
char data *p;
unsigned char data wq; //存放预估的千位
b16.ax=ua;
wq=b16.al[0]>>2; //暂存预估的千位
b16.al[0]&=0x03; //减去整数中预估千位
b16.ax+=wq*24; //求余数
if(b16.al[0]>=4) //第一次校正千位
{ //余数大于1024,利用余数的高字节判断
wq++;
b16.ax-=1000;
}
if(b16.ax>=1000) //第二次校正千位
{
wq++;
b16.ax-=1000;
}
p=ps;
*p++=wq/10; //取万位
*p++=wq%10; //取千位
wq=(unsigned char)(b16.ax>>2)/25; //取余数的百位,wq/100
*p++=wq;
wq=b16.ax-wq*100;
*p++=wq/10; //取十位
*p++=wq%10; //取个位
}
//测试数据
//需要提取各个位的整数a
//依次存放万位、千位、百位、十位、各位的数组c
void main()
{
unsigned int a=23;
unsigned char c[5];
bin2bcd(a,c);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -