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

📄 uvi_4245 nov 08 08.dt

📁 一个测试紫外钱的程序源码
💻 DT
📖 第 1 页 / 共 5 页
字号:
    	BANK		0
    	JBC      	PRST,FSEC
    	LJMP      	D_HOUR_DIS1		;闪 


    	MOV      	A,@0X0A
    	MOV      	DIS1,A
    	MOV      	DIS2,A
    	LJMP     	D_HOUR_DIS2
    	
D_HOUR_DIS1:
		MOV			A,D_HOUR   
    	MOV      	TEMP1,A
    	LCALL    	DISH
    	
    	MOV			DIS1,DIS1		;小时高位为0不显示
    	JBS			STATUS,Z
    	LJMP		D_HOUR_DIS1A
    	
    	MOV			A,@0X0A
    	MOV			DIS1,A 
    	
D_HOUR_DIS1A:    			
    	BS		 	FLAG,FCOLDIS
    	
D_HOUR_DIS2:
    	LCALL     	SEG_COM
    	LCALL     	COM_RAM
    	LJMP      	D_AN_JUT
    	
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&    	
D_AN_JUT:
    	BANK     	0
    	JBS      	PRST,F50MS
    	LJMP     	D_AN_JUT									
    
    	BC       	PRST,F50MS
    	DJZ      	T10SEC  
    	LJMP     	D_AN_JUT1
    	LJMP     	D_TIME_ADJ_RET  ;10SEC无键按下,返回
    
D_AN_JUT1:   
    	NOP
      	NOP
    
D_AN_JUT1A:               ;FAN=0,SET无长按 判断UP UV按键 及SET短按
		BANK		0
    	JBS      	PORTB,SET			;模式设置
    	LJMP      	D_SET_KEY 			;长按无效时便判断为短按,之后便执行相应按键功能		
    	BC			FLAG1,SET_KEY_LONG
    	
    	JBS      	PORT7,UP	
    	LJMP      	D_UP_KEY		;加
    	BC			FLAG1,UP_KEY_LONG
    
    	JBS			PORTB,UV
    	LJMP		D_DOWN_KEY
    	BC			FLAG1,DOWN_KEY_LONG
   
    	LJMP      	D_TIME_ADJ1 			;无按键,返回计时10S

;---------------------------------模式设置键
D_SET_KEY:
		BANK		0
		JBC			FLAG1,SET_KEY_LONG
		LJMP		D_SET_LONG
	
D_SET_SHORT:
		LJMP		D_SET_DO		;短按
	
D_SET_LONG:
		LJMP		D_TIME_ADJ1

D_SET_DO:
		BANK     	0
    	BS      	FLAG1,SET_KEY_LONG  ;SET键有效
    	
    	MOV      	A,@0XC8    ;10SEC重设计时开始
    	MOV      	T10SEC,A	
    	INC      	T_COUNT    ;1:MD 2:24TURN 3:MIN 4:HOUR 5:DAY 6: MONTH   
    	LJMP      	D_TIME_ADJ1
    	
;-------------------------------------------加功能键   	
D_UP_KEY:
		BANK		0
		JBC			FLAG1,UP_KEY_LONG
		LJMP		D_UP_LONG
	
D_UP_SHORT:
		MOV			A,@0X14		;1S
		MOV			UP_TIME,A		;开始判断长按时间为1.25s以后0.25S执行一次
		MOV			A,@0X05		;0.25S
		MOV			UP_TIME1,A
		LJMP		D_UP_DO
	
D_UP_LONG:
		BANK		0
		DJZ			UP_TIME
		LJMP		D_TIME_ADJ1	;1S(判断长按)
	
		MOV			A,@0X01
		MOV			UP_TIME,A
		DJZ			UP_TIME1		;0.25S(长按动作时间)
		LJMP		D_TIME_ADJ1
	
		MOV			A,@0X05
		MOV			UP_TIME1,A
		LJMP		D_UP_DO
	

D_UP_DO:     
    	BANK     	0          ;UP键有效
    	BS       	FLAG1,UP_KEY_LONG  
    	MOV      	A,@0XC8
    	MOV      	T10SEC,A   ;10SEC    
    	MOV      	A,T_COUNT  
    	MOV      	TEMP1,A
    
    	MOV      	A,@0X01
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP      	D_TIME_ADJ1
    	
    	MOV      	A,@0X02
    	XOR		    A,TEMP1
    	JBC      	STATUS,Z
    	LJMP      	D_MIN_ADJ
    	
    	MOV      	A,@0X03
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	D_HOUR_ADJ
    	
    	NOP
    	NOP
    	LJMP      	D_TIME_ADJ1
    	
