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

📄 带02的密码验证修改.asm

📁 用BC7281键盘辛片,通过12864显示,有键盘操作,主要是密码校对,提示
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;******************************************************
;**********密码识别程序,原始密码820315****************
;******************************************************
          ;50H-55H存储比对密码
          ;56H-5BH,存放修改密码
          ;5DH,5EH暂存键值 
          ;30-3DH,处理过的时间位
          ;40-46H时钟接收,发送位
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

                         SID     BIT   P2.1  ;lcm12864
                         SCLK    BIT   P2.0
  
                         CLK     BIT   P2.3  ;KEYSET7281a
                         KEY     BIT   P3.3
                         DAT     BIT   P3.4

                         SCL     bit   P3.6
                         SDA     bit   P2.7  ;端口定义24c02

                         T_CLK   Bit   P2.4  ;实时时钟1302	  
                         T_IO    Bit   P2.2   	  
                         T_RST   Bit   P2.5

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                         BIT_COUNT	EQU	7FH
                         TIMER		EQU	7EH
                         TIMER1		EQU	7DH
                         TEMP		EQU	7CH
                         DATA_IN        EQU	7bH
                         DATA_OUT	EQU	7aH
                         second         EQU     40h
                         COM            EQU     79H
                         DATT           EQU     78H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                       
                     ORG 0000H
                     LJMP MAINO
    
	             ORG  0013H          ;外部中断1                                                                                                                                                                                                                                                       ORG 0013H
                     LJMP KEYSET
                     ORG 0100H
            MAINO:
                                                                                                                                                                                                                                                                                                                                                                                                                        
                        MOV SP,#60H
                        CLR RS1
	                CLR RS0

             	        SETB   CLK
	        	SETB   DAT
	                SETB   SID
		        SETB   SCLK
           ;lcm
	         	LCALL  DELAY10
	        	MOV    COM,#30H   ;功能设置---8BIT控制界面,基本指令集
		        LCALL  WRI        ;调用写指令子程序
		        LCALL  DELAY10
		        MOV    COM,#0CH   ;显示打开,光标关,反白显示关,0D.0E.0FH
		        LCALL  WRI
		        LCALL  DELAY10
	        	MOV    COM,#01H   ;清除屏幕显示,将DDRAM的地址计数器归零
		        LCALL  WRI
           ;KEY
 
 		        MOV     TIMER,#50
    START_DELAY:	MOV     TIMER1,#255		;延时以确保BC728X完成复位
    START_DELAY1:	DJNZ    TIMER1,START_DELAY1
		        DJNZ    TIMER,START_DELAY
		        MOV     DATA_OUT,#12H	;BC728X初始化
		        CALL    SEND
		        MOV     DATA_OUT,#80H	;设定为164模式, 不反相
		        CALL    SEND  ;KMS为键盘工作模式的,KMS=0,当有键按下并保
                                   ;KEY一直为低电平,直至按键恢复才变为高电

           ;50h-55h      56h-5Bh   5D=BCD  5E=ASCII
           ;TIME********* DS1302 时钟初始化 **************
                mov		40h,#00h	;秒赋初值
  	        mov		41h,#00h  	;分赋初值
 	        mov		42h,#12h	;时赋初值
          	mov		43h,#09h	;日赋初值
 	        mov		44h,#12h	;月赋初值
	        mov		45h,#06h	;星期赋初值
	        mov		46h,#06h	;年赋初值
	        lcall   set1302		;调用初值设定子程序
                 
                ;密码初值820315
                             mov 50H,#04H
                             MOV 51H,#04H
                             mov 52H,#04H
                             MOV 53H,#04H
                             mov 54H,#04H
                             MOV 55H,#04H
                             LCALL WRIDAT

                       




	             	SETB  IT1 ;INT1下降沿有效
	            	SETB  EX1 ;开启中断
     	        	SETB  EA           ;开放所有中断


   
                   MOV 22H,#0FFH       ;10h-17h数字,删除,确认,改密,改时,输密,退出。
                   MOV 20H,#0FFH       ;00h-07h
                   MOV 23H,#0FFH       ;六位密码的标志位18h-1Dh,分别对应密码的1-6*位
                   MOV 24H,#0FFH       ;20-27h,20-23位确认标志用,24-27位删除标志用
                   MOV 25H,#0FFH       ;28-2eh                       
                   MOV 2FH,#0FFH       ;7E 7F为密码通过标志位
                  clr 06h
		  CLR 07H
   
                        LCALL DELAY10
	      		LCALL SCR1
                        lcall delay1s   
                        lcall delay1s	  
                        LCALL DELAY10
			LCALL  DELAY10
	        	MOV    COM,#01H   ;清除屏幕显示,将DDRAM的地址计数器归零
		        LCALL  WRI
   
     MAIN:
                        LCALL DELAY10
                        JB 06H,MAIN
                        JB 07H,MAIN
      MAIN1:
                        lcall get1302		;调用时钟子程序,时钟自动加时
                        LCALL DIGBCD
                        LCALL DIP7BY   
                     	AJMP MAIN
 

               ;输入密码:
       KEYCODE:
		        JB  18H,NXCODE2
		    	MOV 56H,5DH
                        MOV 70H,5EH

		    	SETB  18H
	    		CLR   19H
                        LCALL  CODEIN       ;显示新输入的密码
		    	LCALL  CODEBIT;键入的数字键已经处理完毕 
		    	MOV 56H,5DH
                        MOV 70H,5EH
             	        LJMP  EXKYCD
		        
       NXCODE2:         JB  19H,NXCODE3
		     	MOV 57H,5DH
                         MOV 71H,5EH
		    	SETB  19H
		    	CLR   1AH
                        LCALL  CODEIN       ;显示新输入的密码
                        LCALL  CODEBIT
                        LJMP  EXKYCD

       NXCODE3:         JB  1AH,NXCODE4
			MOV 58H,5DH
                        MOV 72H,5EH
		     	SETB  1AH
		    	CLR   1BH
	                LCALL  CODEIN       ;显示新输入的密码
	    		LCALL  CODEBIT
		    	LJMP  EXKYCD

       NXCODE4:         JB  1BH,NXCODE5
		        MOV 59H,5DH
                        MOV 73H,5EH
			SETB  1BH
		     	CLR   1CH
	                LCALL  CODEIN       ;显示新输入的密码
	        	LCALL  CODEBIT
		    	LJMP  EXKYCD

        NXCODE5:        JB  1CH,NXCODE6
		     	MOV 5AH,5DH
                        MOV 74H,5EH
			SETB  1CH
		        CLR   1DH
                        LCALL  CODEIN       ;显示新输入的密码
    			LCALL  CODEBIT
		    	LJMP  EXKYCD

        NXCODE6:        JB  1DH,NXCODE7
			MOV 5BH,5DH
                        MOV 75H,5EH
			SETB  1DH
			CLR   30H
                        LCALL  CODEIN       ;显示新输入的密码
	     		LCALL  CODEBIT
     			LJMP  EXKYCD

        NXCODE7:        SETB 00H
                        SETB 01H
                        SETB 02H
                        CLR  30H           ;表示输入密码数据完毕,等待确认键
                       
	   EXKYCD:	
		           RET


