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

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

📁 用BC7281键盘辛片,通过12864显示,有键盘操作,主要是密码校对,提示
💻 ASM
📖 第 1 页 / 共 5 页
字号:
		      MOV  31H,A         ;分解"年"的低位,  31H

                      MOV A,44H
                      ANL A,#0F0H
		      SWAP  A
                      ORL A,#30H   
                      MOV 32H,A          ;分解"月"的高位,  32H
              
                      MOV A,44H
               
                      ANL A,#0FH
                      ORL A,#30H  
		      MOV  33H,A         ;分解"月"的低位,  33H


    
                      MOV A,43H
                      ANL A,#0F0H
		      SWAP  A
                      ORL A,#30H   
                      MOV 34H,A          ;分解"日"的高位,  34H
              
                      MOV A,43H
                  
                      ANL A,#0FH
                      ORL A,#30H  
		      MOV  35H,A         ;分解"日"的低位,  35H


                      MOV A,45H          ;对于星期字节可以不做处理,基本不用
                      ANL A,#0FH
                      ORL A,#30H   
                      MOV 36H,A          ;分解"星期"的高位,  36H
              
                      MOV A,45H
                      SWAP A
                      ANL A,#0FH
                      ORL A,#30H  
		      MOV  37H,A         ;分解"星期"的低位,  37H


              
                      MOV A,42H
                    
                      ANL A,#0F0H
		      SWAP  A
                      ORL A,#30H  
		      MOV  38H,A         ;分解"小时"的高位,  38H
              
                      MOV A,42H
                   
                      ANL A,#0FH
                      ORL A,#30H  
		      MOV  39H,A         ;分解"小时"的低位,  39H


                      MOV A,41H
                      ANL A,#0F0H
		      SWAP  A
                      ORL A,#30H   
                      MOV 3AH,A          ;分解"分"的高位,  3AH
              
                      MOV A,41H
                     
                      ANL A,#0FH
		      
                      ORL A,#30H  
		      MOV  3BH,A         ;分解"分"的低位,  3BH
                      
                      MOV A,40H
                      ANL A,#0F0H
		      SWAP  A
                      ORL A,#30H   
                      MOV 3CH,A          ;分解"秒"的高位,  3CH
              
                      MOV A,40H
                      
                      ANL A,#0FH
                      ORL A,#30H  
		      MOV  3DH,A         ;分解"秒"的低位,  3DH
   
                      RET

		      ;	显示时分秒.年月日等

 
               DIP7BY:
                                          ;液晶屏幕第2行

		      MOV  COM,#92H       ;由92H地址开始显示
		      LCALL  WRI
		      MOV  DATT,38H       ;显示"小时'高位
		      LCALL  WRD
		      MOV  DATT,39H       ;显示低位
		      LCALL  WRD

		      MOV  COM,#93H       ;由93H地址开始显示
		      LCALL  WRI
		      MOV  DATT,#3AH      ;显示 ":'
		      LCALL  WRD
		      MOV  DATT,3AH       ;显示"分" 高位
		      LCALL  WRD

		      MOV  COM,#94H       ;由94H地址开始显示
		      LCALL  WRI
		      MOV  DATT,3BH       ;显示"分" 低位
		      LCALL  WRD
		      MOV  DATT,#3AH      ;显示":"
		      LCALL  WRD

		      MOV  COM,#95H       ;由95H地址开始显示
		      LCALL  WRI
		      MOV  DATT,3CH       ;显示"秒'高位
		      LCALL  WRD
		      MOV  DATT,3DH       ;显示低位
		      LCALL  WRD

                                          ;液晶屏幕第3行 /4行

		      MOV  COM,#89H       ;由89H地址开始显示,99H
		      LCALL  WRI
		      MOV  DATT,30H       ;显示"年'高位
		      LCALL  WRD
		      MOV  DATT,31H       ;显示低位
		      LCALL  WRD

		      MOV  COM,#8AH       ;由8AH地址开始显示,9AH
		      LCALL  WRI
		      MOV  DATT,#0C4H     ;显示 "年'
		      LCALL  WRD
		      MOV  DATT,#0EAH        
		      LCALL  WRD

		      MOV  COM,#8BH       ;由8BH地址开始显示,9BH
		      LCALL  WRI
		      MOV  DATT,32H       ;显示"月" 高位
		      LCALL  WRD
		      MOV  DATT,33H       ;显示低位
		      LCALL  WRD

		      MOV  COM,#8CH       ;由8CH地址开始显示,9CH
		      LCALL  WRI
		      MOV  DATT,#0D4H     ;显示"月"
		      LCALL  WRD
		      MOV  DATT,#0C2H       
		      LCALL  WRD

		      MOV  COM,#8DH       ;由8DH地址开始显示,9DH
		      LCALL  WRI
		      MOV  DATT,34H       ;显示"日" 高位
		      LCALL  WRD
		      MOV  DATT,35H        
		      LCALL  WRD

		      MOV  COM,#8EH       ;由8EH地址开始显示,9EH
		      LCALL  WRI
		      MOV  DATT,#0C8H     ;显示"日"
		      LCALL  WRD
		      MOV  DATT,#0D5H        
		      LCALL  WRD

                      MOV COM,#9DH                ;至于"星期"可根据情况,决定是否显示,可以正常读出 0-6 的数据
		      LCALL  WRI
		      MOV  DATT,#020H     ;显示"<"
		      LCALL  WRD
		      MOV  DATT,#5BH        
		      LCALL  WRD
                      
                      LCALL WEEK           ;周处理在45H

                      MOV COM,#9FH                
		      LCALL  WRI
		      MOV  DATT,#5DH     ;显示">"
		      LCALL  WRD
		      MOV  DATT,#20H        
		      LCALL  WRD
	              
                         RET



                             ;周显示子程序
                WEEK: MOV COM,#9EH                
		      LCALL  WRI
                      MOV A,45H
                    
                     ANL A,#00000111B  ;00000111H
               WEEK1: CJNE A,#01H,WEEK2
 		      MOV  DATT,#0D2H     ;显示"一"
		      LCALL  WRD
		      MOV  DATT,#0BBH        
		      LCALL  WRD
                      LJMP WEEK0 

               WEEK2: CJNE A,#02H,WEEK3
 		      MOV  DATT,#0B6H     ;显示"二"
		      LCALL  WRD
		      MOV  DATT,#0FEH        
		      LCALL  WRD
                      LJMP WEEK0 

               WEEK3: CJNE A,#03H,WEEK4
 		      MOV  DATT,#0C8H     ;显示"三"
		      LCALL  WRD
		      MOV  DATT,#0FDH        
		      LCALL  WRD
                      LJMP WEEK0 

               WEEK4: CJNE A,#04H,WEEK5
 		      MOV  DATT,#0CBH     ;显示"四"
		      LCALL  WRD
		      MOV  DATT,#0C4H        
		      LCALL  WRD
                      LJMP WEEK0
 
               WEEK5: CJNE A,#05H,WEEK6
 		      MOV  DATT,#0CEH     ;显示"五"
		      LCALL  WRD
		      MOV  DATT,#0E5H        
		      LCALL  WRD
                      LJMP WEEK0 

               WEEK6: CJNE A,#06H,WEEK7
 		      MOV  DATT,#0C1H     ;显示"六"
		      LCALL  WRD
		      MOV  DATT,#0F9H        
		      LCALL  WRD 
                      LJMP WEEK0 

               WEEK7: CJNE A,#07H,WEEK0
 		      MOV  DATT,#0C8H     ;显示"日"
		      LCALL  WRD
		      MOV  DATT,#0D5H        
		      LCALL  WRD  

               WEEK0:       RET     
