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

📄 password clock9.lst

📁 密码锁 1. 出厂的统一密码为个人码″12345678″
💻 LST
📖 第 1 页 / 共 3 页
字号:
文件:PASSWORD CLOCK9.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              debounce_num	equ		16
  17  0000              scl				equ		pb.1		;时钟信号引脚定义
  18  0000              sda				equ		pb.0		;串行数据引脚定义
  19  0000              read_out		equ		[3ch]		;写暂存器
  20  0000              write_in		equ		[3dh]		;读暂存器
  21  0000              word_address	equ		[3eh]		
  22  0000              data_8			equ		[3fh]
  23  0000              ;---------------------------
  24  0000              
  25  0000              ;---------------------------
  26  0000              ;宏定义
  27  0000              ;延迟宏,延迟100微秒
  28  0000              d_1		macro
  29  0000              	local	label
  30  0000              	mov		a,64h
  31  0000              	mov		delay,a
  32  0000              label:
  33  0000              	sdz		delay
  34  0000              	jmp		label
  35  0000              endm
  36  0000              ;*************************************************************
  37  0000              SAMPLE  .SECTION        'DATA'
  38  0000              
  39  0000              ;; --- Temp RAM ---
  40  0000  00                  a_SR10          DB     ?      ;;WORK Temp Register
  41  0001  00                  a_SR11          DB     ?      ;;
  42  0002  00          		temp_num		DB     ? 
  43  0003              
  44  0003              ;;------CODE   RAM---------
  45  0003              
  46  0003  0008[       		array_data	db	8 dup (?) 
            00
            ]
  47  000B              
  48  000B              ;;--------- Program RAM --------
  49  000B  00                  COLUMMN     	DB     ?      ;;Scan Key Colummn Step Number
  50  000C  00                  KEY_CODE0      	DB     ?      ;;Save Previous Key Number
  51  000D  00                  KEY_CODE       	DB     ?      ;;Scan Key Number
  52  000E  00                  COL_VALUE     	DB     ?      ;;Read on column value to a_COL_VALUE
  53  000F  00                  KD_TEMP         DB     ?      ;;Key Debounce Check Times
  54  0010  00                  NKD_TEMP        DB     ?      ;;Key Release Confirm Times
  55  0011  00          		KEY_DATA		DB     ?	   ;;PA temp register
文件:PASSWORD CLOCK9.ASM 盛群编译器版本 2.86 页次2

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

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

 176  0045              judge:
 177  0045  3092        		set		pa.1
 178  0046  2329        		call	delay30ms
 179  0047  3492        		clr		pa.1
 180  0048              		
 181  0048  0F70        		mov		a,070h
 182  0049  0080     R  		mov		t_count,a
 183  004A  0F50        		mov		a,050h
 184  004B  0080     R  		mov		t_count1,a
 185  004C              
 186  004C  3C00     R  		sz		release_flg
 187  004D  294A        		jmp		release_proc
 188  004E  3C00     R  		sz		flg_chang_key
 189  004F  290E        		jmp		manage_code
 190  0050  3C00     R  		sz		flg_chang_manage
 191  0051  292C        		jmp		chang_manage_proc
 192  0052  3C00     R  		sz		flg_chang_personal
 193  0053  28F1        		jmp		chang_personal_proc
 194  0054  28D6                JMP     personal_code    ;
 195  0055              
 196  0055              SLEEP:
 197  0055  3C12        		sz		pa.0
 198  0056  2858        		jmp		$+2
 199  0057  2B1F        		jmp		low_voltage
 200  0058              
 201  0058  1780     R  		sdz		t_count1				;\
 202  0059  282A                JMP     MAIN_PROC				; \
 203  005A  1780     R  		sdz		t_count					; /if no key code wait 25s
 204  005B  2858                JMP     $-3						;/
 205  005C              		
 206  005C  3E94        		sz 		PB.5		
 207  005D  0002                halt                        ;System Halt
 208  005E  0F70        		mov		a,070h
 209  005F  0080     R  		mov		t_count,a
 210  0060  0F50        		mov		a,050h
 211  0061  0080     R  		mov		t_count1,a
 212  0062  282A                JMP     MAIN_PROC         	;Any Key WakeUp
 213  0063              ;@************* SUBROUTINE[xx]: Scan 12 Key Matrix (3x4) ************
 214  0063              
 215  0063              SCAN_KEY_PROC:
 216  0063                ;;--- READ KEY PROCEDURE ---
 217  0063                            ;;Initiate Process
 218  0063  1F00     R          clr     KEY_CODE          ;
 219  0064  3400     R          clr     fg_PressRec       ;
 220  0065  1F00     R          clr     COLUMMN           ;
 221  0066  3400     R          clr     fg_Multi_Key      ;
 222  0067              
 223  0067  0FF9        		mov		a,0f9h
 224  0068  0092        		mov		pa,a
 225  0069  0FFD        		mov		a,0fdh
 226  006A  0080     R  		mov		key_data,a
 227  006B  0F0C        		mov		a,0ch
 228  006C  0080     R  		mov		key_data1,a
 229  006D                NEXT_COLUMN:
 230  006D  0700     R  		mov		a,key_data1		
 231  006E  0400     R  		xor		a,key_data
 232  006F  1880     R  		rl		key_data1
 233  0070  0080     R          mov     key_data,A
 234  0071  0092                mov     PA,A          ;Scan Column PA PORT OUTPUT
 235  0072  0000                NOP     
