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

📄 password clock3.lst

📁 密码锁 1. 出厂的统一密码为个人码″12345678″
💻 LST
📖 第 1 页 / 共 3 页
字号:
文件:PASSWORD CLOCK3.ASM 盛群编译器版本 2.86 页次1


   1  0000              
   2  0000              ;************************************************************
   3  0000              ;控制口的结构:
   4  0000              ;   PB1 -- SCL
   5  0000              ;   PB0 -- SDA
   6  0000              ;;4 scan line for output PA3~PA6
   7  0000              ;;3 data line for input PB2~PB4
   8  0000              ;;key matrix=3x4 12keys
   9  0000              ;;PB5 is for "#"  input
  10  0000              ;*************************************************************
  11  0000              
  12  0000               # include	ht48ra0-2.inc


  13  0000              
  14  0000              ;----------------------------
  15  0000              ;equ定义区间
  16  0000              scl			equ		pb.1		;时钟信号引脚定义
  17  0000              sda			equ		pb.0		;串行数据引脚定义
  18  0000              read_out		equ		[30h]		;写暂存器
  19  0000              write_in		equ		[31h]		;读暂存器
  20  0000              word_address		equ		[32h]		
  21  0000              data_8			equ		[33h]
  22  0000              ;---------------------------
  23  0000              
  24  0000              ;---------------------------
  25  0000              ;宏定义
  26  0000              ;延迟宏,延迟100微秒
  27  0000              d_1		macro
  28  0000              	local	label
  29  0000              	mov		a,64h
  30  0000              	mov		delay,a
  31  0000              label:
  32  0000              	sdz		delay
  33  0000              	jmp		label
  34  0000              endm
  35  0000              ;*************************************************************
  36  0000              SAMPLE  .SECTION        'DATA'
  37  0000              
  38  0000              ;; --- Temp RAM ---
  39  0000  00                  a_SR10          DB     ?      ;;WORK Temp Register
  40  0001  00                  a_SR11          DB     ?      ;;
  41  0002  00                  a_SR12        	DB     ?      ;;
  42  0003  00                  a_SR13          DB     ?      ;;
  43  0004  00          		temp_num		DB     ? 
  44  0005              
  45  0005              ;;------CODE   RAM---------
  46  0005              
  47  0005  0008[       		array_data	db	8 dup (?) 
            00
            ]
  48  000D              
  49  000D              ;;--------- Program RAM --------
  50  000D  00                  COLUMMN     	DB     ?         ;;Scan Key Colummn Step Number
  51  000E  00                  KEY_CODE0      	DB     ?     ;;Save Previous Key Number
  52  000F  00                  KEY_CODE       	DB     ?      ;;Scan Key Number
  53  0010  00                  COL_VALUE     	DB     ?      ;;Read on column value to a_COL_VALUE
  54  0011  00                  KD_TEMP         DB     ?      ;;Key Debounce Check Times
  55  0012  00                  NKD_TEMP        DB     ?      ;;Key Release Confirm Times
文件:PASSWORD CLOCK3.ASM 盛群编译器版本 2.86 页次2

  56  0013  00          		KEY_DATA		DB     ?	   ;;PA temp register
  57  0014  00          		KEY_DATA1		DB     ?
  58  0015  00          		delay			db		?
  59  0016  00          		delay0			db		?
  60  0017  00          		delay1			db		?
  61  0018  00          		t_count			db		?
  62  0019  00          		t_count1		db		?
  63  001A  00          		wrrite_in		db		?
  64  001B  00          		code_num		db		?
  65  001C              ;;--- User FLAG define ---
  66  001C  00                  fg_SendActive   DBIT          ;;VALIDITY KEY Flag
  67  001C                      fg_PressRec     DBIT          ;;Check Column Multi_Key Flag
  68  001C                      fg_REPEAT       DBIT          ;;REPEAT KEY Flag
  69  001C                      fg_Multi_Key    DBIT          ;;INVALID KEY Flag
  70  001C              	    release_flg			DBIT
  71  001C              		flg_chang_key		DBIT
  72  001C              		manage_code_end		DBIT
  73  001C              		red_key_1			DBIT
  74  001D              ;*************************************************************
  75  001D              
  76  0000              code    .section        at 0 'code'
  77  0000              
  78  0000              
  79  0000                      org     00h
  80  0000              START:
  81  0000  1F92        		SET		PA
  82  0001              		;SET		PB
  83  0001  3492        		CLR		PA.1
  84  0002  3512        		CLR		PA.2
  85  0003              
  86  0003  0F20        		MOV		a, 20H
  87  0004  0081        		MOV		MP0, a
  88  0005  0F50        		mov		a, 50H		
  89  0006              CLR_RAM:		
  90  0006  1F00        		CLR		R0
  91  0007  1481        		INC		MP0
  92  0008  1785        		SDZ		ACC
  93  0009  2806        		JMP		CLR_RAM
  94  000A              
  95  000A  0F70        		mov		a,070h
  96  000B  0080     R  		mov		t_count,a
  97  000C  0F50        		mov		a,050h
  98  000D  0080     R  		mov		t_count1,a
  99  000E              
 100  000E              ini_clock:
 101  000E  0FF0        		MOV		a, offset personal_clock		
 102  000F  0087                mov     tblp,a
 103  0010  0F00        		mov		a,00h				;写入14H为要操作的eeprom的地址
 104  0011  00B2        		mov		word_address,a
 105  0012              ini_personal_clock:	
 106  0012  1DB1        		tabrdl	write_in
 107  0013  2131        		call	ht24_write
 108  0014  1487        		inc		TBLP
 109  0015  1480     R  		inc		code_num
 110  0016  14B2        		inc		word_address
 111  0017  0FF8        		mov		a,offset personal_clock+8
 112  0018  0407        		xor		a,TBLP
 113  0019  1085        		sz		acc
 114  001A  2812        		jmp		ini_personal_clock
 115  001B              
