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

📄 to.lst

📁 基于AT89C51系列单片机的按键识别的C51程序定时器T0的应用---9.9秒计时设
💻 LST
字号:
C51 COMPILER V7.50   TO                                                                    09/02/2006 14:46:41 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE TO
OBJECT MODULE PLACED IN TO.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE TO.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <AT89X51.H>
   2          
   3          unsigned char code table[]={0x3f,0x06,0x5b,0x4f, 
   4                                       0x66,0x6d,0x7d,0x07, 
   5                                       0x7f,0x6f,}; 
   6          unsigned char sec;        //定义计数值,每过1/10秒,sec加一
   7          unsigned char keycnt=0;   
   8          unsigned int tcnt;        //键值判断
   9          
  10          
  11          sbit gewei=P2^0;               //个位选通定义
  12          sbit shiwei=P2^1;              //十位选通定义
  13          void Delay(unsigned int tc)     //延时程序
  14          {
  15   1              while( tc != 0 )                        
  16   1              {
  17   2                      unsigned int i;                 
  18   2                      for(i=0; i<100; i++);   
  19   2                      tc--;                                   
  20   2              }
  21   1      }
  22          void LED()                  //LED显示函数
  23          {
  24   1             shiwei=0;
  25   1                 P0=table[sec/10];
  26   1                 Delay(8);
  27   1                 shiwei=1;
  28   1                 gewei=0;
  29   1                 P0=table[sec%10];
  30   1                 Delay(5);  
  31   1                 gewei=1;
  32   1      }
  33          void KEY()          //按键扫描程序
  34          {
  35   1      unsigned char i,j; 
  36   1      if(P3_0==0) 
  37   1        { 
  38   2          for(i=20;i>0;i--) 
  39   2          for(j=248;j>0;j--); 
  40   2          if(P3_0==0) 
  41   2            { 
  42   3              keycnt++; 
  43   3              switch(keycnt)  //按下次数判断
  44   3                { 
  45   4                  case 1:     //第一次按下
  46   4                    TH0=0x06; //对TH0 TL0赋值
  47   4                    TL0=0x06; 
  48   4                    TR0=1;    //开始定时
  49   4                    break; 
  50   4                  case 2:     //第二次按下 
  51   4                    TR0=0;    //定时结束
  52   4                    break; 
  53   4                  case 3:     //第三次按下
  54   4                   keycnt=0;  //重新开始判断键值
  55   4                   sec=0;     //计数重新从零开始
C51 COMPILER V7.50   TO                                                                    09/02/2006 14:46:41 PAGE 2   

  56   4                    break; 
  57   4                } 
  58   3              while(P3_0==0); 
  59   3            } 
  60   2        }
  61   1      }
  62          
  63          void t0(void) interrupt 1 using 0  //定时中断服务函数
  64          { 
  65   1      tcnt++;        //每过250ust tcnt加一
  66   1      if(tcnt==400)  //计满400次(1/10秒)时
  67   1        { 
  68   2          tcnt=0;   //重新再计
  69   2          sec++;    
  70   2          if(sec==100) //定时10秒,在从零开始计时
  71   2            { 
  72   3              sec=0; 
  73   3            } 
  74   2        } 
  75   1      }
  76          void main(void) 
  77          { 
  78   1      TMOD=0x02;  //定时器工作在方式2
  79   1      ET0=1; 
  80   1      EA=1; 
  81   1      sec=0; 
  82   1      while(1) 
  83   1        {   
  84   2            KEY(); 
  85   2                LED();
  86   2                
  87   2        } 
  88   1      } 


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