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

📄 时钟显示.lst

📁 基于51单片机的数字钟程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   时钟显蔩                                                              09/05/2006 21:35:27 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE 时钟显蔩
OBJECT MODULE PLACED IN 时钟显示.OBJ
COMPILER INVOKED BY: F:\程序\应用程序\Keil(微机原理)\C51\BIN\C51.EXE 时钟显示.c BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          #include<reg52.h>
   2          void time0(void);
   3          void time1(void);
   4          void charge(void);
   5          //sbit P25=P2^5;
   6          void which_row_key_down();
   7          void which_line_key_down();
   8          void delay_10ms();
   9          unsigned char if_keydown();
  10          
  11          unsigned char line,x;
  12          unsigned char i,j,d,buff;
  13          
  14          //unsigned char b;
  15          //unsigned char cycle;
  16          unsigned char timer,tim,a;
  17          /*unsigned char ho_high=0;
  18              unsigned char ho_low=0;
  19              unsigned char mi_high=0;
  20              unsigned char mi_low=0;
  21              unsigned char se_high=0;
  22              unsigned char se_low=0;*/
  23          unsigned char buffer_1[6],buffer_2[6];
  24          
  25              
  26          unsigned char code tab_1[10]={0x3f,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0x07,0x7f,0x6f};
  27          unsigned char code tab_2[6]={0X01,0X02,0X04,0x08,0X10,0X20};
  28          //unsigned char code b[16]={0x3f,0x06,0x5b,0x4f,0x67,0x66,0x6d,0x7d,0x7f,0x07,0x7f,0x6f,0x39,0x5c,0x79,0x7
             -1};
  29          
  30          //unsigned char r1; 
  31          void main(void) 
  32          { 
  33   1          buffer_1[0]=0;
  34   1          buffer_1[1]=0;
  35   1          buffer_1[2]=0;
  36   1          buffer_1[3]=0;
  37   1          buffer_1[4]=0;
  38   1          buffer_1[5]=0;
  39   1          buffer_2[0]=0;
  40   1          buffer_2[1]=0;
  41   1          buffer_2[2]=0;
  42   1          buffer_2[3]=0;
  43   1          buffer_2[4]=0;
  44   1          buffer_2[5]=0;
  45   1              buff=1;
  46   1          TMOD=1;
  47   1              IE=0X8a;
  48   1          TCON=0X11;
  49   1          PT0=1;
  50   1              
  51   1              tim=6; 
  52   1              timer=15;
  53   1              TH0=0Xbd;
  54   1              TL0=0Xc0;
C51 COMPILER V7.50   时钟显蔩                                                              09/05/2006 21:35:27 PAGE 2   

  55   1      //      TH1=0Xf8;
  56   1      //      TL1=0Xff;
  57   1              TR0=1;
  58   1              TR1=1;
  59   1          do{
  60   2               if(if_keydown())
  61   2                              {       
  62   3                                      //which_row_key_down();
  63   3                                      which_line_key_down();
  64   3                                      //x=line*4+row;
  65   3                                      //P2=b[x];
  66   3                              }
  67   2          }while(1);
  68   1      }
  69          void time0(void) interrupt 1 using 0
  70          {
  71   1          if(!timer)
  72   1              {
  73   2                  buffer_1[5]=buffer_1[5]+1;
  74   2              charge();
  75   2                  TH0=0Xbd;
  76   2                  TL0=0Xc0;
  77   2                      timer=15;
  78   2              }
  79   1              else{timer--;}
  80   1              TR0=1;
  81   1              //TH0=0Xff;
  82   1              //TL0=0Xf1;
  83   1              
  84   1      }
  85          void time1(void) interrupt 3 using 0
  86          {
  87   1          if(tim) 
  88   1              {   
  89   2                     a=6-tim;
  90   2                     P1=tab_2[a];
  91   2                         if(buff)
  92   2                         {
  93   3                         P2=tab_1[buffer_1[a]];
  94   3                         }
  95   2                         else
  96   2                         {
  97   3                             P2=tab_1[buffer_2[a]];
  98   3                         }
  99   2                         tim--;
 100   2                         if(tim==0)
 101   2                     {
 102   3                         tim=6;       
 103   3                     }
 104   2              }
 105   1      //   while(--tim);
 106   1          
 107   1          
 108   1          TR1=1;
 109   1          TH1=0Xf8;
 110   1              TL1=0Xff;
 111   1              
 112   1      }
 113          void charge(void)
 114          {
 115   1          if(buffer_1[5]==10)
 116   1              {
C51 COMPILER V7.50   时钟显蔩                                                              09/05/2006 21:35:27 PAGE 3   

 117   2                  buffer_1[5]=0;
 118   2                      buffer_1[4]=buffer_1[4]+1;
 119   2              }
 120   1          if(buffer_1[4]==6)
 121   1              {
 122   2                  buffer_1[4]=0;
 123   2                      buffer_1[3]=buffer_1[3]+1;
 124   2              }
 125   1          if(buffer_1[3]==10)
 126   1              {
 127   2                  buffer_1[3]=0;
 128   2                      buffer_1[2]=buffer_1[2]+1;
 129   2              }
 130   1          if(buffer_1[2]==6)
 131   1              {
 132   2                  buffer_1[2]=0;
 133   2                      buffer_1[1]=buffer_1[1]+1;
 134   2              }
 135   1          if(buffer_1[1]==10&&buffer_1[0]!=2)
 136   1              {
 137   2                  buffer_1[1]=0;
 138   2                      buffer_1[0]=buffer_1[0]+1;
 139   2              }
 140   1          if(buffer_1[1]==4&&buffer_1[0]==2)
 141   1              {
 142   2                  buffer_1[1]=0;
 143   2                      buffer_1[0]=0;
 144   2              }
 145   1      }
 146          
 147          unsigned char if_keydown()
 148          {
 149   1              P0=0xf0;
 150   1              //P0=0xf0;
 151   1              i=P0;
 152   1              if(i==0x70)
 153   1              {
 154   2                      delay_10ms();
 155   2                      i=P0;
 156   2                      if(i==0x70)
 157   2                              {return 1;}
 158   2                      else return 0;
 159   2              }
 160   1              return 0;
 161   1      }
 162          /*void which_row_key_down()
 163          {
 164                  P0=0xf0;
 165                  c=P0;
 166                  switch(c)
 167                  {
 168                                  case 0x70:row=0;break;
 169                                  case 0xb0:row=1;break;
 170                                  case 0xd0:row=2;break;
 171                                  case 0xe0:row=3;break;
 172                  }
 173          }*/
 174          void which_line_key_down()
 175          {
 176   1              P0=0x0f;
 177   1              d=P0;
 178   1              switch(d)
C51 COMPILER V7.50   时钟显蔩                                                              09/05/2006 21:35:27 PAGE 4   

 179   1              {
 180   2                              case 0x07:line=3,buff=0;break;
 181   2                              case 0x0b:line=2;break;
 182   2                              case 0x0d:line=1;break;
 183   2                              case 0x0e:line=0;break;
 184   2              }
 185   1      }
 186          void delay_10ms()
 187          {
 188   1              for(i=0;i<2;i++)
 189   1              for(j=0;j<40;j++)
 190   1              ;
 191   1      }
