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

📄 复件 7.lst

📁 刚学时编的小程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V8.02   复件_7                                                                03/12/2007 13:13:46 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 复件_7
OBJECT MODULE PLACED IN 复件 7.OBJ
COMPILER INVOKED BY: d:\Keil 8\C51\BIN\C51.EXE 复件 7.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <AT89X51.H>
   2          
   3          unsigned char code duanma[]={0x3f,0x06,0x5b,0x4f,                                 //定义段码
   4          0x66,0x6d,0x7d,0x07,
   5          0x7f,0x6f,0x77,0x7c,
   6          0x39,0x5e,0x79,0x71,
   7          0x40,0x00,0xbf,0x86,
   8          0xdb,0xcf,0xe6,0xed,
   9          0xfd,0x87,0xff,0xef};                                                                                                                                                                           
  10          unsigned char weima[]={0xfe,0xfd,0xfb,0xf7,                     //定义扫描位码
  11          0xef,0xdf,0xbf,0x7f};
  12          unsigned char shijian[8]={0,0,16,0,0,16,0,0};                                                                   //时间存储单元
  13          unsigned char lucheng[8]={0,0,18,0,16,0,18,0};                  //路程存储单元
  14          char jiage[8]={2,19,17,0,19,17,5,20} ;                          //价格存储单元
  15          unsigned char zongjia[8]={0,18,17,17,17,0,18,0} ;               //总价存储单元
  16          char mima[8]={16,16,16,16,16,16,16,16} ;                        //输密码存储单元
  17          unsigned char mima1[8]={1,2,3,4,5,6,7,8};                       //原始密码存储单元
  18          unsigned char lu,x,y,cuo=0,hour1,w=0,m=0,n;                     //定义相关变量
  19          int i;
  20          unsigned char dis;
  21          char second;
  22          char minite,minite2;
  23          char hour;
  24          unsigned int tcnt,tcnt2;
  25          unsigned char ms,a,c;
  26          sbit k0=P1^0;
  27          sbit k1=P1^1;
  28          sbit k2=P1^2;
  29          sbit k3=P1^3;
  30          bit k=0;
  31          
  32          delay(int t)                                                    //延时子程序
  33          {
  34   1              int s,e;
  35   1              for(s=0;s<t;s++)
  36   1                      for(e=0;e<100;e++);
  37   1      }
  38          
  39          yijian()                                                        //一键是否按下子程序
  40          {
  41   1              char q=0;
  42   1              if(k0==0)
  43   1              {
  44   2                      delay(2);
  45   2                      if(k0==0)
  46   2                      {
  47   3                              q=1;    
  48   3                              while(1)        if(k0==1)  break;
  49   3                      }
  50   2              }
  51   1              return q;
  52   1      }
  53          
  54          erjian()                                                        //二键是否按下子程序
  55          {
C51 COMPILER V8.02   复件_7                                                                03/12/2007 13:13:46 PAGE 2   

  56   1              char q=0;
  57   1              if(k1==0)
  58   1              {
  59   2                      delay(2);
  60   2                      if(k1==0)
  61   2                      {
  62   3                              q=1;
  63   3                              while(1)        if(k1==1)  break;
  64   3                      }
  65   2              }
  66   1              return q;
  67   1      }
  68          
  69          shangjian()                                                     //三键是否按下子程序
  70          {
  71   1              char q=0;
  72   1              if(k2==0)
  73   1              {
  74   2                      delay(2);
  75   2                      if(k2==0)
  76   2                      {
  77   3                              q=1;
  78   3                              while(1)        if(k2==1)  break;
  79   3                      }
  80   2              }
  81   1              return q;
  82   1      }
  83          
  84          kaiguan()                                                       //白天晚上转换开关
  85          {
  86   1              char q=0;
  87   1              if(k3==0)
  88   1              {
  89   2                      delay(2);
  90   2                      if(k3==0)
  91   2                      {
  92   3                               q=1;
  93   3                      }
  94   2              }
  95   1              return q;
  96   1      }
  97          
  98          mi()                                                            //输入密码子程序
  99          {
 100   1              char h;                                                       //定义局部变量
 101   1              if(w==1)                                                      //检测是否已经输错三次
 102   1              {goto loop;}                                                  //错三次跳到程序最后
 103   1              a=5;                                                          //显示模块开关
 104   1              for(i=7;i>=0;i--)                                             //循环八次
 105   1              {                                                             
 106   2                      while(1)
 107   2                      {
 108   3                              if(shangjian()==1)                                        //三键按下,数据减1
 109   3                               {
 110   4                                        mima[i]--;
 111   4                                        if(mima[i]<0|mima[i]>9) mima[i]=9;
 112   4                               }
 113   3                               if(erjian()==1)                                          //二键按下,数据加1
 114   3                               {
 115   4                                       mima[i]++;
 116   4                                       if(mima[i]>9) mima[i]=0;
 117   4                               }
C51 COMPILER V8.02   复件_7                                                                03/12/2007 13:13:46 PAGE 3   

 118   3                               if(yijian()==1)                                          //一键按下,移到下一位
 119   3                               break;
 120   3                      }
 121   2              }
 122   1              for(i=0;i<=7;i++)                                             //循环核对密码
 123   1                      if(mima[i]!=mima1[i])  break;
 124   1              if(i<=7)                                                      //检查是否对8次
 125   1              {
 126   2                      cuo++;                                                      //错误次数加1
 127   2                      if(cuo>=3)                                                  //错误次数到3清0并不允许再输入
 128   2                      {
 129   3                              cuo=0;
 130   3                              w=1;
 131   3                      }
 132   2                      h=0;
 133   2              }
 134   1          else        h=1;
 135   1              for(i=7;i>=0;i--)                                             //输完后数据清除
 136   1              {
 137   2                      mima[i]=16;
 138   2              } 
 139   1              loop:if(w==1) return 0;                                       //错三次,返回0
 140   1              return h;
 141   1      }
 142          
 143          gaimi()                                                         //改密码子程序
 144          {
 145   1              if(w==1)                                                      //判断是否已错三次
 146   1              {goto loop;}
 147   1              if(mi()==1)                                                   //进入输密码子程序
 148   1              {
 149   2                      a=6;                                                        //改密码显示开关
 150   2                      for(i=7;i>=0;i--)                                           //循环8次改变密码数据
 151   2                      {
 152   3                              while(1)
 153   3                              {       
 154   4                                      if(shangjian()==1)                                        //三键按下,数据减1
 155   4                                      {
 156   5                                        mima1[i]--;
 157   5                                        if(mima1[i]<0|mima1[i]>9) mima1[i]=9;
 158   5                                      }
 159   4                                  if(erjian()==1)
 160   4                                  {
 161   5                                          mima1[i]++;
 162   5                                          if(mima1[i]>9) mima1[i]=0;
 163   5                                  }
 164   4                                  if(yijian()==1)
 165   4                                  break;
 166   4                              }
 167   3                      }
 168   2              }
 169   1              loop:if(w==1) return 0;                                       //错三次,返回0
 170   1      }
 171          
 172          tiaoshi()                                                       //调时间子程序 
 173          {       
 174   1              if(w==1)
 175   1              goto loop;
 176   1              k=1;                                                          //停止计时
 177   1              for(i=7;i>0;i=i-3)                                            //对时、分、秒进行循环
 178   1              {
 179   2                      while(1)
C51 COMPILER V8.02   复件_7                                                                03/12/2007 13:13:46 PAGE 4   

 180   2                      {       
 181   3                               if(erjian()==1)                                          //二键按下,加1
 182   3                               {
 183   4                                      if(i==7)                                                //调整时间部分
 184   4                                      {
 185   5                                                hour++;                                             //小时加1
 186   5                                                if(hour==24)
 187   5                                                hour=0;
 188   5                                      }
 189   4                                      if(i==4)                                                //调整分钟部分
 190   4                                      {
 191   5                                              minite++;                                             //分钟加1
 192   5                                              if(minite==60)
 193   5                                              minite=0;
 194   5                                      }
 195   4                                      if(i==1)                                                //调整秒钟部分
 196   4                                      {
 197   5                                              second++;                                             //秒加1
 198   5                                              if(second==60)
 199   5                                              second=0;
 200   5                                      }
 201   4                               }
 202   3                               if(shangjian()==1)                                       //三键按下,减1
 203   3                               {
 204   4                                      if(i==7)
 205   4                                      {
 206   5                                               hour--;
 207   5                                               if(hour<0)
 208   5                                               hour=23;

⌨️ 快捷键说明

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