;*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&		  
D_MIN_ADJ:			;分计时
		INC      	D_MIN
		
		MOV			D_HOUR_MAX,D_HOUR_MAX
		JBS			STATUS,Z
		LJMP		D_MIN_ADJ1
		
    	MOV      	A,D_MIN_MAX
    	ADD			A,@0X01
    	LJMP		D_MIN_ADJ2

D_MIN_ADJ1:
		MOV			A,@0X3C
		
D_MIN_ADJ2:
    	SUB      	A,D_MIN
    	JBC      	STATUS,C
    	CLR      	D_MIN
    	
    	LJMP     	D_TIME_ADJ1

;-------------------------------------------------    	
D_HOUR_ADJ:			;时计时24小时制
    	INC      	D_HOUR
    	MOV      	A,D_HOUR_MAX
    	ADD			A,@0X01
    	SUB      	A,D_HOUR
    	JBC      	STATUS,C
    	CLR      	D_HOUR
   
    	LJMP     	D_TIME_ADJ1

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
D_DOWN_KEY:
		BANK		0
		JBC			FLAG1,DOWN_KEY_LONG
		LJMP		D_DOWN_LONG

D_DOWN_SHORT:
		MOV			A,@0X14
		MOV			DOWN_TIME,A
		MOV			A,@0X05
		MOV			DOWN_TIME1,A
		LJMP		D_DOWN_DO
	
D_DOWN_LONG:
		BANK		0
		DJZ			DOWN_TIME
		LJMP		D_TIME_ADJ1
	
		MOV			A,@0X01
		MOV			DOWN_TIME,A
		DJZ			DOWN_TIME1
		LJMP		D_TIME_ADJ1
	
		MOV			A,@0X05
		MOV			DOWN_TIME1,A
	
D_DOWN_DO:     
    	BANK    	0          ;DOWN键有效
    	BS      	FLAG1,DOWN_KEY_LONG
    	MOV     	A,@0XC8
    	MOV      	T10SEC,A   ;10SEC    
    	MOV      	A,T_COUNT  
    	MOV      	TEMP1,A
    
    	MOV      	A,@0X01
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP      	D_TIME_ADJ1
    	
    	
    	MOV      	A,@0X02
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP      	D_MIN_ADJ_D
    	
    	MOV      	A,@0X03
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	D_HOUR_ADJ_D
    	
   		NOP
   		NOP
    	LJMP      	D_TIME_ADJ1
    	
;--------------------------------------------------
D_MIN_ADJ_D:			;分计时
		MOV			D_MIN,D_MIN
		JBS			STATUS,Z
		LJMP		D_MIN_ADJ_D2
		
		MOV			D_HOUR_MAX,D_HOUR_MAX
		JBC			STATUS,Z
		LJMP		D_MIN_ADJ_D1
		
		MOV			A,@0X3C		;59
		MOV			D_MIN,A
		LJMP		D_MIN_ADJ_D2
		
D_MIN_ADJ_D1:
		MOV			A,D_MIN_MAX
		ADD			A,@0X01
		MOV			D_MIN,A		

D_MIN_ADJ_D2:		
    	DEC     	D_MIN
   		LJMP     	D_TIME_ADJ1
   		
;-----------------------------------------------------
D_HOUR_ADJ_D:			;时计时24小时制
		MOV			D_HOUR,D_HOUR
		JBS			STATUS,Z
		LJMP		D_HOUR_ADJ_D1
		
		MOV			A,D_HOUR_MAX
		ADD			A,@0X01
		MOV			D_HOUR,A

D_HOUR_ADJ_D1:		
    	DEC     	D_HOUR
   		LJMP     	D_TIME_ADJ1  
   		
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
D_TIME_ADJ_RET:	
		BANK		0
		JBC			PORTB,SET
		LJMP		D_TIME_ADJ_RET1
		
		BANK		0
		CLR			FLAG
		MOV			A,D_HOUR
		MOV			TEMP1,A
		LCALL		DISH
		
		MOV			DIS1,DIS1
		JBS			STATUS,Z
		LJMP		WAIT_D_TIME_RET
		
		MOV			A,@0X0A
		MOV			DIS1,A