文件:PASSWORD CLOCK3.ASM 盛群编译器版本 2.86 页次3

 116  001B              
 117  001B  0FE0        		MOV		a, offset manage_clock		
 118  001C  0087                mov     tblp,a	
 119  001D  0F10        		mov		a,010h				;写入10H为要操作的eeprom的地址
 120  001E  00B2        		mov		word_address,a
 121  001F              ini_manage_clock:
 122  001F  1DB1        		tabrdl	write_in
 123  0020  2131        		call	ht24_write
 124  0021  1487        		inc		TBLP
 125  0022  14B2        		inc		word_address
 126  0023  0FE8        		mov		a,offset manage_clock+8
 127  0024  0407        		xor		a,TBLP
 128  0025  1085        		sz		acc
 129  0026  281F        		jmp		ini_manage_clock
 130  0027              		
 131  0027  0F00     R  		mov		a, offset array_data
 132  0028  0081        		mov		mp0, a
 133  0029              
 134  0029              ;@*********** Polling System Event ***********
 135  0029              MAIN_PROC:
 136  0029  205F                CALL    SCAN_KEY_PROC         ;SCAN KEY PROCEDURE
 137  002A                      ;CALL   F_DELAY               ;TIME DELAY PROCEDURE
 138  002A              
 139  002A  3C00     R  		sz  	fg_repeat
 140  002B  2829        		jmp		MAIN_PROC
 141  002C              
 142  002C  3C00     R          SZ      fg_Multi_Key          ;Check Invalid Key
 143  002D  2829                JMP     MAIN_PROC       	  ;			
 144  002E              
 145  002E  0F0B        		mov		a,0bh					;* key
 146  002F  0400     R  		xor		a,key_code
 147  0030  1085        		sz		acc	
 148  0031  2834        		jmp		$+3
 149  0032  3000     R  		set		release_flg
 150  0033  2829        		jmp		main_proc
 151  0034              		
 152  0034  0F0C        		mov		a,0ch					;red key
 153  0035  0400     R  		xor		a,key_code
 154  0036  1085        		sz		acc
 155  0037  283A        		jmp		judge_personal
 156  0038  203F        		call	judge_red_key
 157  0039  2829        		jmp		main_proc
 158  003A              
 159  003A              judge_personal:
 160  003A  3C00     R  		sz		manage_code_end
 161  003B  28E8        		jmp		chang_personal_proc
 162  003C              
 163  003C  1080     R          SZ      KEY_CODE              ;Check NO Key Press	
 164  003D  2849        		jmp		judge
 165  003E  2854        		jmp		sleep	
 166  003F              
 167  003F              judge_red_key:
 168  003F  3C00     R  		sz		red_key_1
 169  0040  2843        		jmp		$+3
 170  0041  3000     R  		set		flg_chang_key
 171  0042  2845        		jmp		$+3
 172  0043  3400     R  		clr		flg_chang_key
 173  0044  2847        		jmp		$+3
 174  0045  3000     R  		set		red_key_1
 175  0046  2848        		jmp		$+2
