C51 COMPILER V8.08   0                                                                     08/19/2015 11:06:13 PAGE 1   


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

line level    source

   1          /*********************************************************************************
   2          * 【编写时间】： 2014年3月5日
   3          * 【作    者】： 清翔电子:03
   4          * 【版    本】： 1.0
   5          * 【网    站】： http://www.qxmcu.com/ 
   6          * 【淘宝店铺】： http://qxmcu.taobao.com/ 
   7          * 【实验平台】： QX-MCS51 单片机开发板
   8          * 【外部晶振】： 11.0592mhz     
   9          * 【主控芯片】： STC89C52
  10          * 【编译环境】： Keil μVisio3  
  11          * 【程序功能】：                                                                                    
  12          * 【使用说明】： 
  13          *  说明：免费开源，不提供源代码分析.
  14          **********************************************************************************/
  15          /******************************************************************
  16          程序功能：      该函数是一个功能性小函数，告诉大家对整数各位
  17                                  进行拆分的一种方法（函数中以一个四位数为例），还有对小数进行提取的方法。
  18          ****************************************************************************/
  19          #include <reg51.h>
  20          #include <math.h>
  21          
  22          void main()
  23          {
  24   1              unsigned int zhengshu=1234;
  25   1              unsigned char ge,shi,bai,qian;
  26   1      
  27   1              float xiaoshu=5.67;
  28   1              unsigned int xiaoshu1,xiaoshu2;
  29   1      
  30   1              ge=zhengshu%10;            //%即为取余数运算符，如8%5=3
  31   1              shi=(zhengshu%100)/10;   //单斜线/为取整运算符，如8、5=1
  32   1              bai=(zhengshu%1000)/100;
  33   1              qian=zhengshu/1000;
  34   1      
  35   1              xiaoshu2=(unsigned int)(xiaoshu*100)%10;
  36   1              //注意(unsigned int)(xiaoshu*100)该部分，它的含义为对(xiaoshu*100)进行强制
  37   1              //类型转换，因为虽然(xiaoshu*100)的运算结果表面上得到的是567，但实质上它在程序
  38   1              //中的表现形式是567.0，即仍为float型数据，此时如果无类型转换，进行%取余运算时会
  39   1              //导致错误出现。(unsigned int)(xiaoshu*100)即将float型强制转换为unsigned int型数据。
  40   1              xiaoshu1=(unsigned int)(xiaoshu*100)%100/10;
  41   1      
  42   1              P1=xiaoshu2;//xiaoshu2结果为7；二进制为00000111 ,故QX-MCS51开发板低三位LED会不亮，其余全亮
  43   1                                      //同学们可以用此方法，更改一下“P1=”后的变量，通过led的亮灭观察下每个变量的值是否正确。
  44   1              while(1);//死循环，程序会停止于此处，防止“跑飞”
  45   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    159    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      12
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
C51 COMPILER V8.08   0                                                                     08/19/2015 11:06:13 PAGE 2   

END OF MODULE INFORMATION.


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