WAIT_D_TIME_RET:
		MOV			A,D_MIN
		MOV			TEMP1,A
		LCALL		DISL
		
		JBC			PRST,FSEC
		BS			FLAG,FCOLDIS
		
		JBS			PRST,FBAT
		LJMP		WAIT_D_TIME_RET1
		
		JBC			PRST,FSEC
		BS			FLAG,FBATDIS
		
WAIT_D_TIME_RET1:
		LCALL    	SEG_COM
    	LCALL    	COM_RAM	
    	
WAIT_D_TIME_RET2: 
		BANK		0
		JBS			PRST,F50MS
		LJMP		WAIT_D_TIME_RET2
		
		BC			PRST,F50MS
		LJMP		D_TIME_ADJ_RET
		
D_TIME_ADJ_RET1:
		BANK		0		
		BC			PRST,FUV
		BC			FLAG1,UV_SHORT
		BC			FLAG2,SET_SHORT
		BC			FLAG2,SET_LONG
		BC			PRST,FSET
		BS			PRST,FDEM
  		RET      	
;================================================================SET TIME		
		
TIME_SET:
			
		BANK     	1
	    MOV      	A,@0X00
	    MOV      	EIMR,A     ;禁止外部按键中断
    
	    BANK     	0
	    MOV      	A,@0X81
	    MOV      	IMR,A      ;允许定时器1和TCC中断
	    BS       	PRST,FAN     
	    BC       	PRST,FSET
	    BC       	PRST,FUV
	    BC       	PRST,F50MS
	    BC			FLAG2,SET_SHORT
	    BC			FLAG2,SET_LONG 
	    CLR      	T_COUNT
	    MOV      	A,@0XC8     ;200   10SEC
	    MOV      	T10SEC,A    ;
   		BC			FLAG1,SET_KEY_LONG
   		BC			FLAG1,UP_KEY_LONG
   		BC			FLAG1,DOWN_KEY_LONG
   		
TIME_ADJ1:
	    BANK     	0
	    CLR      	FLAG
	    MOV      	A,T_COUNT
	    MOV      	TEMP1,A
	    
	    MOV			A,@0X00
	    XOR			A,TEMP1
	    JBC			STATUS,Z
	    LJMP		MD_DIS		;初始进来KEY键必加一
	    
	    MOV      	A,@0X01
	    XOR      	A,TEMP1
	    JBC      	STATUS,Z
	    LJMP     	MD_DIS
   		
   		MOV			A,@0X02
   		XOR			A,TEMP1
   		JBC			STATUS,Z
   		LJMP		TURN24_DIS
   		
    	MOV      	A,@0X03
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP      	MIN_DIS
    	
    	MOV      	A,@0X04
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	HOUR_DIS
    	
    	MOV      	A,@0X05
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	DAY_DIS
    	
    	MOV      	A,@0X06
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	MONTH_DIS
    
    	NOP
    	LJMP     	TIME_ADJ_RET	;返回
    	
;----------------------------------日期            
MD_DIS:
	  	BANK     	0
    	CLR			FLAG
    	MOV      	A,MONTH
    	MOV      	TEMP1,A
    	LCALL    	DISH
    	
    	BANK		0
    	MOV			DIS1,DIS1
    	JBS			STATUS,Z
    	LJMP		MD_DIS1A
    	
    	MOV			A,@0X0A
    	MOV			DIS1,A
    	
MD_DIS1A:  	
    	BANK     	0
    	MOV      	A,DAY
    	MOV      	TEMP1,A
    	LCALL    	DISL  
MD_DIS1:    
    	LCALL    	SEG_COM
    	LCALL    	COM_RAM
    	LJMP     	AN_JUT

;-----------------------------------------------12/24小时制
TURN24_DIS:
		BANK		0
		JBC			PRST,FSEC
		LJMP		TURN24_DIS1B

TURN24_DIS1A:
		CLR			FLAG
		MOV			A,@0X0A
		MOV			DIS1,A
		MOV			DIS2,A
		MOV			DIS3,A
		MOV			DIS4,A
		LJMP		TURN24_DIS2

TURN24_DIS1B:
		BANK		0
		MOV			A,@0X0D
		MOV			DIS4,A		;NULL
		MOV			A,@0X0A
		MOV			DIS3,A		;H
		CLR			FLAG
		MOV			A,@0X0C			;12
		
		JBC			FLAG1,FLAG_24
		MOV			A,@0X18 		;24
		
		MOV			TEMP1,A
		LCALL		DISH
				
