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

📄 lock.dt

📁 一个很好用的密码锁程序
💻 DT
📖 第 1 页 / 共 2 页
字号:
INCLUDE    "LOCK.INC"
;***************************************
;**************PROGRAM**************
;***************************************
          ORG     0X0001        ;单片机起始地址
INTERRUPT:                      ;中断服务程式执行地址
	      DISI
          MOV       A_BUFFER,A  ;断点进栈保护,将中断处理子程式中所有用到的寄存器保护起来
          SWAP      A_BUFFER
          SWAPA     R3
          MOV       R3_BUFFER,A
          MOV       A,R4
          MOV       R4_BUFFER,A
;--------------------------------------------       
INTTCC:
		  INC		KEY_TIME1
		  JBC		STTS,Z
		  INC		KEY_TIME
		  
		  JBS		KEY_F,PAUSE_TONE
		  JMP		INT_RET
		  MOV		A,@0X04
		  XOR		PORT6,A
;--------------------------------------------   
INT_RET:     
	 	 CLR	   R3F
	 	 MOV       A,R4_BUFFER         ;中断返回,将进栈保护的数据出栈
          MOV       R4,A
          SWAPA     R3_BUFFER
          MOV       R3,A
          SWAPA     A_BUFFER
          RETI
;****************************************
;          main program start
;****************************************
;***********************************
			ORG	0X0FFF;****
			JMP	START;******
;***********************************
		  ORG       0X0020
START:
		DISI
		WDTC 
		
		CLR		BSR
		MOV		A,@0X50
		CONTW
		MOV		A,@0X07
		IOW		PORT7
		MOV		A,@0X10
		IOW		IOC6
		MOV		A,@0X00
		IOW		IOC5
		MOV		A,@0XFF
		IOW		IOCB
		MOV		A,@0XFF
		MOV		PORT7,A
		MOV		A,@0X0B
		MOV		PORT6,A
		MOV		A,@0X01
		IOW		IOCF
		CLR		0X3F
;***********************************************		
		CLR		BSR
		MOV		A,AAAAAA
		XOR		A,@0XAA
		JBS		STTS,Z
		CLR		RECORD_ERR
		MOV		A,AAAAAA
		XOR		A,@0XAA
		JBC		STTS,Z
		INC		RECORD_ERR
		MOV		A,AAAAAA
		XOR		A,@0XAA
		JBS		STTS,Z
		JMP		ALL_RAM_INIT
		MOV		A,@0X40
		AND		KEY_F,A
		JMP		ALL_RAM_INIT0
;**************RAM初始化**********************          
BANK_RAM_INIT:;;;;;;;;;;;;;;;;;;;;CLR TOW LINES BANK
		CLR 		 R0
		INC		  BSR
		MOV		  A,BSR
		XOR		  A,@0X3E
		JBS		  STTS,Z
		JMP		  BANK_RAM_INIT
		RET
DIR_RAM:
		MOV		A,@0X10
		MOV		BSR,A
RAM_INIT:
		CLR		 R0
		INC 		BSR
		MOV	   A,BSR
		XOR		A,@0X20
		JBS		  STTS,Z
		JMP 		RAM_INIT
		RET
ALL_RAM_INIT:;**********
		CALL		DIR_RAM
ALL_RAM_INIT0:;**********
		MOV		A,@BANK0
		MOV		BSR,A
		CALL       BANK_RAM_INIT
		MOV		A,@0XAA
		MOV		AAAAAA,A
		ENI
;*********MAIN**********
MAIN:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		BC		 STTS,PS0
		BC		 STTS,PS1
		
		JBS		KEY_F,ERROR_GUEST
		JMP		NO_ERR_GUEST
		JBC		RECORD_ERR,7
		JMP		ALL_RAM_INIT
NO_ERR_GUEST:
		MOV		A,KEY_TIME
		ADD		A,@0X2;0
		JBC		STTS,C
		JMP		START
		NOP
		CALL	   KEY_SCAN1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		NOP
		CALL	   KEY_FUNCTION;;;;;;;;;;;;;;
		NOP
		JBS   	 KEY_F,DEL_ALL;
		JMP		MAIN1;
		
		BC		 KEY_F,DEL_PASS
		BC		 KEY_F,SET_PASS
		
		CALL	   CLR_ERROR_CODE;
		MOV		A,@8
		MOV		START_ADDR,A
MAIN0:
		CALL		WRITE_CODE;

		MOV		A,@8;
		ADD		START_ADDR,A;
		MOV		A,START_ADDR;
		JBS		STTS,Z;
		JMP		MAIN0;
		BC    	 KEY_F,DEL_ALL;
		CLR		KEY_TIME
		CLR		KEY_TIME1
