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

📄 lock.lst

📁 用4*4键盘组成0-9数字键及确认键。 用8位数码管显示电路提示信息
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   LOCK                                                                  04/28/2009 09:34:47 PAGE 1   


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

line level    source

   1          //实验任务
   2          /*用4*4键盘组成0-9数字键及确认键。
   3          用8位数码管显示电路提示信息,当输入密码
   4          时,只显示“8.”,当密码位数输入完毕按确
   5          认键时,对应的密码与设定的密码进行比较,
   6          若密码正确,则门开,此处继电器发出“叮咚”声;若
   7          密码不正确,禁止按键输入3秒,同时发出“滴答”
   8          报警声;若在3秒内仍有按键按下,则禁止按键
   9          输入3秒被重新禁止*/
  10          #include<reg51.h>
  11          #define uchar unsigned char
  12          #define uint unsigned int
  13          uchar pslenth=6;                // length of secret code
  14          uchar getps[6];                         // input secret code buffer area
  15          uchar ps[]={0,1,2,3,4,5};           //secret code
  16          uchar temp,num,count;
  17          uchar aa,bb,cc;
  18          uchar keycount;
  19          uint key;
  20          uint second3;
  21          bit errorflag;
  22          bit rightflag;
  23          bit keyoverflag;
  24          bit alarmflag;
  25          sbit SPK=P3^4;            //蜂鸣器
  26          sbit LIGHT=P2^0;          //指示灯
  27          sbit JDQ=P3^5;            //继电器
  28          unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7
             -1,0x00};
  29          void Display(uchar count); 
  30          void IO_int()
  31          {
  32   1              errorflag=0;
  33   1              rightflag=0;
  34   1              keyoverflag=0;
  35   1              keycount=0;             
  36   1      }
  37          void Delay(unsigned int i)
  38          {
  39   1              unsigned char j;
  40   1              for(;i>0;i--)
  41   1              {
  42   2                      for(j=0;j<110;j++);
  43   2              }
  44   1      }
  45          uint Scankey()
  46          {
  47   1              num=16;
  48   1              P0=0xfe;
  49   1              temp=P0;
  50   1              Delay(20);
  51   1              temp=P0;
  52   1              temp=temp&0xf0;
  53   1              if(temp!=0xf0)
  54   1              {
C51 COMPILER V8.02   LOCK                                                                  04/28/2009 09:34:47 PAGE 2   

  55   2                      Delay(50);
  56   2                      temp=P0;
  57   2                      temp=temp&0xf0;
  58   2                      if(temp!=0xf0)
  59   2                      {       
  60   3                              switch(temp)
  61   3                              {
  62   4                                      case 0xe0:num=0;
  63   4                                              break;
  64   4                                      case 0xd0:num=1;
  65   4                                              break;
  66   4                                      case 0xb0:num=2;
  67   4                                              break;
  68   4                                      case 0x70:num=3;
  69   4                                              break;
  70   4                              }
  71   3                              temp=P0;
  72   3                              temp=temp&0xf0;
  73   3                              while(temp!=0xf0)   //松手检测
  74   3                              {
  75   4                                      temp=P0;
  76   4                                      temp=temp&0xf0;
  77   4                              }
  78   3                      }
  79   2              }
  80   1              P0=0xfd;
  81   1              temp=P0;
  82   1              Delay(20);
  83   1              temp=P0;
  84   1              temp=temp&0xf0;
  85   1              if(temp!=0xf0)
  86   1              {
  87   2                      Delay(50);
  88   2                      temp=P0;
  89   2                      temp=temp&0xf0;
  90   2                      if(temp!=0xf0)
  91   2                      {       
  92   3                              switch(temp)
  93   3                              {
  94   4                                      case 0xe0:num=4;
  95   4                                              break;
  96   4                                      case 0xd0:num=5;
  97   4                                              break;
  98   4                                      case 0xb0:num=6;
  99   4                                              break;
 100   4                                      case 0x70:num=7;
 101   4                                              break;
 102   4                              }
 103   3                              temp=P0;
 104   3                              temp=temp&0xf0;
 105   3                              while(temp!=0xf0)   //松手检测
 106   3                              {
 107   4                                      temp=P0;
 108   4                                      temp=temp&0xf0;
 109   4                              }
 110   3                      }
 111   2              }       
 112   1              P0=0xfb;
 113   1              temp=P0;
 114   1              Delay(20);
 115   1              temp=P0;
 116   1              temp=temp&0xf0;
C51 COMPILER V8.02   LOCK                                                                  04/28/2009 09:34:47 PAGE 3   

 117   1              if(temp!=0xf0)
 118   1              {
 119   2                      Delay(50);
 120   2                      temp=P0;
 121   2                      temp=temp&0xf0;
 122   2                      if(temp!=0xf0)
 123   2                      {       
 124   3                              switch(temp)
 125   3                              {
 126   4                                      case 0xe0:num=8;
 127   4                                              break;
 128   4                                      case 0xd0:num=9;
 129   4                                              break;
 130   4      //                              case 0xb0:num=10;   //no usage 
 131   4      //                                      break;
 132   4      //                              case 0x70:num=11;        //no usage
 133   4      //                                      break;
 134   4                              }
 135   3                              temp=P0;
 136   3                              temp=temp&0xf0;
 137   3                              while(temp!=0xf0)   //松手检测
 138   3                              {
 139   4                                      temp=P0;
 140   4                                      temp=temp&0xf0;
 141   4                              }
 142   3                      }
 143   2              }       
 144   1              P0=0xf7;
 145   1              temp=P0;
 146   1              Delay(20);
 147   1              temp=P0;
 148   1              temp=temp&0xf0;
 149   1              if(temp!=0xf0)
 150   1              {
 151   2                      Delay(50);
 152   2                      temp=P0;
 153   2                      temp=temp&0xf0;
 154   2                      if(temp!=0xf0)
 155   2                      {       
 156   3                              switch(temp)
 157   3                              {
 158   4      //                              case 0xe0:num=12;    //no usage
 159   4      //                                      break;
 160   4      //                              case 0xd0:num=13;        //no usage
 161   4      //                                      break;
 162   4                                      case 0xb0:num=14; //Del  key
 163   4                                              break;
 164   4                                      case 0x70:num=15; //Enter key

⌨️ 快捷键说明

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