TURN24_DIS2:
		LCALL		SEG_COM
		LCALL		COM_RAM
		LJMP		AN_JUT


;----------------------------分		   
MIN_DIS:
   		BANK    	0
   		CLR			FLAG
   		JBC			FLAG1,FLAG_24
   		LJMP		MIN_DIS2B
   		
   		MOV			A,@0X0C			;pm判断
   		SUB			A,HOUR
   		JBC			STATUS,C
   		LJMP		MIN_DIS2A
   		
   		BS			FLAG,FPMDIS
   		MOV			A,HOUR_12			;显示12小时制及PM
   		LJMP		MIN_DIS2C
   		
MIN_DIS2A:
		BC			FLAG,FPMDIS			;下午
		MOV			A,HOUR_12
		LJMP		MIN_DIS2C
		
MIN_DIS2B:
		BC			FLAG,FPMDIS			;24小时制	
    	MOV      	A,HOUR

MIN_DIS2C:    	
    	MOV      	TEMP1,A
    	LCALL    	DISH
    	
    	MOV			DIS1,DIS1			
    	JBS			STATUS,Z	
    	LJMP		MIN_DIS1C
    	
    	MOV			A,@0X0A			;小时高位为0不显示
    	MOV			DIS1,A
  
MIN_DIS1C:    	
    	JBC      	PRST,FSEC
    	LJMP     	MIN_DIS1B		;闪
MIN_DIS1A:
    	MOV      	A,@0X0A
    	MOV      	DIS3,A
    	MOV      	DIS4,A    ;NO DISPLAY
    	LJMP      	MIN_DIS2
MIN_DIS1B:   
    	MOV      	A,MIN
    	MOV      	TEMP1,A
    	LCALL    	DISL
    	BS		 	FLAG,FCOLDIS
MIN_DIS2:
    	LCALL  	 	SEG_COM
    	LCALL    	COM_RAM
    	LJMP     	AN_JUT   

;-------------------------------------------------小时     
HOUR_DIS:
    	BANK     	0
    	CLR			FLAG
    	MOV      	A,MIN
    	MOV      	TEMP1,A
    	LCALL    	DISL
    	
    	BANK		0
    	JBC			FLAG1,FLAG_24
    	LJMP		HOUR_DIS2B			;PM显示
    	
    	MOV			A,@0X0C
    	SUB			A,HOUR
    	JBC			STATUS,C
    	LJMP		HOUR_DIS2B
    	
    	BS			FLAG,FPMDIS
    	LJMP		HOUR_DIS2C
    	
HOUR_DIS2B:
		BC			FLAG,FPMDIS
		
HOUR_DIS2C:    	
    	BANK		0
    	JBC      	PRST,FSEC
    	LJMP      	HOUR_DIS1B		;闪 
HOUR_DIS1A:
    	MOV      	A,@0X0A
    	MOV      	DIS1,A
    	MOV      	DIS2,A
    	LJMP     	HOUR_DIS2
    	
HOUR_DIS1B:
		JBC			FLAG1,FLAG_24
		LJMP		HOUR_DIS1D		
		
		MOV			A,@0X0C
		SUB			A,HOUR
		JBC			STATUS,C
		LJMP		HOUR_DIS1B1
		
	;	BS			FLAG,FPMDIS		;<=12上午PM
		MOV			A,HOUR_12
		LJMP		HOUR_DIS1C

HOUR_DIS1B1:		
	;	BC			FLAG,FPMDIS		;AM		
		MOV			A,HOUR_12
		LJMP		HOUR_DIS1C

HOUR_DIS1D:		
	;	BC			FLAG,FPMDIS
		MOV			A,HOUR
		
HOUR_DIS1C:    
    	MOV      	TEMP1,A
    	LCALL    	DISH
    	
    	MOV			DIS1,DIS1		;小时高位为0不显示
    	JBS			STATUS,Z
    	LJMP		HOUR_DIS1F
    	
    	MOV			A,@0X0A
    	MOV			DIS1,A 
    	
HOUR_DIS1F:    			
    	BS		 	FLAG,FCOLDIS
HOUR_DIS2:
    	LCALL     	SEG_COM
    	LCALL     	COM_RAM
    	LJMP      	AN_JUT
    	
;------------------------------------------------日
DAY_DIS:
    	BANK     	0
    	CLR			FLAG
    	MOV      	A,MONTH
    	MOV      	TEMP1,A
   		LCALL    	DISH
   		
   		MOV			DIS1,DIS1
   		JBS			STATUS,Z
   		LJMP		DAY_DIS1C
   		
   		MOV			A,@0X0A
   		MOV			DIS1,A
   		
