?? bin2bcd.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 + -