;**************************************************************************
 
                                ;比较输入的密码与读出的密码是否一样,然后作出相应的指示
                             
                                ;比较输入的密码与读出的密码是否一样,然后作出相应的指示
                             
	       COMPCODE:

                  MOV A,50H
                  CJNE A,56H,ERR
	        MOV A,51H
                CJNE A,57H,ERR
	        MOV A,52H
                CJNE A,58H,ERR
	        MOV A,53H
                CJNE A,59H,ERR
	        MOV A,54H
                CJNE A,5aH,ERR
	        MOV A,55H
                CJNE A,5bH,ERR
              
     

                  LCALL MIMAOK  ;密码通过
		        LCALL DELAY1S
	   LCALL DELAY1S
	         LCALL  DELAY10			
		    	MOV  COM,#01H	  ;清除屏幕显示
		        LCALL  WRI
 		        LCALL  DELAY10
			  		
		  clr 7Fh   ;表示密码通过,相关操作必须先检验是否已经为0
                  clr 06h    ;开始正常显示
	          CLR 07H    ;开始正常显示
                  RET
 ;*********************************
 ;*********************************
       ERR:
                        MOV    COM,#06H   ;显示打开,光标关,反白显示关,0D.0E.0FH
		        LCALL  WRI
 		        LCALL  DELAY10			
		    	MOV  COM,#01H	  ;清除屏幕显示
		        LCALL  WRI
 		        LCALL  DELAY10

			MOV  COM,#92H     ;从第2行开始显示         
			LCALL  WRI
			MOV  DATT,#0C3H   ;显示"密"
			LCALL  WRD
			MOV  DATT,#0DCH
			LCALL  WRD

			MOV  COM,#93H
			LCALL  WRI
			MOV  DATT,#0C2H   ;显示"码"
			LCALL  WRD
			MOV  DATT,#0EBH
			LCALL  WRD 

			MOV  COM,#94H     
			LCALL  WRI
			MOV  DATT,#0B4H   ;显示"错"
			LCALL  WRD
			MOV  DATT,#0EDH
			LCALL  WRD

			MOV  COM,#95H
			LCALL  WRI
			MOV  DATT,#0CEH  ;显示"误"
			LCALL  WRD
			MOV  DATT,#0F3H
			LCALL  WRD                        
	                                  ;从第3行开始显示 
			MOV  COM,#8AH
			LCALL  WRI
			MOV  DATT,#0C7H   ;显示"请"
			LCALL  WRD
			MOV  DATT,#0EBH
			LCALL  WRD

			MOV  COM,#8BH
			LCALL  WRI
			MOV  DATT,#0D6H   ;显示"重"
			LCALL  WRD
			MOV  DATT,#0D8H
			LCALL  WRD 

			MOV  COM,#8CH     
			LCALL  WRI
			MOV  DATT,#0D0H   ;显示"新"
			LCALL  WRD
			MOV  DATT,#0C2H
			LCALL  WRD

			MOV  COM,#8DH
			LCALL  WRI
			MOV  DATT,#0CAH  ;显示"输"
			LCALL  WRD
			MOV  DATT,#0E4H
			LCALL  WRD 

			MOV  COM,#8EH
			LCALL  WRI
			MOV  DATT,#0C8H  ;显示"入"
			LCALL  WRD
			MOV  DATT,#0EBH
			LCALL  WRD 
                        LCALL DELAY1S
                        LCALL DELAY1S
                         LCALL DELAY1S
	    	        LCALL  DELAY10
                        MOV  COM,#01H   ;清除屏幕显示,
		        LCALL  WRI
	                LCALL  DELAY10
                         clr 06h
	                 CLR 07H
                          RET
		