DAY_DIS1C:   		
    	JBC      	PRST,FSEC
    	LJMP     	DAY_DIS1B
DAY_DIS1A:								;闪
    	MOV      	A,@0X0A
    	MOV      	DIS3,A
    	MOV      	DIS4,A
    	LJMP     	DAY_DIS2
    	
DAY_DIS1B: 
    	MOV      	A,DAY
    	MOV      	TEMP1,A
    	LCALL    	DISL
    	
DAY_DIS2:
    	LCALL    	SEG_COM
    	LCALL    	COM_RAM
    	LJMP     	AN_JUT

;--------------------------------------月
MONTH_DIS:
    	BANK     	0
    	CLR			FLAG
    	MOV      	A,DAY
    	MOV      	TEMP1,A
    	LCALL    	DISL
    	
    	JBC      	PRST,FSEC
    	LJMP     	MONTH_DIS1B	;闪
MONTH_DIS1A:
    	MOV      	A,@0X0A
    	MOV      	DIS1,A
    	MOV      	DIS2,A
    	LJMP      	MONTH_DIS2
    	
MONTH_DIS1B: 
    	MOV      	A,MONTH
    	MOV      	TEMP1,A
    	LCALL    	DISH
    	
    	MOV			DIS1,DIS1
   		JBS			STATUS,Z
   		LJMP		MONTH_DIS2
   		
   		MOV			A,@0X0A
   		MOV			DIS1,A  		
    	
MONTH_DIS2:
    	LCALL    	SEG_COM
    	LCALL    	COM_RAM

;------------------------------------------按键判断或10S计时
AN_JUT:
    	BANK     	0
    	JBS      	PRST,F50MS
    	LJMP     	AN_JUT									
    
    	BC       	PRST,F50MS
    	DJZ      	T10SEC  
    	LJMP     	AN_JUT1
    	LJMP     	TIME_ADJ_RET  ;10SEC无键按下,返回
    
AN_JUT1:   
    	NOP
      	NOP
    
AN_JUT1A:               ;FAN=0,SET无长按 判断UP UV按键 及SET短按
		BANK		0
    	JBS      	PORTB,SET			;模式设置
    	LJMP      	SET_KEY_D 			;长按无效时便判断为短按,之后便执行相应按键功能		
    	BC			FLAG1,SET_KEY_LONG
    	
    	JBS      	PORT7,UP	
    	LJMP      	UP_KEY		;加
    	BC			FLAG1,UP_KEY_LONG
    
    	JBS			PORTB,UV
    	LJMP		DOWN_KEY
    	BC			FLAG1,DOWN_KEY_LONG
   
    	LJMP      	TIME_ADJ1 			;无按键,返回计时10S

;---------------------------------模式设置键
SET_KEY_D:
		BANK		0
		JBC			FLAG1,SET_KEY_LONG
		LJMP		SET_LONG_D
	
SET_SHORT_D:
		LJMP		SET_DO		;短按
	
SET_LONG_D:
		LJMP		TIME_ADJ1

SET_DO:
		BANK     	0
    	BS      	FLAG1,SET_KEY_LONG  ;SET键有效
    	
    	MOV      	A,@0XC8    ;10SEC重设计时开始
    	MOV      	T10SEC,A	
    	INC      	T_COUNT    ;1:MD 2:24TURN 3:MIN 4:HOUR 5:DAY 6: MONTH   
    	LJMP      	TIME_ADJ1
    	
;-------------------------------------------加功能键   	
UP_KEY:
		BANK		0
		JBC			FLAG1,UP_KEY_LONG
		LJMP		UP_LONG
	
UP_SHORT:
		MOV			A,@0X14		;1S
		MOV			UP_TIME,A		;开始判断长按时间为1.25s以后0.25S执行一次
		MOV			A,@0X05		;0.25S
		MOV			UP_TIME1,A
		LJMP		UP_DO
	
UP_LONG:
		BANK		0
		DJZ			UP_TIME
		LJMP		TIME_ADJ1	;1S(判断长按)
	
		MOV			A,@0X01
		MOV			UP_TIME,A
		DJZ			UP_TIME1		;0.25S(长按动作时间)
		LJMP		TIME_ADJ1
	
		MOV			A,@0X05
		MOV			UP_TIME1,A

⌨️ 快捷键说明

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