C51 COMPILER V7.50   时钟显蔩                                                              09/05/2006 21:35:27 PAGE 5   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION main (BEGIN)
                                           ; SOURCE LINE # 31
                                           ; SOURCE LINE # 32
                                           ; SOURCE LINE # 33
0000 E4                CLR     A
0001 F500        R     MOV     buffer_1,A
                                           ; SOURCE LINE # 34
0003 F500        R     MOV     buffer_1+01H,A
                                           ; SOURCE LINE # 35
0005 F500        R     MOV     buffer_1+02H,A
                                           ; SOURCE LINE # 36
0007 F500        R     MOV     buffer_1+03H,A
                                           ; SOURCE LINE # 37
0009 F500        R     MOV     buffer_1+04H,A
                                           ; SOURCE LINE # 38
000B F500        R     MOV     buffer_1+05H,A
                                           ; SOURCE LINE # 39
000D F500        R     MOV     buffer_2,A
                                           ; SOURCE LINE # 40
000F F500        R     MOV     buffer_2+01H,A
                                           ; SOURCE LINE # 41
0011 F500        R     MOV     buffer_2+02H,A
                                           ; SOURCE LINE # 42
0013 F500        R     MOV     buffer_2+03H,A
                                           ; SOURCE LINE # 43
0015 F500        R     MOV     buffer_2+04H,A
                                           ; SOURCE LINE # 44
0017 F500        R     MOV     buffer_2+05H,A
                                           ; SOURCE LINE # 45
0019 750001      R     MOV     buff,#01H
                                           ; SOURCE LINE # 46
001C 758901            MOV     TMOD,#01H
                                           ; SOURCE LINE # 47
001F 75A88A            MOV     IE,#08AH
                                           ; SOURCE LINE # 48
0022 758811            MOV     TCON,#011H
                                           ; SOURCE LINE # 49
0025 D2B9              SETB    PT0
                                           ; SOURCE LINE # 51
0027 750006      R     MOV     tim,#06H
                                           ; SOURCE LINE # 52
002A 75000F      R     MOV     timer,#0FH
                                           ; SOURCE LINE # 53
002D 758CBD            MOV     TH0,#0BDH
                                           ; SOURCE LINE # 54
0030 758AC0            MOV     TL0,#0C0H
                                           ; SOURCE LINE # 57
0033 D28C              SETB    TR0
                                           ; SOURCE LINE # 58
0035 D28E              SETB    TR1
0037         ?C0003:
                                           ; SOURCE LINE # 59
                                           ; SOURCE LINE # 60
0037 120000      R     LCALL   if_keydown
003A EF                MOV     A,R7
003B 60FA              JZ      ?C0003
                                           ; SOURCE LINE # 61
                                           ; SOURCE LINE # 63
003D 120000      R     LCALL   which_line_key_down
C51 COMPILER V7.50   时钟显蔩                                                              09/05/2006 21:35:27 PAGE 6   

                                           ; SOURCE LINE # 66
                                           ; SOURCE LINE # 67
0040 80F5              SJMP    ?C0003
             ; FUNCTION main (END)

             ; FUNCTION time0 (BEGIN)
0000 C0E0              PUSH    ACC
0002 C0F0              PUSH    B
0004 C083              PUSH    DPH
0006 C082              PUSH    DPL
0008 C0D0              PUSH    PSW
000A 75D000            MOV     PSW,#00H
                                           ; SOURCE LINE # 69
                                           ; SOURCE LINE # 71
000D E500        R     MOV     A,timer
000F 7010              JNZ     ?C0006
                                           ; SOURCE LINE # 72
                                           ; SOURCE LINE # 73

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -