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

📄 key lock (2).lst

📁 Proteus在MCS-51%26ARM7系统中的应用百例 Proteus在MCS-51%26ARM7系统中的应用百例
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  KEY_LOCK__2_                                                         08/05/2006 22:26:58 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN Key Lock (2).OBJ
ASSEMBLER INVOKED BY: e:\Program Files\Keil\C51\BIN\A51.EXE Key Lock (2).asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;*******************************************************
                       2     ;以下8个字节存放8位数码管的段码
  0030                 3     LED_BIT_1       EQU             30H     
  0031                 4     LED_BIT_2       EQU             31H
  0032                 5     LED_BIT_3       EQU             32H
  0033                 6     LED_BIT_4       EQU             33H
  0034                 7     LED_BIT_5       EQU             34H
  0035                 8     LED_BIT_6       EQU             35H
  0036                 9     LED_BIT_7       EQU             36H
  0037                10     LED_BIT_8       EQU             37H
                      11     ;以下6个字节存放初始密码
  0038                12     WORD_1          EQU             38H
  0039                13     WORD_2          EQU             39H
  003A                14     WORD_3          EQU             3AH
  003B                15     WORD_4          EQU             3BH
  003C                16     WORD_5          EQU             3CH
  003D                17     WORD_6          EQU             3DH
                      18     ;以下6个字节存放用户输入的6位密码
  003E                19     KEY_1           EQU             3EH
  003F                20     KEY_2           EQU             3FH
  0040                21     KEY_3           EQU             40H
  0041                22     KEY_4           EQU             41H
  0042                23     KEY_5           EQU             42H
  0043                24     KEY_6           EQU             43H
                      25     ;******************************************************
  0044                26     CNT_A           EQU             44H
  0045                27     CNT_B           EQU             45H
  0046                28     KEY_CNT         EQU             46H             ;已输出的密码位数
  0047                29     LINE            EQU             47H             ;按键行号
  0048                30     ROW                     EQU             48H             ;按键列号
  0049                31     VAL                     EQU             49H             ;键值
                      32     ;******************************************************
                      33     ;以下为初始化程序,包括数据存储空间初始化,设置初始密码
0000                  34                     ORG             00H
0000 800C             35                     SJMP    START
000B                  36                     ORG             0BH
000B 020181           37                     LJMP    INT_T0
000E 754400           38     START:  MOV             CNT_A,#00H              ;程序初始化
0011 754500           39                     MOV             CNT_B,#00H
0014 754600           40                     MOV             KEY_CNT,#00H
0017 754700           41                     MOV             LINE,#00H
001A 754800           42                     MOV             ROW,#00H
001D 754900           43                     MOV             VAL,#00H
0020 D290             44                     SETB    P1.0
0022 753000           45                     MOV             LED_BIT_1,#00H  ;段码存储区清0
0025 753100           46                     MOV             LED_BIT_2,#00H
0028 753200           47                     MOV             LED_BIT_3,#00H
002B 753300           48                     MOV             LED_BIT_4,#00H
002E 753400           49                     MOV             LED_BIT_5,#00H
0031 753500           50                     MOV             LED_BIT_6,#00H
0034 753679           51                     MOV             LED_BIT_7,#79H
0037 753773           52                     MOV             LED_BIT_8,#73H
                      53     
003A 753E00           54                     MOV             KEY_1,#00H              ;输入密码存储区清0
003D 753F00           55                     MOV             KEY_2,#00H
0040 754000           56                     MOV             KEY_3,#00H
0043 754100           57                     MOV             KEY_4,#00H
0046 754200           58                     MOV             KEY_5,#00H
A51 MACRO ASSEMBLER  KEY_LOCK__2_                                                         08/05/2006 22:26:58 PAGE     2

0049 754300           59                     MOV             KEY_6,#00H
                      60     
004C 753806           61                     MOV             WORD_1,#6               ;设置初始密码为"123456"
004F 753905           62                     MOV             WORD_2,#5
0052 753A04           63                     MOV             WORD_3,#4
0055 753B03           64                     MOV             WORD_4,#3
0058 753C02           65                     MOV             WORD_5,#2
005B 753D01           66                     MOV             WORD_6,#1
                      67     
005E 758901           68                     MOV             TMOD,#01H
0061 758CFD           69                     MOV             TH0,#(65536-700)/256
0064 758A44           70                     MOV             TL0,#(65536-700)MOD     256             
0067 75A882           71                     MOV             IE,#82H
                      72                     
006A 1201ED           73     A0:             LCALL   DISP
                      74     ;***********************************************************
                      75     ;以下为键盘扫描程序,计算键值并存入VAL
006D 75B0F0           76     LSCAN:  MOV             P3,#0F0H                ;扫描行码
0070 30B00C           77             L1:     JNB             P3.0,L2
0073 12023E           78                     LCALL   DLY_S
0076 30B006           79                     JNB             P3.0,L2
0079 754700           80                     MOV             LINE,#00H
007C 0200A9           81                     LJMP    RSCAN
007F 30B10C           82             L2:     JNB             P3.1,L3
0082 12023E           83                     LCALL   DLY_S
0085 30B106           84                     JNB             P3.1,L3
0088 754701           85                     MOV             LINE,#01H
008B 0200A9           86                     LJMP    RSCAN
008E 30B20C           87             L3:     JNB             P3.2,L4
0091 12023E           88                     LCALL   DLY_S
0094 30B206           89                     JNB             P3.2,L4
0097 754702           90                     MOV             LINE,#02H
009A 0200A9           91                     LJMP    RSCAN
009D 30B3CA           92             L4:     JNB             P3.3,A0
00A0 12023E           93                     LCALL   DLY_S
00A3 30B3C4           94                     JNB             P3.3,A0
00A6 754703           95                     MOV             LINE,#03H
                      96     