文件:PASSWORD CLOCK9.ASM 盛群编译器版本 2.86 页次5

 236  0073  0000        		Nop                   ;
 237  0074                ;;--- READ PB PORT  ---
 238  0074  0714                MOV     A,PB          ;;Read on column value to a_COL_VALUE
 239  0075  0080     R          mov     COL_VALUE,A     ;;
 240  0076  0F01                mov     A,1
 241  0077  0080     R          mov     a_SR11,A
 242  0078  0FFB                mov     A,11111011b       ;;
 243  0079  0080     R          mov     a_SR10,A			;; This column value to ACC
 244  007A  3800     R          SNZ     COL_VALUE.4
 245  007B  2883                JMP     KEY_ROW_4
 246  007C  3800     R          SNZ     COL_VALUE.3
 247  007D  2885                JMP     KEY_ROW_3
 248  007E  3800     R          SNZ     COL_VALUE.2
 249  007F  2887                JMP     KEY_ROW_2
 250  0080  2881                jmp		$+1
 251  0081  0000                nop
 252  0082  288E                JMP     COL_WITHOUT_KEY
 253  0083                    KEY_ROW_4:
 254  0083  1880     R          rl      a_SR10        ;; a_SR10 rotate to "11101111b"
 255  0084  1480     R          inc     a_SR11
 256  0085                    KEY_ROW_3:
 257  0085  1880     R          rl      a_SR10        ;; a_SR10 rotate to "11110111b"
 258  0086  1480     R          inc     a_SR11
 259  0087                    KEY_ROW_2:
 260  0087  0F1C        		mov		a,01ch
 261  0088  0680     R  		andm 	a,a_SR10 
 262  0089  0600     R  		AND		a,COL_VALUE
 263  008A              
 264  008A  0400     R          xor     A,a_SR10      ;;Check ROW Multi-Key
 265  008B  3D0A                SZ      z
 266  008C  2892                JMP     COL_WITH_KEY
 267  008D                  COL_ERROR_KEY:
 268  008D  3000     R          set     fg_Multi_Key
 269  008E              
 270  008E                  COL_WITHOUT_KEY:
 271  008E  288F                jmp		$+1
 272  008F  2890                jmp		$+1
 273  0090  2891                jmp		$+1
 274  0091  289D                JMP     READY_2_NEXT_COLUMN
 275  0092                  COL_WITH_KEY:               ;;KEY NUMBER PROCESS
 276  0092  0F02        		mov		a,2				;;\
 277  0093  0080     R  		mov		temp_num,a		;; \
 278  0094  0700     R  		mov		a,COLUMMN		;;  \
 279  0095  0300     R  		add		a,COLUMMN		;;   /COLUMMN  * 3 --> ACC
 280  0096              	   ;MOV		COLUMMN,a		;;	/
 281  0096  1780     R  		sdz		temp_num		;; /
 282  0097  2895        		jmp		$-2				;;/
 283  0098  0300     R          add     A,a_SR11        ;;
 284  0099  0080     R          mov     KEY_CODE,A      ;;
 285  009A  3C00     R          SZ      fg_PressRec     ;;Check Column Multi-Key
 286  009B  3000     R          set     fg_Multi_Key    ;;
 287  009C  3000     R          set     fg_PressRec     ;;
 288  009D                READY_2_NEXT_COLUMN:
 289  009D  1480     R          inc     COLUMMN 
 290  009E  0700     R          mov     A,COLUMMN
 291  009F  0C04                xor     A,4
 292  00A0  390A                SNZ     z
 293  00A1  286D                JMP     NEXT_COLUMN
 294  00A2  0000                nop
 295  00A3                READ_KEY_COMPLETE:
文件:PASSWORD CLOCK9.ASM 盛群编译器版本 2.86 页次6

 296  00A3              
 297  00A3              ;@************* SUBROUTINE[xx]: Check Key Active ************
 298  00A3              ;@--- Scan Key Complete, Check key valid ? ---
 299  00A3              CHECK_KEY_ACTIVE:
 300  00A3              
 301  00A3  1080     R          SZ      KEY_CODE       ;;If a_KEY_NUM = ffh, invalid key
 302  00A4  28A6                JMP     VALID_KEY_CHK
 303  00A5  28BF                JMP     INVALID_KEY_CHK
 304  00A6                ;@--------------------------
 305  00A6                VALID_KEY_CHK:
 306  00A6  1080     R          SZ      KEY_CODE0      ;;Check New Key
 307  00A7  28A9                JMP     VALID_KEYC_PRO
 308  00A8  28CE                JMP     KEY_DEB

⌨️ 快捷键说明

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