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

📄 text1.lst

📁 电路由AT89C52
💻 LST
字号:
C51 COMPILER V8.02   TEXT1                                                                 01/02/2009 16:32:43 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: D:\KEIL\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <AT89X52.H>
   2          unsigned char ppa;              // ppa,ppb,ppc是1,2,3数码管显示的内容
   3          unsigned char ppb;
   4          unsigned char ppc;
   5          unsigned char code ps[]={1,1,2};
   6          unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
   7          0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
   8          unsigned char funcount;   //function key累加数 
   9          unsigned char errorflag;  //正确标志
  10          unsigned char righitflag; //错误标志
  11          int aa;    //一般时扫描
  12          int bb;    //报警时的定时
  13          int cc;    //开锁时扫描
  14          unsigned char digitcount; //data key累加数
  15          void main(void)
  16          {
  17   1       unsigned char i,j;
  18   1       funcount=0;
  19   1       digitcount=0;
  20   1       errorflag=0;
  21   1       righitflag=0;
  22   1       ppa=0;
  23   1       ppb=0;
  24   1       ppc=0;
  25   1       aa=0;
  26   1       bb=0;
  27   1       cc=0;
  28   1       TMOD=0x01;
  29   1       TH0=(65536-1000)/256;
  30   1       TL0=(65536-1000)%256;
  31   1       TR0=1;
  32   1       ET0=1;
  33   1       EA=1;
  34   1       P2_0=0;
  35   1       P3_0=0;
  36   1       while(1)
  37   1       { if(funcount==0)                 
  38   2         { ppa=digitcount;       //data key累加数给ppa
  39   3          }
  40   2         if(funcount==1)
  41   2          { ppb=digitcount;     //data key累加数给ppb
  42   3          // digitcount=0;
  43   3          }
  44   2         if(funcount==2)
  45   2         { ppc=digitcount;      //data key累加数给ppc
  46   3           //digitcount=0;
  47   3         }
  48   2         if(P3_7==0) //data key
  49   2         {
  50   3         for(i=18;i>0;i--)
  51   3         for(j=248;j>0;j--);
  52   3         if(P3_7==0)
  53   3          {for(i=88;i>0;i--)
  54   4           for(j=248;j>0;j--);
  55   4               if(P3_7==1)
C51 COMPILER V8.02   TEXT1                                                                 01/02/2009 16:32:43 PAGE 2   

  56   4          if(digitcount==9)
  57   4          {
  58   5           digitcount=0;       
  59   5          }
  60   4         else digitcount++;  //       data key累加 
  61   4        
  62   4          }
  63   3        }
  64   2          
  65   2        if(P3_6==0) //function key 
  66   2        { 
  67   3         for(i=18;i>0;i--) 
  68   3         for(j=248;j>0;j--); 
  69   3         if(P3_6==0) 
  70   3          {for(i=88;i>0;i--) 
  71   4           for(j=248;j>0;j--); 
  72   4               if(P3_6==1) 
  73   4           funcount++;
  74   4         
  75   4         if(funcount==1)             //第一次按下
  76   4               digitcount=0;         //data key累加数清0
  77   4         if(funcount==2)             //第二次按下
  78   4               digitcount=0;         //data key累加数清0
  79   4      
  80   4         if(funcount==3)             //第三次按下
  81   4          {
  82   5               digitcount=0;
  83   5               if(ps[0]==ppa&&ps[1]==ppb&&ps[2]==ppc) //对3个数值进行比较
  84   5                 {righitflag=1;                  //数值正确
  85   6                  errorflag=0;                   //错误标志清0
  86   6                      }
  87   5               else
  88   5                { righitflag=0 ;                //数值错误
  89   6                  errorflag++;                  //错误标志+1
  90   6                 }
  91   5               }
  92   4          }
  93   3        }
  94   2       }
  95   1       
  96   1      }
  97          void t0(void) interrupt 1 using 0 
  98          {TH0=(65536-1000)/256;          //定时器付初值
  99   1       TL0=(65536-1000)%256; 
 100   1       if(funcount==0)                   
 101   1         { ppa=digitcount;       //data key累加数给ppa
 102   2          }
 103   1       if(funcount==1)
 104   1          { ppb=digitcount;     //data key累加数给ppb
 105   2          // digitcount=0;
 106   2          }
 107   1       if(funcount==2)
 108   1         { ppc=digitcount;      //data key累加数给ppc
 109   2           //digitcount=0;
 110   2         }
 111   1       if(funcount==3)
 112   1         {funcount=0;
 113   2          
 114   2          }
 115   1      
 116   1      b: if(bb==0)                     //判断在不在报警
 117   1       { P3_0=0;                               //不再报警  报警器为低电平
C51 COMPILER V8.02   TEXT1                                                                 01/02/2009 16:32:43 PAGE 3   

 118   2       if(righitflag==1)               //数值正确
 119   2        {                                              //显示 OPEN
 120   3          if(cc==0)
 121   3         {
 122   4          P2=0xfe;
 123   4              P0=dispcode[0];                                                                                                   
 124   4          }
 125   3         if(cc==1)
 126   3         {
 127   4           P2=0xfd;
 128   4           P0=0x73;
 129   4         }
 130   3         if(cc==2)
 131   3          {
 132   4           P2=0xfb;
 133   4           P0=0x79;
 134   4          }
 135   3         if(cc==3)
 136   3          {
 137   4           P2=0xf7;
 138   4           P0=0x37;
 139   4          }
 140   3         cc++;
 141   3         if(cc==4)
 142   3         cc=0;
 143   3        }
 144   2       if(errorflag==3)        //连续错误输入3次  
 145   2        {errorflag=0;          //错误标志清0
 146   3         P2=0xff;                      //数码管不显示
 147   3         P3_0=1;                       //报警器报警
 148   3         bb=3000;                      //延时3秒
 149   3         goto b;
 150   3        }
 151   2        if( righitflag!=1&&errorflag!=3) //除去特殊情况
 152   2        {if(aa==0)
 153   3         {
 154   4          P2=0xfe;                     //第一个数码管亮其他息灭
 155   4              P0=dispcode[ppa];        //     显示ppa                                                                                   
 156   4          }
 157   3         if(aa==1)
 158   3         {
 159   4           P2=0xfd;                   //第二个数码管亮其他息灭
 160   4           P0=dispcode[ppb];   //     显示ppb
 161   4         }
 162   3         if(aa==2)
 163   3          {
 164   4           P2=0xfb;                   //第三个数码管亮其他息灭
 165   4           P0=dispcode[ppc];  //      显示ppc 
 166   4          }
 167   3         aa++;
 168   3         if(aa==3)
 169   3         aa=0;
 170   3        }
 171   2       }
 172   1       else 
 173   1        {bb--;
 174   2         ppa=0;
 175   2         ppb=0;
 176   2         ppc=0;
 177   2       }
 178   1      }

C51 COMPILER V8.02   TEXT1                                                                 01/02/2009 16:32:43 PAGE 4   


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