;**********************************************************
;子程序名:Set1302
;功    能:设置DS1302 初始时间,并启动计时。
;调    用:RTInputByte
;入口参数:初始时间:Second,Minute,Hour,Day,Month,Week.YearL(地址连续)
;出口参数:无
;影响资源:A B R0 R1 R4 R7 
;**********************************************************
Set1302:    CLR    T_RST			;复位低电平
            CLR    T_CLK			;时钟低电平
            SETB   T_RST 			;复位高电平
            MOV    B,     #8EH      ;DS1302写控制寄存器 1000-1110B
            LCALL  RTInputByte  
            MOV    B,     #00H      ;写操作前WP=0
            LCALL  RTInputByte  
            SETB   T_CLK 
            CLR    T_RST
            MOV    R0,    #Second;	 40h
            MOV    R7,    #7        ;秒 分 时 日 月 星期 年 
            MOV    R1,    #80H      ;秒写地址

S13021:     CLR    T_RST
            CLR    T_CLK
            SETB   T_RST 
            MOV    B,     R1        ;写秒 分 时 日 月 星期 年 地址
            LCALL  RTInputByte  
            MOV    A,     @R0       ;写秒 分 时 日 月 星期 年 数据
            MOV    B,     A
            LCALL  RTInputByte  
            INC    R0
            INC    R1
            INC    R1
            SETB   T_CLK 
            CLR    T_RST
            DJNZ   R7,    S13021
            CLR    T_RST
            CLR    T_CLK
            SETB   T_RST 
            MOV    B,     #8EH       ;控制寄存器
            LCALL  RTInputByte  
            MOV    B,     #80H       ;控制,WP=1,写保护
            LCALL  RTInputByte  
            SETB   T_CLK 
            CLR    T_RST
            RET
;**********************************************************
;子程序名:Get1302
;功    能:从DS1302 读时间
;调    用:RTInputByte,RTOutputByte
;入口参数:时间保存在:Second,Minute,Hour,Day,Month,Week.YearL
;出口参数:无
;影响资源:A B R0 R1 R4 R7 
;**********************************************************
Get1302:     MOV    R0,    #Second;
             MOV    R7,    #7
             MOV    R1,    #81H       ;秒地址

G13021:      CLR    T_RST
             CLR    T_CLK
             SETB   T_RST 
             MOV    B,     R1        ;秒 分 时 日 月 星期 年 地址
             LCALL  RTInputByte  
             LCALL  RTOutputByte
             MOV    @R0,   A         ;秒
             INC    R0
             INC    R1
             INC    R1
             SETB   T_CLK 
             CLR    T_RST
             DJNZ   R7,    G13021
             RET
