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

📄 dm114.lst

📁 LED数码管的简单控制程序
💻 LST
字号:
C51 COMPILER V7.06   DM114                                                                 02/20/2008 14:33:42 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DM114
OBJECT MODULE PLACED IN dm114.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dm114.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <reg51.h>
   2          
   3          
   4          sbit DIN=P1^0;
   5          sbit CLK=P1^1;
   6          sbit STB=P1^2;
   7          sbit OE =P1^3;
   8          sbit key0=P1^4;
   9          unsigned char mode,number,p;
  10          unsigned char flag;
  11          
  12          unsigned  char code ANODE[8][90]={0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x
             -92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x
             -92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x
             -92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x
             -92,0x24,0x49,0x92,
  13                                            0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x
             -49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x
             -49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x
             -49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x
             -49,0x92,0x24,0x49,
  14                                                                        0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x4
             -9,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x4
             -9,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x4
             -9,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,0x49,0x92,0x24,
  15                                                                        0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb
             -6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb
             -6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb
             -6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,
  16                                            0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x
             -6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x
             -6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x
             -6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x
             -6d,0xdb,0xb6,0x6d,
  17                                                                            0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0
             -xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0
             -xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0
             -xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,0x6d,0xdb,0xb6,
  18                                                                            0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0
             -xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0
             -xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0
             -xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
  19                                                                            0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0
             -x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0
             -x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0
             -x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
  20          
  21          void send(unsigned char add)
  22          {unsigned char ADS,j;
  23   1       ADS=add; 
  24   1      for(j=0;j<8;j++)
  25   1        { 
  26   2          CLK=0;
  27   2          DIN=ADS&0x01;
  28   2          ADS=ADS>>1;
C51 COMPILER V7.06   DM114                                                                 02/20/2008 14:33:42 PAGE 2   

  29   2          CLK=1; 
  30   2             } 
  31   1       }
  32          
  33          
  34          void delay(unsigned int n)
  35          {unsigned int k;
  36   1      while(n--)
  37   1      {for(k=0;k<250;k++)
  38   2       {;}
  39   2       }
  40   1      }
  41          /////////////////////////////////////////////////////
  42          void clock_inital0() reentrant                    //定时器0的初始化;
  43          {TR0=0;TH0=0x3c;TL0=0xb0;TR0=1;}
  44          
  45          ///////////////////////////////////////////////////
  46          void clock_inital1() reentrant                   //定时器1的初始化;
  47          {TR1=0;
  48   1       TH1=0x00;
  49   1       TL1=0x00;
  50   1       TR1=1;}
  51          //////////////////////////////////////////////////
  52          void keynum0()                      //display mode
  53          {
  54   1         flag++;
  55   1         mode=0;
  56   1         if(flag>=9) {flag=0; mode=1;}
  57   1      
  58   1       }
  59          ////////////////////////////////////////
  60          void key()                                     //键盘子程序;
  61          { unsigned char keycode;
  62   1        key0=1;
  63   1       
  64   1        keycode=P1&0x10;                 
  65   1       if(keycode!=0x10)                            //判断是否有键按下;
  66   1       {
  67   2         delay(20);                                 //延时去抖动;
  68   2         keycode=P1&0x10; 
  69   2         while(keycode!=0x10)                       //确认有键按下;
  70   2         {
  71   3            if(key0==0)                             //KEY0按下后执行子程序;
  72   3                { 
  73   4                   keynum0();                           //       
  74   4                          while(1)                          //等待键释放; 
  75   4              { if(key0==1) break;
  76   5                        delay(10);
  77   5                           }
  78   4                            }
  79   3           break; }
  80   2         }
  81   1        
  82   1      }
  83          ////////////////////////////////////////////////
  84          
  85          ///////////////////////////////////////////////////
  86          main()
  87          {
  88   1       
  89   1        TMOD=0x11;
  90   1        EA=1;
C51 COMPILER V7.06   DM114                                                                 02/20/2008 14:33:42 PAGE 3   

  91   1        TF1=0;
  92   1        TF0=0;
  93   1        clock_inital1();
  94   1        clock_inital0();
  95   1        ET1=1;
  96   1        ET0=1;
  97   1      
  98   1        STB=0;
  99   1        OE=0;
 100   1        flag=1;
 101   1        mode=0;
 102   1        number=0;
 103   1        p=0;
 104   1      
 105   1      
 106   1      
 107   1        while(1)  
 108   1        {      if((P1&0x10)!=0x10)
 109   2          {key();}
 110   2         }
 111   1      
 112   1        
 113   1      }
 114          
 115          ///////////////////////////////////////////////////////////////
 116          void clk_int0() interrupt 1                 //定时器0中断程序;
 117          { 
 118   1         clock_inital0();  
 119   1      
 120   1         number++;
 121   1      
 122   1      }
 123          ///////////////////////////////////////////////////////////////
 124          void clk_int1() interrupt 3  
 125          { unsigned char i;   
 126   1         clock_inital1();
 127   1        if(mode==0)
 128   1         {switch(flag)
 129   2          { 
 130   3           case 1:  for(i=0;i<90;i++)
 131   3                         {send(ANODE[0][i]);}   
 132   3                                  STB=1;
 133   3                                  STB=0;
 134   3                                      break;
 135   3               case 2:  for(i=0;i<90;i++)
 136   3                         {send(ANODE[1][i]);}   
 137   3                                  STB=1;
 138   3                                  STB=0;
 139   3                                      break;
 140   3               case 3:  for(i=0;i<90;i++)
 141   3                         {send(ANODE[2][i]);}   
 142   3                                  STB=1;
 143   3                                  STB=0;
 144   3                                      break;
 145   3               case 4:  for(i=0;i<90;i++)
 146   3                         {send(ANODE[3][i]);}   
 147   3                                  STB=1;
 148   3                                  STB=0;
 149   3                                      break;
 150   3               case 5:  for(i=0;i<90;i++)
 151   3                         {send(ANODE[4][i]);}   
 152   3                                  STB=1;
C51 COMPILER V7.06   DM114                                                                 02/20/2008 14:33:42 PAGE 4   

 153   3                                  STB=0;
 154   3                                      break;
 155   3           case 6:  for(i=0;i<90;i++)
 156   3                         {send(ANODE[5][i]);}   
 157   3                                  STB=1;
 158   3                                  STB=0;
 159   3                                      break;
 160   3           case 7:  for(i=0;i<90;i++)
 161   3                         {send(ANODE[6][i]);}   
 162   3                                  STB=1;
 163   3                                  STB=0;
 164   3                                      break;
 165   3               case 8:  for(i=0;i<90;i++)
 166   3                         {send(ANODE[7][i]);}   
 167   3                                  STB=1;
 168   3                                  STB=0;
 169   3                                      break;
 170   3      
 171   3           default : flag=1;break;
 172   3             }
 173   2         
 174   2               }
 175   1      
 176   1        if(mode==1)
 177   1        {if(number>=12){ number=0;p++;}
 178   2                       if(p==7) p=0;
 179   2                       for(i=0;i<90;i++)
 180   2                            { send(ANODE[p][i]);}  STB=1;STB=0;
 181   2        }
 182   1      
 183   1      
 184   1      }


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