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

📄 text1.lst

📁 基于89S52的篮球计时计分器,实现外部中断和定时器的使用.用2803驱动共阳数码管.
💻 LST
字号:
C51 COMPILER V7.06   TEXT1                                                                 05/16/2008 18:17:27 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\Program Files\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //#include <reg52.h>
   2          #include <reg52.h>
   3          //#include "AT89X52.H"
   4          //#include <intrins.h>
   5          #define TIME0H 0xFC
   6          #define TIME0L 0x17     
   7          #define TIME1H 0x3C
   8          #define TIME1L 0xB0             
   9          
  10                  
  11          unsigned char code table[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6};
  12          unsigned char code dis_digit[13]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFE,0xFD,0xFB,0xF7,0xEF};
  13          unsigned char temp[13];
  14          unsigned char uc_TimeCount=0;
  15          int  dis_index;
  16          sbit key1=P3^0;
  17          sbit key2=P3^1;
  18          sbit key3=P3^4;
  19          sbit key4=P3^5;
  20          sbit BEEP=P0^5;
  21          sbit Light=P0^6;
  22          int key;
  23          int flag;
  24          int score=0;
  25          int score2=0;
  26          int second24,second,minute,jie;
  27          
  28          void delay(char i)                              
  29          {
  30   1              unsigned char k;
  31   1              for( k=0; k<i; k++)
  32   1              {
  33   2                      
  34   2                      ;
  35   2              }
  36   1      }                         //延时
  37          
  38          int  keyscan()
  39          {
  40   1        int i;
  41   1        P3=0xFF;
  42   1        if(key1==0)
  43   1        {
  44   2            delay(6);
  45   2            if(key1==0)
  46   2            {
  47   3               delay(6);
  48   3               if(key1==0)
  49   3               {
  50   4                               do{;}while(key1!=1);
  51   4                               i=1;
  52   4               }
  53   3            }
  54   2         }
  55   1         if(key2==0)
C51 COMPILER V7.06   TEXT1                                                                 05/16/2008 18:17:27 PAGE 2   

  56   1        {
  57   2            delay(6);
  58   2            if(key2==0)
  59   2            {
  60   3               delay(6);
  61   3               if(key2==0)
  62   3               {
  63   4                               do{;}while(key2!=1);
  64   4                               i=2;
  65   4               }
  66   3            }
  67   2         }
  68   1         if(key3==0)
  69   1        {
  70   2            delay(6);
  71   2            if(key3==0)
  72   2            {
  73   3               delay(6);
  74   3               if(key3==0)
  75   3               {
  76   4                               do{;}while(key3!=1);
  77   4                               i=3;
  78   4               }
  79   3            }
  80   2         }
  81   1         if(key4==0)
  82   1        {
  83   2            delay(6);
  84   2            if(key4==0)
  85   2            {
  86   3               delay(6);
  87   3               if(key4==0)
  88   3               {
  89   4                               do{;}while(key4!=1);
  90   4                               i=4;
  91   4               }
  92   3            }
  93   2         }
  94   1         return(i);
  95   1      }
  96          
  97          /*void inc_min()
  98          {
  99           
 100           minute--;
 101           if(minute <0)
 102           {
 103            minute = 12;
 104            jie++;
 105            flag=1;
 106            ET1=0;
 107           }
 108           temp[10]=table[jie]; 
 109           temp[1] = table[minute / 10];  // 分十位
 110           temp[0] = table[minute % 10];  // 分个位
 111          }
 112          
 113          void inc_sec()
 114          {
 115           
 116           second24--;
 117           second--;
C51 COMPILER V7.06   TEXT1                                                                 05/16/2008 18:17:27 PAGE 3   

 118           if(second<0)
 119           {
 120            second=59;
 121            inc_min();
 122           }
 123           if(second24==0)
 124           {
 125            second24=24;
 126            flag=1;
 127            ET1=0;
 128           }
 129           temp[8]=table[second/10];
 130           temp[9]=table[second%10]; 
 131           temp[11]=table[second24/10];
 132           temp[12]=table[second24%10];
 133          }
 134          
 135          */
 136          
 137          void vTimer1(void) interrupt 3        //中断1程序
 138          {
 139   1          TH1=TIME1H;               //TIME1H=0x3C
 140   1          TL1=TIME1L;               //TIME1L=0xB0
 141   1          flag=0;
 142   1          uc_TimeCount++;           //倒计时开始
 143   1          if(uc_TimeCount==20)
 144   1          {
 145   2              uc_TimeCount=0;
 146   2              second24--;
 147   2                  second--;
 148   2              if(second24==0)
 149   2              {
 150   3                  second24=24;             //24秒倒计时
 151   3              flag=1;
 152   3              ET1=0;
 153   3              }
 154   2              if(second==-1)
 155   2              {
 156   3              second=59;
 157   3                  minute--;
 158   3                  if(minute==-1)
 159   3                  {
 160   4                      minute=12;
 161   4                          second=0;
 162   4                              second24=24;
 163   4                      jie++;
 164   4                              flag=1;
 165   4                          ET1=0;
 166   4                  }            
 167   3          }
 168   2          }
 169   1              temp[10]=table[jie]; 
 170   1          temp[1] = table[minute / 10];  // 分十位
 171   1          temp[0] = table[minute % 10];  // 分个位
 172   1              temp[8]=table[second/10];
 173   1          temp[9]=table[second%10]; 
 174   1          temp[11]=table[second24/10];
 175   1          temp[12]=table[second24%10];
 176   1      }
 177          
 178          
 179           void vTimer0(void) interrupt 1          //1毫秒刷新一次
