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

📄 复件 mm.lst

📁 KEIL开发的密码锁 源程序,已经通过PROTEUS软件的仿真测试
💻 LST
字号:
C51 COMPILER V7.09   复件_MM                                                               04/24/2007 08:06:41 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE 复件_MM
OBJECT MODULE PLACED IN 复件 mm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 复件 mm.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*********************************************************************/
   2          //            
   3          //                       自动报警控制
   4          //                    ancleyan 2007.04.17      
   5          /*********************************************************************/
   6          //使用AT89C51单片机,12MHZ晶振,P1口输入,P2口作列扫描,p3数据输出,用共阳LED数码管
   7          
   8          #include"reg51.h"
   9          #define char unsigned char
  10          //
  11          sbit qqqq=P0^7;
  12          sbit aa=P1^0;   sbit bb=P1^1;   sbit cc=P1^2;
  13          sbit dd=P1^3;   sbit ee=P1^4;   sbit ff=P1^5;
  14          sbit gg=P1^6;   sbit hh=P1^7; 
  15          char code dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
  16          /* 共阳LED段码表     "0"  "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9" "不亮"     */  
  17          //char code dis_7[10]={0xC0,0xF9,0xA4,0x99,0xB0,0x82,0xF8,0x80,0x99,0xff};
  18          /* 共阳LED段码表     "0"  "1"  "2"  "8"  "3"  "5"  "6"  "7"  "4"  "9" "不亮"     */ 
  19          //char code  scan_con[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};   // 列扫描控制字
  20          //char code  scan_con[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};   // 列扫描控制字
  21          char code  scan_con[9]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0x00};   // 列扫描控制字
  22          char data  keytmp[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//显示单元数据初值,共8个
  23          //char data  skeytmp[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//显示单元数据初值,共8个
  24          char data  key[8]={0x01,0x02,0x03,0x06,0x06,0x05,0x04,0x03};
  25          //char m;
  26          char t;     //供键盘输入的数存储进数组时使用
  27          
  28          //*******1毫秒延时程序********
  29          delay1ms(int t)
  30          {
  31   1         int i,j;
  32   1         for(i=0;i<t;i++)
  33   1         for(j=0;j<120;j++)
  34   1         {;}
  35   1      }
  36          //*******初始化程序*********
  37          char clear(void)
  38          {
  39   1        char tt;
  40   1        P2=scan_con[8];       
  41   1        t=0;
  42   1        //delay1ms(200);
  43   1        for(tt=0;tt<8;tt++)
  44   1          {
  45   2              keytmp[tt]=0xff;
  46   2              }
  47   1        return(t);
  48   1      
  49   1      }
  50          //*****密码验证程序*********//
  51          void password(void)
  52          {
  53   1         while(1)
  54   1         {    if((keytmp[0]==key[0])&&(keytmp[1]==key[1])&&(keytmp[2]==key[2])&&(keytmp[3]==key[3])&&(keytmp[4]==ke
             -y[4]))     
C51 COMPILER V7.09   复件_MM                                                               04/24/2007 08:06:41 PAGE 2   

  55   2       //   if()
  56   2                // {
  57   2                      // if(keytmp[5]==key[5]&&keytmp[6]==key[6]&&keytmp[7]==key[7])                               //&&keytmp[8]==key[8]
  58   2                              {
  59   3                                qqqq=0;  clear();
  60   3                      //      }
  61   3                 }
  62   2              }
  63   1      }    
  64          
  65          
  66          
  67          //**********功能函数15***********************************
  68          
  69          void fun15(void)
  70          {
  71   1        delay1ms(200);
  72   1        gg=0;
  73   1      }
  74          
  75          
  76          
  77          
  78          //**********功能函数14***********************************
  79          void fun14(void)
  80          {
  81   1          password();
  82   1      }
  83          //**********功能函数13***********************************
  84          void fun13(void)
  85          {
  86   1        delay1ms(200);
  87   1        ee=0;
  88   1      }
  89          //**********功能函数12***********************************
  90          void fun12(void)
  91          {
  92   1        delay1ms(200);
  93   1        dd=0;
  94   1      }
  95          //**********功能函数11***********************************
  96          void fun11(void)
  97          {
  98   1        delay1ms(200);
  99   1        cc=0;
 100   1      }
 101          //**********功能函数10***********************************
 102          void fun10(void)
 103          {
 104   1        //password();
 105   1      }
 106          //**********功能函数9***********************************
 107          char fun9(void)
 108          { void scan_7(void);//对被调用函数的说明
 109   1        while(P3!=0xfe){scan_7();}   
 110   1        //delay1ms(200);       //防止由于按键未放开 输入一串数字  可以加入一个while(P3!=0xfe)语句 直到放开键才动
             -作
 111   1        keytmp[t]=9;         //用delay1ms(100)语句可以按住键之后重复输入
 112   1        aa=0;              
 113   1        return t++; 
 114   1      }
 115          //**********功能函数8***********************************
C51 COMPILER V7.09   复件_MM                                                               04/24/2007 08:06:41 PAGE 3   

 116          char fun8(void)
 117          {
 118   1        while(P3!=0xfe){scan_7();}   
 119   1        keytmp[t]=8;
 120   1        bb=0;                 //函数功能测试灯
 121   1        return t++;
 122   1      }
 123          //**********功能函数7***********************************
 124          char fun7(void)
 125          {
 126   1        while(P3!=0xfe){scan_7();}   
 127   1        keytmp[t]=7;
 128   1        cc=0;
 129   1        return t++;
 130   1      }
 131          //**********功能函数6***********************************
 132          char fun6(void)
 133          { while(P3!=0xfd){scan_7();} 
 134   1        keytmp[t]=6;
 135   1        dd=0;
 136   1        return t++;
 137   1               
 138   1      }
 139          //**********功能函数5***********************************
 140          char fun5(void)
 141          {  while(P3!=0xfd){scan_7();} 
 142   1         keytmp[t]=5;
 143   1        ee=0;
 144   1        return t++;
 145   1      }
 146          //**********功能函数4***********************************
 147          char fun4(void)
 148          { while(P3!=0xfd){scan_7();} 
 149   1         keytmp[t]=4;
 150   1        ff=0;
 151   1        return t++;
 152   1      }
 153          //**********功能函数3***********************************
 154          char fun3(void)
 155          { while(P3!=0xfb){scan_7();} 
 156   1        keytmp[t]=3;
 157   1        gg=0;
 158   1       return t++;
 159   1      }
 160          //**********功能函数2***********************************
 161          char fun2(void)
 162          { while(P3!=0xfb){scan_7();} 
 163   1       keytmp[t]=2;
 164   1       return t++;
 165   1      }
 166          //**********功能函数1***********************************
 167          char fun1(void)
 168          { while(P3!=0xfb){scan_7();} 
 169   1        keytmp[t]=0x01;
 170   1        hh=0;
 171   1        return t++;
 172   1      }
 173          //**********功能函数0***********************************
 174          char fun0(void)
 175          { while(P3!=0xf7){scan_7();} 
 176   1        keytmp[t]=0;
 177   1        aa=0;
C51 COMPILER V7.09   复件_MM                                                               04/24/2007 08:06:41 PAGE 4   

 178   1        return t++;
 179   1      }
 180          //**************************
 181          //对型如7 8 9 a 的键盘的驱动
 182          //      4 5 6 b
 183          //      1 2 3 c
 184          //      d 0 e f 
 185          /**********按键驱动函数***********/
 186          void scankey(void)
 187          { 
 188   1         P3=0xfe;                             //将第一行置零
 189   1         if(P3!=0xfe)  
 190   1           {  if(P3==0x7e)        fun10();      //一行四列
 191   2                  else if(P3==0xbe)   fun9();       //一行三列
 192   2                  else if(P3==0xde)   fun8();       //一行二列
 193   2                      else if(P3==0xee)   fun7();       //一行一列
 194   2                }  
 195   1         else                              
 196   1             {
 197   2                   P3=0xfd;                 //将第二行置零
 198   2                 if(P3!=0xfd)
 199   2                            { if(P3==0x7d)        fun11();   //二行四列
 200   3                                  else if(P3==0xbd)   fun6();    //二行三列
 201   3                          else if(P3==0xdd)   fun5();    //二行二列
 202   3                              else if(P3==0xed)   fun4();    //二行一列
 203   3                                }
 204   2                         else                           
 205   2                     {
 206   3                            P3=0xfb;               //将第三行置零
 207   3                        if(P3!=0xfb)
 208   3                                  { if(P3==0x7b)        fun12();//三行四列
 209   4                                        else if(P3==0xbb)   fun3();//三行三列
 210   4                                else if(P3==0xdb)   fun2();//三行二列
 211   4                                    else if(P3==0xeb)   fun1();//三行一列 
 212   4                                      }
 213   3                                        else
 214   3                                        {
 215   4                                          P3=0xf7;             
 216   4                                          { if(P3!=0xf7) 
 217   5                                      { 
 218   6                                                      if(P3==0x77)        fun13();//四行四列
 219   6                                          else if(P3==0xb7)   fun14();//四行三列
 220   6                                  else if(P3==0xd7)   fun0();//四行二列
 221   6                                      else if(P3==0xe7)   fun15();//四行一列 
 222   6                                          }
 223   5                                          }
 224   4                                    }
 225   3                     }
 226   2              }
 227   1      }
 228          //*****数码管显示函数   将数据及显示控制码输出*********//
 229          void scan_7(void)
 230          {
 231   1        char j;
 232   1        for(j=0;j<t;j++)
 233   1          {
 234   2               P2=scan_con[j];       //scan_con[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};   // 列扫描控制字
 235   2               P0=dis_7[keytmp[j]];  //dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
 236   2               delay1ms(1);  
 237   2          }
 238   1      }
 239          
C51 COMPILER V7.09   复件_MM                                                               04/24/2007 08:06:41 PAGE 5   

 240          //*******主程序*******//
 241          void main()
 242          { 
 243   1        while(1)
 244   1        {
 245   2          scankey();
 246   2          scan_7();              //delay1ms(1); 
 247   2              if(t==9)          //注意 t取值为9
 248   2               {
 249   3               clear();
 250   3               }
 251   2        }
 252   1      }
 253          
 254          
 255          
 256          
 257          
 258          
 259          
 260          
 261          
 262          
 263          
 264          
 265          
 266          
 267          
 268          
 269            
 270          
 271          
 272          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    597    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     17    ----
   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 + -