;***********************


MIMAOK:	            ;   SETB 05H	;输密可以进行
			MOV  COM,#01H	  ;清除屏幕显示
		        LCALL  WRI
 		        LCALL  DELAY10
		  	MOV  COM,#92H      ;从第2行开始显示
			LCALL  WRI
			MOV  DATT,#0C3H    ;显示"密"
			LCALL  WRD
			MOV  DATT,#0DCH
			LCALL  WRD

			MOV  COM,#93H
			LCALL  WRI
			MOV  DATT,#0C2H    ;显示"码"
			LCALL  WRD
			MOV  DATT,#0EBH
			LCALL  WRD 

			MOV  COM,#94H     
			LCALL  WRI
			MOV  DATT,#0D5H    ;显示"正"
			LCALL  WRD
			MOV  DATT,#0FDH
			LCALL  WRD

			MOV  COM,#95H
			LCALL  WRI
			MOV  DATT,#0C8H   ;显示"确"
			LCALL  WRD
			MOV  DATT,#0B7H
			LCALL  WRD 

		        MOV    COM,#06H   ;显示打开,光标关,反白显示关,0D.0E.0FH
		        LCALL  WRI
		        LCALL  DELAY10
                        lcall delay1s
                        lcall delay1s
                        lcall delay1s
	    	        LCALL  DELAY10
                        MOV  COM,#01H   ;清除屏幕显示,
		        LCALL  WRI
	                LCALL  DELAY10
                         clr 06h
	                 CLR 07H
                         CLR 13H;允许密码修改
                         CLR 7FH
                          RET
;************************************
	SCR1:         ;  MOV  COM,#01H   ;清除屏幕显示,
		      ;  LCALL  WRI
	             ;   LCALL  DELAY10

			MOV  COM,#82H    ;从第2行开始显示
			LCALL  WRI
			MOV  DATT,#0B0H  ;显示"爱 "
			LCALL  WRD
			MOV  DATT,#0AEH
			LCALL  WRD

			MOV  COM,#83H
			LCALL  WRI
			MOV  DATT,#0B6H  ;显示"尔"
			LCALL  WRD
			MOV  DATT,#0FBH
			LCALL  WRD

			MOV  COM,#84H
			LCALL  WRI
			MOV  DATT,#0C2H  ;显示"玛"
			LCALL  WRD
			MOV  DATT,#0EAH
			LCALL  WRD

			MOV  COM,#85H
			LCALL  WRI
			MOV  DATT,#0BFH  ;显示"科"
			LCALL  WRD
			MOV  DATT,#0C6H
			LCALL  WRD 
			
			MOV  COM,#86H
			LCALL  WRI
			MOV  DATT,#0BCH  ;显示"技"
			LCALL  WRD
			MOV  DATT,#0BCH
			LCALL  WRD

			MOV  COM,#91H    ;从第3行开始显示
			LCALL  WRI
			MOV  DATT,#0BAH  ;显示"虹 "
			LCALL  WRD
			MOV  DATT,#0E7H
			LCALL  WRD

			MOV  COM,#92H
			LCALL  WRI
			MOV  DATT,#0C4H  ;显示"膜"
			LCALL  WRD
			MOV  DATT,#0A4H
			LCALL  WRD

			MOV  COM,#93H
			LCALL  WRI
			MOV  DATT,#0CAH  ;显示"识"
			LCALL  WRD
			MOV  DATT,#0B6H
			LCALL  WRD

			MOV  COM,#94H
			LCALL  WRI
			MOV  DATT,#0B1H  ;显示"别"
			LCALL  WRD
			MOV  DATT,#0F0H
			LCALL  WRD 
			
			MOV  COM,#95H
			LCALL  WRI
			MOV  DATT,#0CFH  ;显示"系"
			LCALL  WRD
			MOV  DATT,#0B5H
			LCALL  WRD

     
			MOV  COM,#96H
			LCALL  WRI
			MOV  DATT,#0CDH  ;显示"统"
			LCALL  WRD
			MOV  DATT,#0B3H
			LCALL  WRD  

                           ;显示Earlma
			MOV  COM,#9DH
			LCALL  WRI
			MOV  DATT,#45H  
			LCALL  WRD
			MOV  DATT,#61H 
 			LCALL  WRD 

 			MOV  COM,#9EH     
			LCALL  WRI
			MOV  DATT,#72H   
			LCALL  WRD
			MOV  DATT,#6cH 
			LCALL  WRD

			MOV  COM,#9FH
			LCALL  WRI
			MOV  DATT,#6DH   
			LCALL  WRD
			MOV  DATT,#61H   
			LCALL  WRD
                        RET

;******************************************************************
    INTCODE: 
                         SETB 06H
                         SETB 07H
		        MOV  COM,#01H	  ;清除屏幕显示
		        LCALL  WRI
 		        LCALL  DELAY10	
		    	LCALL  DELAY10

		        MOV  COM,#01H	  ;清除屏幕显示

⌨️ 快捷键说明

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