;**********************************************************
;功    能:写1302一字节  (内部子程序)
;**********************************************************
RTInputByte: MOV    5fh,    #8	  ;一个字节有八个位,移八次.

Inbit1:      MOV    A,     B	  ;8EH(10001110B)送A
             RRC    A			  ;通过A移入CY.
             MOV    B,     A
             MOV    T_IO,  C	  ;移入芯片内.
             SETB   T_CLK
             CLR    T_CLK
             DJNZ   5fh,   Inbit1
             RET
;**********************************************************
;功    能:读1302一字节  (内部子程序)
;**********************************************************
RTOutputByte:MOV    5fh,    #8		;一个字节有八个位,移八次.

Outbit1:     MOV    C,     T_IO	    ;从芯片内移到CY
             RRC    A				;通过CY移入A.
             SETB   T_CLK
             CLR    T_CLK
             DJNZ   5fh,    Outbit1
             RET
       
;************************************

;**********************************************************
;BC7281B子程序,键盘管理芯片,用到键盘及位地址显示驱动LED指示
;**********************************************************	   
;发送一个字节子程序 , 入口为 RAM 28H
		SEND: CLR  CLK            
		      SETB CLK
	      BWAIT1: JB DAT,SEND
		      CLR  CLK
		      SETB CLK
	      BWAIT2: JNB DAT,BWAIT2
		      MOV R6,#08H
	      SENDLP: MOV C,28H.7
		      MOV DAT,C
		      CLR CLK
		      SETB CLK
		      MOV A,28H
		      RL  A
		      MOV 28H,A
		      NOP
		      NOP
		      NOP
		      NOP
		      DJNZ R6,SENDLP
		      SETB DAT
		      NOP
		      NOP
		      RET

; RECEIVE 1 BYTE FROM BC7281 REGISTER,接收一个字节出口为A . R6

	      RECV: CLR CLK
		      SETB CLK
	      BWAIT3: JB DAT,BWAIT3
		      CLR CLK
		      SETB CLK
		      MOV R6,#08H
	      RECVLP: NOP
		      NOP
		      NOP
		      NOP
		      NOP
		      NOP
		      NOP
		      MOV C,DAT
		      RLC A
		      CLR CLK
		      SETB CLK
		      DJNZ R6,RECVLP
		      RET
;**********************************************
;***********************************************************
;液晶子程序
;**********************************************************
       WRI:            
	 
			MOV  R0,#05H
			MOV  A,#0FFH
		  LWR1: RLC  A
			MOV  SID,C
			CLR  SCLK
			SETB SCLK
			CLR  SCLK
			DJNZ R0,LWR1
			MOV  R0,#03H
			MOV  A,#00H
		  LWR2: RLC  A
			MOV SID,C
			CLR SCLK
			SETB SCLK
			CLR SCLK
			DJNZ  R0,LWR2
			MOV  R0,#08H
			MOV  A,COM
			ANL A,#0F0H
		  LWR3: RLC  A
			MOV SID,C
			CLR SCLK
			SETB SCLK
			CLR SCLK
			DJNZ R0,LWR3
			MOV  R0,#08H
			MOV  A,COM
			SWAP  A
			ANL  A,#0F0H
		  LWR4: RLC  A
			MOV  SID,C
			CLR  SCLK
			SETB SCLK
			CLR  SCLK
			DJNZ R0,LWR4
			RET


   WRD:                         ;写数据子程序
			MOV  R0,#05H
						;CS固定连接高电平 
			MOV  A,#0FFH
		  DWR1: RLC  A
			MOV  SID,C
			CLR  SCLK
			SETB SCLK
			CLR  SCLK
			DJNZ R0,DWR1
			MOV  R0,#03H
			MOV  A,#40H
		  DWR2: RLC  A
			MOV SID,C
			CLR SCLK
			SETB SCLK
			CLR SCLK
			DJNZ  R0,DWR2
			MOV  R0,#08H
			MOV  A,DATT
			ANL A,#0F0H
		  DWR3: RLC  A
			MOV SID,C
			CLR SCLK
			SETB SCLK
			CLR SCLK
			DJNZ R0,DWR3
			MOV  R0,#08H
			MOV  A,DATT
			SWAP  A
			ANL  A,#0F0H
		  DWR4: RLC  A
			MOV  SID,C
			CLR  SCLK
			SETB SCLK
			CLR  SCLK
			DJNZ R0,DWR4
			RET

;?**************************************************
;********************************
	       ;delay 10ms for 12Mhz         ;延时供选择使用


	     DELAY10: MOV R5,#100          ;延时
		 DELY0: MOV R4,#99
		 DELY1: DJNZ R4,DELY1
		    	DJNZ R5,DELY0
                   RET

	    DELAY1MS:                        ;延时
		      MOV  R4,#0AH
		DEL4: MOV  R5,#18H
		DEL3: NOP                     
		      DJNZ R5,DEL3
		      DJNZ R4,DEL4
		      RET

	     ;DEL

⌨️ 快捷键说明

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