00A9 75B00F           97     RSCAN:  MOV             P3,#0FH                 ;扫描列码
00AC 30B406           98             C1:     JNB             P3.4,C2
00AF 754800           99                     MOV             ROW,#00H
00B2 0200C4          100                     LJMP    CALCU
00B5 30B506          101             C2:     JNB             P3.5,C3
00B8 754801          102                     MOV             ROW,#01H
00BB 0200C4          103                     LJMP    CALCU
00BE 30B6EB          104             C3:     JNB             P3.6,C1
00C1 754802          105                     MOV             ROW,#02H
                     106     
00C4 E547            107     CALCU:  MOV             A,LINE                  ;计算键值
00C6 75F003          108                     MOV             B,#03H
00C9 A4              109                     MUL             AB
00CA 2548            110                     ADD             A,ROW
00CC F549            111                     MOV             VAL,A
                     112     ;**************************************************
                     113     ;以下为按键处理程序,对不同的按键作出响应                                
00CE B40A25          114                     CJNE    A,#0AH,J1               ;是否为"CLR"键
00D1 A946            115                     MOV             R1,KEY_CNT
00D3 B90006          116                     CJNE    R1,#00H,J2
00D6 120172          117                     LCALL   ALARM_1
                     118     
00D9 02000E          119                     LJMP    START
00DC 1201C8          120        J2:  LCALL   SHIFTR
00DF 1546            121                     DEC             KEY_CNT
                     122     
00E1 1201ED          123             W00:LCALL       DISP                    ;等待按键抬起
00E4 E5B0            124                     MOV             A,P3
A51 MACRO ASSEMBLER  KEY_LOCK__2_                                                         08/05/2006 22:26:58 PAGE     3

00E6 B40F03          125                     CJNE    A,#0FH,W01
00E9 02006A          126                     LJMP    A0
00EC E5B0            127             W01:MOV         A,P3
00EE B4F003          128                     CJNE    A,#0F0H,W02
00F1 02006A          129                     LJMP    A0
00F4 80EB            130             W02:SJMP        W00                     
                     131     
00F6 E549            132             J1:     MOV             A,VAL
00F8 B40B37          133                     CJNE    A,#0BH,J3               ;判断是否为"ENTER"键
00FB A946            134                     MOV             R1,KEY_CNT
00FD B9062C          135                     CJNE    R1,#06H,J4
                     136     
0100 E538            137                     MOV             A,WORD_1                ;比较密码
0102 B53E21          138                     CJNE    A,3EH,J5
0105 E539            139                     MOV             A,WORD_2
0107 B53F1C          140                     CJNE    A,3FH,J5
010A E53A            141                     MOV             A,WORD_3
010C B54017          142                     CJNE    A,40H,J5
010F E53B            143                     MOV             A,WORD_4
0111 B54112          144                     CJNE    A,41H,J5
0114 E53C            145                     MOV             A,WORD_5
0116 B5420D          146                     CJNE    A,42H,J5
0119 E53D            147                     MOV             A,WORD_6
011B B54308          148                     CJNE    A,43H,J5
                     149     
011E C290            150                     CLR             P1.0
0120 120247          151                     LCALL   DLY_L
0123 020254          152                     LJMP    FINI
                     153     
0126 120178          154             J5:     LCALL   ALARM_2
0129 02000E          155                     LJMP    START
                     156     
012C 120172          157             J4:     LCALL   ALARM_1
012F 02000E          158                     LJMP    START
                     159     
0132 0546            160             J3:     INC             KEY_CNT                 ;按下数字键
0134 E546            161                     MOV             A,KEY_CNT
0136 B4071E          162                     CJNE    A,#07H,K1
0139 120172          163                     LCALL   ALARM_1
                     164     
013C 1201ED          165             W10:LCALL       DISP                    ;等待按键抬起
013F E5B0            166                     MOV             A,P3
0141 B40F03          167                     CJNE    A,#0FH,W11
0144 02000E          168                     LJMP    START
0147 E5B0            169             W11:MOV         A,P3
0149 B4F003          170                     CJNE    A,#0F0H,W12
014C 02000E          171                     LJMP    START
014F 80EB            172             W12:SJMP        W10     
0151 02000E          173                     LJMP    START
                     174     
0154 02000E          175                     LJMP    START
0157 1201A3          176             K1:     LCALL   SHIFTL
                     177     
015A 1201ED          178             W20:LCALL       DISP                    ;等待按键抬起
015D E5B0            179                     MOV             A,P3
015F B40F03          180                     CJNE    A,#0FH,W21
0162 02006A          181                     LJMP    A0
0165 E5B0            182             W21:MOV         A,P3
0167 B4F003          183                     CJNE    A,#0F0H,W22
016A 02006A          184                     LJMP    A0
016D 80EB            185             W22:SJMP        W20     
016F 02006A          186                     LJMP    A0
                     187                     
0172 D28C            188     ALARM_1:SETB    TR0                     ;操作错误报警

⌨️ 快捷键说明

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