文件:PASSWORD CLOCK3.ASM 盛群编译器版本 2.86 页次4

 176  0047  3400     R  		clr		red_key_1
 177  0048  0003        		ret
 178  0049              judge:
 179  0049  0F70        		mov		a,070h
 180  004A  0080     R  		mov		t_count,a
 181  004B  0F50        		mov		a,050h
 182  004C  0080     R  		mov		t_count1,a
 183  004D              
 184  004D  3C00     R  		sz		release_flg
 185  004E  2930        		jmp		release_proc
 186  004F  3C00     R  		sz		flg_chang_key
 187  0050  28FE        		jmp		manage_code
 188  0051  3C00     R  		sz		manage_code_end
 189  0052  291A        		jmp		chang_manage_proc
 190  0053  28CE                JMP     personal_code   
 191  0054                   	  ;
 192  0054                SLEEP:
 193  0054  1F12                clr     PA               	  ;Ready WakeUp Low Level
 194  0055  1F00     R          clr     KEY_DATA
 195  0056              
 196  0056  1780     R  		sdz		t_count1				;\
 197  0057  2829                JMP     MAIN_PROC				; \
 198  0058  1780     R  		sdz		t_count					; /if no key code wait 1s
 199  0059  2856                JMP     $-3						;/
 200  005A              
 201  005A                     ; mov     A,0
 202  005A                     ; mov     PA,A
 203  005A              
 204  005A  3E94        		sz 		PB.5		
 205  005B  0002                halt                        ;System Halt
 206  005C  0F00        		mov		a,0
 207  005D  0F00     R  		mov		a, offset array_data		
 208  005E              
 209  005E  2829                JMP     MAIN_PROC         	;Any Key WakeUp
 210  005F              ;@************* SUBROUTINE[xx]: Scan 12 Key Matrix (3x4) ************
 211  005F              
 212  005F              SCAN_KEY_PROC:
 213  005F                ;;--- READ KEY PROCEDURE ---
 214  005F                            ;;Initiate Process
 215  005F  1F00     R          clr     KEY_CODE         ;
 216  0060  3400     R          clr     fg_PressRec       ;
 217  0061  1F00     R          clr     COLUMMN        ;
 218  0062  3400     R          clr     fg_Multi_Key      ;
 219  0063              
 220  0063  0FF7        		mov		a,0f7h
 221  0064  0080     R  		mov		key_data1,a
 222  0065  0F06        		mov		a,06h
 223  0066                NEXT_COLUMN:
 224  0066  0400     R  		xor		a,key_data1
 225  0067  0080     R  		mov		key_data,a
 226  0068  1880     R  		rl		key_data1
 227  0069              
 228  0069  0092                mov     PA,A          ;Scan Column PA PORT OUTPUT
 229  006A  0080     R          mov     KEY_DATA,A         ;
 230  006B  0000                NOP                       ;
 231  006C                ;;--- READ PB PORT  ---
 232  006C              		;mov		a,0e3h
 233  006C              		;AND		a,PB
 234  006C              		;MOV		KEY_DATA1,A
 235  006C              		;MOV		A,01CH
文件:PASSWORD CLOCK3.ASM 盛群编译器版本 2.86 页次5

 236  006C              		;XORM	A,KEY_DATA1
 237  006C                      ;SET     PB            ;;SET PB0,PB1 Pull-Up
 238  006C  0714                MOV     A,PB          ;;Read on column value to a_COL_VALUE
 239  006D  0080     R          mov     COL_VALUE,A     ;;
 240  006E              
 241  006E  0F01                mov     A,1
 242  006F  0080     R          mov     a_SR11,A
 243  0070  0FFB                mov     A,11111011b       ;;
 244  0071  0080     R          mov     a_SR10,A
 245  0072                     ; mov     A,COL_VALUE     ;; This column value to ACC
 246  0072                    ;  SNZ     COL_VALUE.7
 247  0072                    ;  JMP     KEY_ROW_7
 248  0072                    ;  SNZ     COL_VALUE.6
 249  0072                    ;  JMP     KEY_ROW_6
 250  0072                    ;  SNZ     COL_VALUE.5
 251  0072                    ;  JMP     KEY_ROW_5
 252  0072  3800     R          SNZ     COL_VALUE.4
 253  0073  287B                JMP     KEY_ROW_4
 254  0074  3800     R          SNZ     COL_VALUE.3
 255  0075  287D                JMP     KEY_ROW_3
 256  0076  3800     R          SNZ     COL_VALUE.2
 257  0077  287F                JMP     KEY_ROW_2
 258  0078                    ;  SNZ     a_COL_VALUE.1
 259  0078                    ;  JMP     KEY_ROW_1
 260  0078                    ;  SNZ     a_COL_VALUE.0
 261  0078                    ;  JMP     KEY_ROW_0
 262  0078  2879                jmp		$+1
 263  0079  0000                nop
 264  007A  2886                JMP     COL_WITHOUT_KEY
 265  007B                   ; KEY_ROW_7:
 266  007B                    ;  rl      a_SR10        ;; a_SR10 rotate to "01111111b"
 267  007B                    ;  inc     a_SR11
 268  007B                   ; KEY_ROW_6:
 269  007B                   ;   rl      a_SR10        ;; a_SR10 rotate to "10111111b"
 270  007B                   ;   inc     a_SR11
 271  007B                   ; KEY_ROW_5:
 272  007B                  ;    rl      a_SR10        ;; a_SR10 rotate to "11011111b"
 273  007B                  ;    inc     a_SR11
 274  007B                    KEY_ROW_4:
 275  007B  1880     R          rl      a_SR10        ;; a_SR10 rotate to "11101111b"
 276  007C  1480     R          inc     a_SR11
 277  007D                    KEY_ROW_3:
 278  007D  1880     R          rl      a_SR10        ;; a_SR10 rotate to "11110111b"
 279  007E  1480     R          inc     a_SR11
 280  007F                  ;  KEY_ROW_2:
 281  007F                  ;    rl      a_SR10        ;; a_SR10 rotate to "11111011b"
 282  007F                  ;    inc     a_SR11
 283  007F                  ;  KEY_ROW_1:
 284  007F                  ;    rl      a_SR10        ;; a_SR10 rotate to "11111101b"
 285  007F                  ;    inc     a_SR11
 286  007F                    KEY_ROW_2:
 287  007F  0F1C        		mov		a,01ch

⌨️ 快捷键说明

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