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

📄 leddt.lst

📁 动态数码管显示 动态数码管显示 动态数码管显示
💻 LST
字号:
C51 COMPILER V8.02   LEDDT                                                                 02/09/2007 23:02:14 PAGE 1   


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

line level    source

   1          /**************************************************************************
   2            
   3                                                                  动态数码管显示
   4            
   5                                                  COPYRIGHT (c)   2007 BY GSM.
   6          
   7                                                  --  ALL RIGHTS RESERVED  --
   8            
   9                  File Name:              LEDdt.c
  10                  Author:                 Guo Shaoming
  11                  Created:                2007/2/9
  12                  Modified:               NO
  13                  QQ:                    1367320
  14                  Email:                  gsmsim@gmail.com
  15                  Revision:               1.0
  16            
  17          ***************************************************************************/
  18          
  19          
  20          #include <REGX52.H>
  21          
  22          
  23          //函数申明
  24          void disp(unsigned char *x,db);
  25          void delay(unsigned int c);
  26          void timerint ()  ;
  27          
  28          //D1--D4:四位数码管COM端,在本例中为共阴极;DP:小数位。
  29          sbit D1=P2^0;
  30          sbit D2=P2^1;
  31          sbit D3=P2^2;
  32          sbit D4=P2^3;
  33          sbit DP=P1^7;
  34          
  35          //DT:数码管八位数据总线
  36          #define  DT  P1
  37          
  38          //0--9 位码,0X00:清显示。
  39          unsigned char code  dis[13]={
  40                                                                  
  41                  0X3F,/*0*/
  42                  0X06,/*1*/
  43                  0X5B,/*2*/
  44                  0X4F,/*3*/
  45                  0X66,/*4*/
  46                  0X6D,/*5*/
  47                  0X7D,/*6*/
  48                  0X07,/*7*/
  49                  0X7F,/*8*/
  50                  0X6F,/*9*/
  51                  0X40,/*-*/
  52                  0XBF,/*0.*/
  53                  0X00,/*NULL*/
  54                                  };
  55          
C51 COMPILER V8.02   LEDDT                                                                 02/09/2007 23:02:14 PAGE 2   

  56          
  57          
  58          //sign:处理负数
  59          signed int sign,Num=-20;
  60          int count=0;
  61          
  62                  
  63          
  64          
  65          
  66          void main(void)
  67          {
  68   1      
  69   1              unsigned char DB,X[4]="0000";  /*四位要显示的数码:压缩的BCD码表示*/
  70   1              
  71   1              DB=4;    /*小数点位置:0-无小数点,1-末位,4-最高位*/
  72   1              
  73   1              EA    = 1;
  74   1              ET0   = 1;
  75   1              TR0   = 1;
  76   1              TMOD = 0x01;   /*50ms定时*/
  77   1              TH0 = 0x3C;
  78   1              TL0 = 0xB0;
  79   1      
  80   1      
  81   1              while(1)
  82   1              {
  83   2              DB=P3&3;
  84   2              if(Num>9999)Num=-50;  
  85   2              if(Num<0)
  86   2                      {
  87   3                              *X=10;
  88   3                              sign=-Num;
  89   3                              *(X+1)=(sign/100)%10;
  90   3                              *(X+2)=(sign/10)%10;
  91   3                              *(X+3)=sign%10;
  92   3                      }       
  93   2               else
  94   2                      {
  95   3              
  96   3                      *X=(Num/1000)%10;
  97   3                      *(X+1)=(Num/100)%10;
  98   3                      *(X+2)=(Num/10)%10;
  99   3                      *(X+3)=Num%10;
 100   3                      }
 101   2              if(*X==0&&DB<4)*X=12;                   /*高位多余的零消除*/
 102   2              if(*(X+1)==0&&DB<3)*(X+1)=12;  
 103   2              if(*(X+2)==0&&DB<2)*(X+1)=12;
 104   2              disp(X,DB);
 105   2      
 106   2              }
 107   1      }
 108          
 109          
 110          void delay(unsigned int c)
 111          {
 112   1              unsigned int i,j;
 113   1              for(i=0;i<c;i++)
 114   1              for(j=0;j<100;j++);
 115   1              
 116   1      }
 117          
C51 COMPILER V8.02   LEDDT                                                                 02/09/2007 23:02:14 PAGE 3   

 118          
 119          void disp(unsigned char *x,db) /*本子程序可以做为动态数码管显示的通用程序*/
 120          {
 121   1              DT=dis[*x];
 122   1              D1=1;
 123   1              if(db==4)DP=1;
 124   1              delay(10);
 125   1              D1=0;
 126   1      
 127   1              DT=dis[*(x+1)];
 128   1              D2=1;
 129   1              if(db==3)DP=1;
 130   1              delay(10);
 131   1              D2=0;
 132   1      
 133   1              DT=dis[*(x+2)];
 134   1              D3=1;
 135   1              if(db==2)DP=1;
 136   1              delay(10);
 137   1              D3=0;
 138   1      
 139   1              DT=dis[*(x+3)];
 140   1              D4=1;
 141   1              if(db==1)DP=1;
 142   1              delay(10);
 143   1              D4=0;
 144   1              
 145   1      }
 146          
 147          
 148          
 149          
 150          void timerint () interrupt 1 
 151          {
 152   1              count++;
 153   1              
 154   1              if(count==10){  count=0;  Num++;        }       
 155   1      
 156   1              TF0 = 0;   /*50ms定时*/
 157   1              TH1=0X3C;
 158   1              TL1=0XB0;
 159   1              TR0 = 1;
 160   1            
 161   1      }
 162          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    481    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6      10
   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 + -