MAIN1:
		NOP
		CALL	   KEY_SCAN2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
		
		MOV		A,KEY_F
		AND		A,@0X06
		XOR		A,@0X06
		JBS		STTS,Z
		JMP		 MAIN
		BC		 PORT6,GREEN
		BC		 PORT6,RED
		JMP		 MAIN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;*************THE  OK  SUBPROFREM**************
KEY_SCAN1:     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DOWN?
		JBC		KEY_F,ERROR_GUEST
		RET
		JBC 	   KEY_F,KEY_PRESED
		RET

REAL_PRESSED:
		MOV		  A,TEMP1
		AND		  A,@7
		TBL
		RET
		JMP		  LINE0_PRESSED
		JMP		  LINE1_PRESSED
		JMP		  LINE2_PRESSED
		JMP		  LINE3_PRESSED
		RET
		RET
		RET
LINE0_PRESSED:;;;;;;;;;;;;;;;;;;;;
		JBC		  PORT7,0
		JMP		  SECOND_PRESSED
		MOV		  A,@1
		MOV		  KEY_STATE,A
		BS		   KEY_F,KEY_PRESED
		;BS		   PORT6,TONE
		BS		   KEY_F,PAUSE_TONE
		RET
SECOND_PRESSED:
		JBC		  PORT7,1
		JMP		  THIRD_PRESSED
		MOV		  A,@2
		MOV		  KEY_STATE,A
		BS		   KEY_F,KEY_PRESED
		;BS		   PORT6,TONE
		BS		   KEY_F,PAUSE_TONE
		RET
THIRD_PRESSED:
		JBC		  PORT7,2
		JMP		  THIRD_PRESSED
		MOV		  A,@3
		MOV		  KEY_STATE,A
		BS		   KEY_F,KEY_PRESED
		;BS		   PORT6,TONE
		BS		   KEY_F,PAUSE_TONE
		RET
LINE1_PRESSED:;;;;;;;;;;;;;;;;;;;;;;
		CALL		 LINE0_PRESSED
		MOV		  A,@3
		ADD		  KEY_STATE,A
		RET
LINE2_PRESSED:;;;;;;;;;;;;;;;;;;;;;;
		CALL		 LINE0_PRESSED
		MOV		  A,@6
		ADD		  KEY_STATE,A
		RET
LINE3_PRESSED:;;;;;;;;;;;;;;;;;;;;;;
		CALL		 LINE0_PRESSED
		MOV		  A,@9
		ADD		  KEY_STATE,A
		RET
JUDGE_LINE:
		MOV		A,@0XFF
		MOV		PORT7,A
		BC		 PORT7,B3
		MOV		A,PORT7
		AND		A,@0X07
		XOR		A,@0X07
		JBS		STTS,Z
		JMP		KEY_PRESSED0
LINE_1:
		MOV		A,@0XFF
		MOV		PORT7,A
		BC		 PORT7,B4
		MOV		A,PORT7
		AND		A,@0X07
		XOR		A,@0X07
		JBS		STTS,Z
		JMP		KEY_PRESSED1
LINE_2:
		MOV		A,@0XFF
		MOV		PORT7,A
		BC		 PORT7,B5
		MOV		A,PORT7
		
KEY_PRESSED3:
		INC		TEMP1
KEY_PRESSED2:
		INC		TEMP1
KEY_PRESSED1:
		INC		TEMP1
KEY_PRESSED0:
		INC		TEMP1
		
		CLR		KEY_TIME
		CLR		KEY_TIME1
		
		RET
KEY_SCAN2:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UP?
		CLR		BSR
		CLR		KEY_STATE
		
		MOV		A,PORT7
		AND		A,@0X07
		XOR		A,@0X07
		JBS		STTS,Z
		RET
		CALL        DELAY10MS0
		MOV		 A,PORT7
		AND		 A,@0X07
		XOR		 A,@0X07
		JBS		 STTS,Z
		RET
		CLR	 	BSR
		CLR		 KEY_STATE
		BC		  KEY_F,KEY_PRESED
		;BC		  PORT6,TONE
		BC		  KEY_F,PAUSE_TONE
		RET
DELAY10MS:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Delay time 10ms
          CLR	 BSR
          MOV     A,@0X80;20         
          MOV     TEMP3, A
          MOV     A,@248
          MOV     TEMP4, A
DELAYWAIT:
          DJZ     TEMP4
          JMP     DELAYWAIT
          MOV     A,@248
          MOV     TEMP4, A
          DJZ     TEMP3
          JMP     DELAYWAIT
          RET
DELAY10MS0:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;Delay time 10ms
          CLR	 BSR
          MOV     A,@0X20         
          MOV     TEMP3, A
          MOV     A,@248
          MOV     TEMP4, A
DELAYWAIT0:
          DJZ     TEMP4
          JMP     DELAYWAIT0
          MOV     A,@248
          MOV     TEMP4, A
          DJZ     TEMP3
          JMP     DELAYWAIT0
          RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DEL_KEY:
		CLR		BSR
		MOV		A,BANK0
		XOR		A,@0XFF
		JBS		STTS,Z
		JMP		DEL_FUNC
		JMP		ADMIN_SW
DEL_FUNC:
		MOV		A,BANK0
		XOR		A,@0X0A
		JBC		STTS,Z
		JMP		ADMIN_SW
DEL_FUNC0:		
		MOV		A,@LAST_CODE
		MOV		BSR,A
LOOP_DEL:
		MOV		A,R0
		XOR		A,@0XFF
		JBS		STTS,Z
		JMP		OUT_DEL
		DEC		BSR
		JBS		BSR,B5
		RET
		JMP		LOOP_DEL
OUT_DEL:
		MOV		A,@0XFF
		MOV		R0,A
		RET		
ADMIN_SW:
		JMP		NOR_CODE
		
KEY_FUNCTION:
	
		
		JBS		KEY_F,ADMIN_F
		JMP		NOT_SET_FUNC
		JBC		KEY_F,ADMIN_FF
		JMP		SET_PASSWORD
NOT_SET_FUNC:
		MOV		A,KEY_STATE;###
		XOR		A,@0X0C
		JBC		STTS,Z
		JMP		COM_CODE
		
		MOV		A,KEY_STATE;***
		XOR		A,@0X0A
		JBC		STTS,Z
		JMP		DEL_KEY
NOR_CODE:		
		MOV		A,RECORD_F
		MOV		BSR,A
		MOV		A,KEY_STATE
		MOV		R0,A
		INC		RECORD_F
		MOV		A,RECORD_F
		ADD		A,@0XFF-0X26
		JBS		STTS,C
		RET
		JMP		ERROR_TONE
GUEST_ERROR0:
		BC		 KEY_F,ADMIN_F
		JMP		GUEST_ERROR
COM_CODE:
		MOV		A,@BANK0
		MOV		BSR,A
		MOV		A,R0
		XOR		A,@0XFF
		JBC		STTS,Z
		JMP		GUEST_ERROR0
		MOV		A,R0
		XOR		A,@0X0A
		JBS		STTS,Z
		JMP		GUEST_COM
ADMIN_COM:
		INC		BSR
		MOV		A,R0
		XOR		A,@0X0A
		JBS		STTS,Z
		JMP		ERROR_TONE
		MOV		A,BSR
		XOR		A,@LAST_LAST
		JBS		STTS,Z
		JMP		ADMIN_COM
		BS		 KEY_F,ADMIN_F
		
		MOV		A,@BANK0
		MOV		RECORD_F,A
		
		JMP		CLR_ERROR_CODE
GUEST_COM:
		CLR		RECORD_EE
LOOP_GUEST_COM:
		JBS		PORT6,INIT_PIN
		JMP		BACK_DOOR
		
		MOV		A,RECORD_EE
		ADD		A,@0X8;6
		JBC		STTS,C
		JMP		ERROR_GUST_TONE;GUEST_ERROR
		MOV		A,@0X20
		MOV		BSR,A
		MOV		RECORD_F,A
		MOV		TEMP3,A
		
		MOV	 A,@BANK0
        MOV	 BSR,A
        MOV	 A,@BANK0+0X10
        MOV	 TEMP3,A
		CLR     TEMP2
		MOV     A,@8;6
		MOV     DATA_LEN,A
		JMP     Read_Bytes_From_EEPROM
GUEST_ERROR:
		INC		RECORD_ERR
		JBS		RECORD_ERR,3
		JMP		ERROR_TONE
		BS		 KEY_F,ERROR_GUEST
		CLR		RECORD_ERR
		JMP		ERROR_TONE
COMPLETE_READ:		
		CLR		TEMP4
		MOV		A,@0X20
		MOV		BSR,A
LOOP_COM:
		MOV		A,R0
		BS		 BSR,B4
		XOR		A,R0
		JBS		STTS,Z
		JMP		NEXT_ADDR
		INC		 BSR
		BC		 BSR,B4
		MOV		A,BSR
		ADD		A,@0XFF-0X25
		JBS		STTS,C
		JMP		LOOP_COM
		JBC		 KEY_F,ADMIN_F
		JMP		ADMIN_WORD_IN
		BC		 KEY_F,ADMIN_F
OPEN_GATE:
		CLR		RECORD_ERR
		BC		PORT6,GATE_SW
		BC		PORT6,GREEN

		CALL		DELAY10MS
		CALL		DELAY10MS
		CALL		DELAY10MS

⌨️ 快捷键说明

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