C51 COMPILER V7.06   TEXT1                                                                 05/16/2008 18:17:27 PAGE 4   

 180          {   
 181   1          TH0=TIME0H;                                                 
 182   1              TL0=TIME0L;
 183   1      
 184   1              if(dis_index>=0 && dis_index<8)
 185   1              { 
 186   2                  P1=dis_digit[dis_index];
 187   2                      P0=0xFF;
 188   2                      P2=temp[dis_index];
 189   2              }
 190   1              else
 191   1              if(dis_index>=8 && dis_index<13)
 192   1              {
 193   2                  P1=0xFF;
 194   2                      P0=dis_digit[dis_index];
 195   2                      P2=temp[dis_index];
 196   2              }
 197   1              dis_index++;
 198   1              if(dis_index==13)
 199   1              {
 200   2                  dis_index=0;
 201   2              }
 202   1      }
 203          
 204          
 205          
 206           void intersvr0(void) interrupt 0 using 1
 207          {   
 208   1          ET1=~ET1;
 209   1      }
 210          
 211           void intersvr1(void) interrupt 2 using 2
 212          {   
 213   1          second24=24;
 214   1      }
 215          
 216          void main(void)
 217          {
 218   1              //初始化全局变量                
 219   1          P3=0xFF;
 220   1              P2 = 0;
 221   1          P1 = 0;
 222   1              P0 = 0x01;
 223   1      
 224   1          PX0=0;
 225   1              PX1=0;
 226   1              PT0=1;
 227   1              PT1=0;
 228   1              TMOD=0x11;
 229   1      
 230   1              TH0=TIME0H;
 231   1              TL0=TIME0L;
 232   1                       
 233   1              TR0=1;                   //开启定时器0
 234   1              ET0=1;                   //开定时器0中断
 235   1          EX0=1;
 236   1          EX1=1;
 237   1      
 238   1              TH1=TIME1H;
 239   1              TL1=TIME1L;
 240   1              TR1=1;                   //开启定时器1
 241   1              ET1=1;                   //开定时器1中断
C51 COMPILER V7.06   TEXT1                                                                 05/16/2008 18:17:27 PAGE 5   

 242   1      //      ET2=0;
 243   1          IT0=1;
 244   1              EA=1;                    //开启总中断
 245   1          uc_TimeCount=   0;
 246   1              flag=0;
 247   1              second24=24;
 248   1          second=0;
 249   1          minute=12;
 250   1          score=0;
 251   1              score2=0;
 252   1              jie=1;  
 253   1              temp[0]=table[minute%10];
 254   1              temp[1]=table[minute/10];
 255   1          temp[8]=table[second/10];
 256   1          temp[9]=table[second%10];
 257   1          temp[11]=table[second24/10];
 258   1          temp[12]=table[second24%10];
 259   1              temp[2]=table[score/100];
 260   1          temp[3]=table[(score%100)/10];
 261   1          temp[4]=table[(score%100)%10];
 262   1          temp[5]=table[score2/100];
 263   1          temp[6]=table[(score2%100)/10];
 264   1          temp[7]=table[(score2%100)%10];
 265   1          temp[10]=table[jie]; 
 266   1          dis_index = 0;
 267   1      
 268   1      
 269   1          while(1)
 270   1              { 
 271   2                 if(flag==1)
 272   2                 {
 273   3                    BEEP=0;
 274   3                        Light=0;
 275   3                 }
 276   2                 key=keyscan();
 277   2             if(key)
 278   2              {
 279   3                  switch(key)
 280   3                  {
 281   4                      case 1 :
 282   4                              score++;
 283   4                                              temp[2]=table[score/100];
 284   4                          temp[3]=table[(score%100)/10];
 285   4                          temp[4]=table[(score%100)%10];
 286   4                      break ;
 287   4                                       case 2 :
 288   4                              score--;
 289   4                                              if(score==-1)
 290   4                                              {score=0;}
 291   4                                              temp[2]=table[score/100];
 292   4                          temp[3]=table[(score%100)/10];
 293   4                          temp[4]=table[(score%100)%10];
 294   4                        break;
 295   4                      case 3 :
 296   4                              score2++;
 297   4                                              temp[5]=table[score2/100];
 298   4                          temp[6]=table[(score2%100)/10];
 299   4                          temp[7]=table[(score2%100)%10];
 300   4                      break ;
 301   4                                       case 4 :
 302   4                              score2--;
 303   4                                              if(score2==-1)
C51 COMPILER V7.06   TEXT1                                                                 05/16/2008 18:17:27 PAGE 6   

 304   4                                              {score2=0;}
 305   4                                              temp[5]=table[score2/100];
 306   4                          temp[6]=table[(score2%100)/10];
 307   4                          temp[7]=table[(score2%100)%10];
 308   4                        break;
 309   4                       default :
 310   4                      break ;
 311   4                   }
 312   3                   }
 313   2              }
 314   1      }


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