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

📄 main.lst

📁 医护仪走廊的数码管显示驱动的程序工作在时间显示和床好数字模式下
💻 LST
字号:
C51 COMPILER V7.20   MAIN                                                                  06/13/2011 11:04:05 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Main.c ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg2051.h>
   2          #include <intrins.h>
   3          
   4          typedef unsigned char uchar;
   5          typedef unsigned int uint;
   6          
   7          sbit Dig1 = P3^2;
   8          sbit Dig2 = P3^3;
   9          sbit Dig3 = P3^4;
  10          sbit Dig4 = P3^7;
  11          sbit RE = P3^5;
  12          sbit Dot = P1^7;
  13          uint Timer = 0;    //0.5ms闪烁控制标志
  14          uchar Receive_Buffer[5];    //接收主机发来的数据
  15          uchar Display_Buffer[5];    //显示缓冲区
  16          uchar Display_Flag = 0;    //是否显示标志
  17          uchar Number_Buffer[10] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
  18          //uchar Number_Buffer_Dot[10] = {0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xDF};
  19          
  20          void Delay(unsigned char time)    //延时函数单位1的时候3ms
  21          {
  22   1          unsigned char i;
  23   1          unsigned int j;
  24   1          for(i=time;i>0;i--)
  25   1          {
  26   2              for(j=40;j>0;j--);
  27   2          }
  28   1      }
  29          
  30          
  31          void uart(void) interrupt 4
  32          {
  33   1          
  34   1          unsigned char temp;
  35   1         
  36   1          if (RI)
  37   1          {
  38   2              RI=0;
  39   2      
  40   2              temp =SBUF ;
  41   2              Receive_Buffer[temp>>4] = temp&0x0F;
  42   2              }
  43   1      }
  44          
  45          void timer0(void) interrupt 1    //3ms一次
  46          {
  47   1          TH0=0xf0;
  48   1          TL0=0x60;
  49   1          //add your code here.
  50   1          Timer++;
  51   1              Display_Buffer[0]++;
  52   1              if (Timer >= 650)
  53   1              {
  54   2                  Timer = 0;
  55   2              }
C51 COMPILER V7.20   MAIN                                                                  06/13/2011 11:04:05 PAGE 2   

  56   1              if (Display_Buffer[0] > 4)
  57   1              {
  58   2                  Display_Buffer[0] = 1;
  59   2              }
  60   1      }
  61          
  62          void initTimer(void)
  63          {
  64   1          TMOD=0x1;
  65   1          TH0=0xF0;
  66   1          TL0=0x60;
  67   1      }
  68          
  69          void initUart(void)
  70          {
  71   1          TMOD|=0x20;
  72   1          SCON=0x50;
  73   1          TH1=0xfd;
  74   1          TL1=0xfd;
  75   1          TR1=1;
  76   1          ES=1;
  77   1      }
  78          
  79          void main(void)
  80          {
  81   1          EA = 1;   
  82   1          TR0=1;
  83   1          ET0=1;
  84   1          RE = 0;
  85   1          initTimer();
  86   1          initUart();
  87   1          
  88   1              Receive_Buffer[0] = 0;
  89   1              Display_Buffer[0] = 0;
  90   1          Display_Flag = 0;
  91   1      
  92   1          while (1)
  93   1          {
  94   2              //EA = 0;
  95   2              ES = 0;
  96   2              if (Receive_Buffer[4] == 0)
  97   2              {
  98   3                  switch (Display_Buffer[0])
  99   3                  {
 100   4                      case 1:
 101   4                          Dig2 = 0;
 102   4                          Dig3 = 0;
 103   4                          Dig4 = 0;
 104   4                          Dig1 = 1;
 105   4                          P1 = Number_Buffer[Receive_Buffer[0]];
 106   4                          
 107   4                          if (Timer >= 0 && Timer <= 200)    //当TIMER在0到100范围内时 点是亮的状态
 108   4                                              {
 109   5                              Dot = 1;
 110   5                                                  
 111   5                                              }
 112   4                                          else    //当TIMER在100到200范围内 点是灭的状态
 113   4                                              {
 114   5                              Dot = 0;
 115   5                                                 
 116   5                          }
 117   4                          Delay(1);
C51 COMPILER V7.20   MAIN                                                                  06/13/2011 11:04:05 PAGE 3   

 118   4                      break;
 119   4      
 120   4                      case 2:
 121   4                          Dig1 = 0;
 122   4                          Dig3 = 0;
 123   4                          Dig4 = 0;
 124   4                          Dig2 = 1;
 125   4                          P1 = Number_Buffer[Receive_Buffer[1]];
 126   4                          Delay(1);
 127   4                      break;
 128   4      
 129   4                      case 3:
 130   4                          Dig1 = 0;
 131   4                          Dig2 = 0;
 132   4                          Dig4 = 0;
 133   4                          Dig3 = 1;
 134   4                          P1 = Number_Buffer[Receive_Buffer[2]];
 135   4                          Delay(1);
 136   4                      break;
 137   4                
 138   4                      case 4:
 139   4                          Dig1 = 0;
 140   4                          Dig2 = 0;
 141   4                          Dig3 = 0;
 142   4                          Dig4 = 1;
 143   4                          P1 = Number_Buffer[Receive_Buffer[3]];
 144   4                          Delay(1);
 145   4                      break;
 146   4                  
 147   4                      default: break;
 148   4                  }
 149   3              }
 150   2              else if (Receive_Buffer[4] == 1)
 151   2              {
 152   3                  if (Timer >= 0 && Timer <= 400)
 153   3                  {
 154   4                      switch (Display_Buffer[0])
 155   4                      {
 156   5                          case 1:
 157   5                              Dig2 = 0;
 158   5                              Dig3 = 0;
 159   5                              Dig4 = 0;
 160   5                              Dig1 = 1;
 161   5                              P1 = Number_Buffer[Receive_Buffer[0]];
 162   5                              Delay(1);
 163   5                          break;
 164   5                          case 2:
 165   5                              Dig2 = 1;
 166   5                              Dig3 = 0;
 167   5                              Dig4 = 0;
 168   5                              Dig1 = 0;
 169   5                              P1 = Number_Buffer[Receive_Buffer[1]];
 170   5                              Delay(1);
 171   5                          break;
 172   5                          case 3:
 173   5                              Dig2 = 0;
 174   5                              Dig3 = 1;
 175   5                              Dig4 = 0;
 176   5                              Dig1 = 0;
 177   5                              P1 = Number_Buffer[Receive_Buffer[2]];
 178   5                              Delay(1);
 179   5                          break;
C51 COMPILER V7.20   MAIN                                                                  06/13/2011 11:04:05 PAGE 4   

 180   5                          case 4:
 181   5                              Dig2 = 0;
 182   5                              Dig3 = 0;
 183   5                              Dig4 = 1;
 184   5                              Dig1 = 0;
 185   5                              P1 = Number_Buffer[Receive_Buffer[3]];
 186   5                              Delay(1);
 187   5                          break;
 188   5                      }
 189   4                  }
 190   3                  else 
 191   3                  {
 192   4                      Dig1 = 0;
 193   4                      Dig2 = 0;
 194   4                      Dig3 = 0;
 195   4                      Dig4 = 0;
 196   4                  }
 197   3              }
 198   2              ES = 1;
 199   2             
 200   2          }
 201   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    414    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     23    ----
   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 + -