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

📄 密码锁.lst

📁 一个经典的密码锁仿真
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  胈码薩                                                               12/31/2008 17:06:11 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN 密码锁.OBJ
ASSEMBLER INVOKED BY: D:\keil\C51\BIN\A51.EXE 密码锁.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

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

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

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

⌨️ 快捷键说明

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