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

📄 uvi_4245 nov 08 08.dt

📁 一个测试紫外钱的程序源码
💻 DT
📖 第 1 页 / 共 5 页
字号:
		LJMP		UP_DO
	

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      	TIME_ADJ1
    	
    	MOV			A,@0X02
    	XOR			A,TEMP1
    	JBC			STATUS,Z
    	LJMP		TURN_ADJ_24
    	
    	MOV      	A,@0X03
    	XOR		    A,TEMP1
    	JBC      	STATUS,Z
    	LJMP      	MIN_ADJ
    	
    	MOV      	A,@0X04
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	HOUR_ADJ
    	
    	MOV      	A,@0X05
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	DAY_ADJ
    	
    	MOV      	A,@0X06
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	MONTH_ADJ
    	
    	LJMP      	TIME_ADJ1

;----------------------------------------
TURN_ADJ_24:
		BANK		0
		JBS			FLAG1,FLAG_24
		LJMP		TURN_ADJ_24A
		
		BC			FLAG1,FLAG_24	;12
		LJMP		TURN_ADJ_24B

TURN_ADJ_24A:		
		BS			FLAG1,FLAG_24	;24

TURN_ADJ_24B:
		LJMP		TIME_ADJ1

;-----------------------------------------------		  
MIN_ADJ:			;分计时
    	INC      	MIN
    	MOV      	A,@0X3C
    	SUB      	A,MIN
    	JBC      	STATUS,C
    	CLR      	MIN
    	
    	LJMP     	TIME_ADJ1

;-------------------------------------------------    	
HOUR_ADJ:			;时计时24小时制
    	INC      	HOUR
    	MOV      	A,@0X18
    	SUB      	A,HOUR
    	JBC      	STATUS,C
    	CLR      	HOUR
    	
    	
    	MOV			A,@0X0D
    	SUB			A,HOUR
    	JBC			STATUS,C
    	LJMP		HOUR_ADJ1
    	
    	MOV			HOUR,HOUR
    	JBS			STATUS,Z
    	LJMP			HOUR_ADJ1A	
    	
    	MOV			A,@0X0C			;24点时显示12点
    	MOV			HOUR_12,A
    	LJMP		HOUR_ADJ2

HOUR_ADJ1A:
    	MOV			A,HOUR		;<=12
    	MOV			HOUR_12,A
    	LJMP		HOUR_ADJ2

HOUR_ADJ1:    	
    	MOV			A,@0X0C		;>12
    	SUB			A,HOUR
    	MOV			HOUR_12,A 	

HOUR_ADJ2:    	
    	LJMP     	TIME_ADJ1

;--------------------------------------------    	
DAY_ADJ:			;日计时
    	INC      	DAY
    	LCALL    	DAY_LOOKUP
    	MOV      	A,DAYMAX
    	BANK     	0
    	SUB      	A,DAY
    	JBS      	STATUS,C
    	LJMP     	TIME_ADJ1
    	
    	MOV      	A,@0X01
    	MOV      	DAY,A
    	LJMP     	TIME_ADJ1
    	
;----------------------------------------------
MONTH_ADJ:  
    	INC      	MONTH
    	MOV      	A,@0X0D
   		SUB      	A,MONTH
    	JBS      	STATUS,C
    	LJMP     	TIME_ADJ1
    	
    	MOV      	A,@0X01
    	MOV      	MONTH,A
	    LJMP     	TIME_ADJ1  
	      
;------------------------------------------------	    
DOWN_KEY:
		BANK		0
		JBC			FLAG1,DOWN_KEY_LONG
		LJMP		DOWN_LONG

DOWN_SHORT:
		MOV			A,@0X14
		MOV			DOWN_TIME,A
		MOV			A,@0X05
		MOV			DOWN_TIME1,A
		LJMP		DOWN_DO
	
DOWN_LONG:
		BANK		0
		DJZ			DOWN_TIME
		LJMP		TIME_ADJ1
	
		MOV			A,@0X01
		MOV			DOWN_TIME,A
		DJZ			DOWN_TIME1
		LJMP		TIME_ADJ1
	
		MOV			A,@0X05
		MOV			DOWN_TIME1,A
	
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      	TIME_ADJ1
    	
    	MOV			A,@0X02
    	XOR			A,TEMP1
    	JBC			STATUS,Z
    	LJMP		TURN_ADJ_24_D
    	
    	MOV      	A,@0X03
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP      	MIN_ADJ_D
    	
    	MOV      	A,@0X04
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	HOUR_ADJ_D
    	
    	MOV      	A,@0X05
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	DAY_ADJ_D
    	
    	MOV      	A,@0X06
    	XOR      	A,TEMP1
    	JBC      	STATUS,Z
    	LJMP     	MONTH_ADJ_D
    	
    	LJMP      	TIME_ADJ1
    	
;--------------------------------------------------
TURN_ADJ_24_D:
		BANK		0
		JBS			FLAG1,FLAG_24
		LJMP		TURN_ADJ_24_D1
		
		BC			FLAG1,FLAG_24	;12
		LJMP		TURN_ADJ_24_D2

TURN_ADJ_24_D1:		
		BS			FLAG1,FLAG_24	;24
		
TURN_ADJ_24_D2:
		LJMP		TIME_ADJ1
		
;------------------------------------------------		  
MIN_ADJ_D:			;分计时
		MOV			MIN,MIN
		JBS			STATUS,Z
		LJMP		MIN_ADJ_D1
		
		MOV			A,@0X3C		;59
		MOV			MIN,A		

MIN_ADJ_D1:		
    	DEC     	MIN
   		LJMP     	TIME_ADJ1
   		
;-----------------------------------------------------
HOUR_ADJ_D:			;时计时24小时制
		MOV			HOUR,HOUR
		JBS			STATUS,Z
		LJMP		HOUR_ADJ_D1
		
		MOV			A,@0X18
		MOV			HOUR,A

HOUR_ADJ_D1:		
    	DEC     	HOUR
    	
    	MOV			A,@0X0D
    	SUB			A,HOUR
    	JBC			STATUS,C
    	LJMP		HOUR_ADJ_D2
    	
    	MOV			HOUR,HOUR		;为0则显示12
    	JBS			STATUS,Z
    	LJMP		HOUR_ADJ_D1A
    	
    	MOV			A,@0X0C
    	MOV			HOUR_12,A
    	LJMP		HOUR_ADJ_D3
    	
HOUR_ADJ_D1A:
    	MOV			A,HOUR		;<=12
    	MOV			HOUR_12,A
    	LJMP		HOUR_ADJ_D3

HOUR_ADJ_D2:    	
    	MOV			A,@0X0C		;>12
    	SUB			A,HOUR
    	MOV			HOUR_12,A 	
    	
   
HOUR_ADJ_D3: 	
   		LJMP     	TIME_ADJ1
   		
;----------------------------------------------------   		
DAY_ADJ_D:			;日计时
		MOV			A,@0X01
		XOR			A,DAY
		JBS			STATUS,Z
		LJMP		DAY_ADJ_D1
		
		LCALL		DAY_LOOKUP
		MOV			A,DAYMAX
		BANK		0
		MOV			DAY,A

DAY_ADJ_D1:		
		DEC			DAY
    	LJMP    	TIME_ADJ1
    	
;---------------------------------------------    	
MONTH_ADJ_D:
		MOV			A,@0X01 
		XOR			A,MONTH
		JBS			STATUS,Z
		LJMP		MONTH_ADJ_D1
		
		MOV			A,@0X0D
		MOV			MONTH,A

MONTH_ADJ_D1:		
		DEC			MONTH
		LJMP		TIME_ADJ1
		
;------------------------------------------------
TIME_ADJ_RET:	
		BC			PRST,FUV
		BC			FLAG1,UV_SHORT
		BC			FLAG2,SET_SHORT
		BC			FLAG2,SET_LONG
		BC			PRST,FDEM
		BC			PRST,FSET
  		RET    

;============================================ 

    
;============================================ 

 TIME_DISPLAY:
  	  	BANK     	0
      	MOV      	A,MONTH
    	LCALL    	DAY_LOOKUP
    	MOV      	DAYMAX,A  ;查表每月天数  
 HM_CON: 
    	BANK     	0
    	JBC			FLAG1,FLAG_24
    	LJMP		HM_CON1
   
    	MOV			A,HOUR_12
    	LJMP		HM_CON2

HM_CON1:   
    	MOV      	A,HOUR

HM_CON2:    
    	MOV      	TEMP1,A
    	LCALL     	DISH
    	
    	  
    	BANK		0
   	 	MOV			DIS1,DIS1
    	JBS			STATUS,Z
    	LJMP		HM_CON3
    
    	MOV			A,@0X0A
    	MOV			DIS1,A
    
HM_CON3:    
    	BANK     	0
    	MOV      	A,MIN
    	MOV      	TEMP1,A
    	LCALL     	DISL
      
DOT_CON:
		BANK 	 	0
		CLR		 	FLAG
		JBC		 	PRST,FSEC
		BS		 	FLAG,FCOLDIS
	
PM_FLAG:
		JBC			FLAG1,FLAG_24
		LJMP		PM_FLAG1
	
		MOV			A,@0X0C
		SUB			A,HOUR
		JBC			STATUS,C
		LJMP		PM_FLAG1
	
		BS			FLAG,FPMDIS
		LJMP		D_FLAG

PM_FLAG1:	
		BC			FLAG,FPMDIS
	
	
D_FLAG:									;D_MODE FLAG
		JBC			FLAG1,D_MODE_FLAG
		BS			FLAG,FDDIS
	
BATL_DIS:
    	JBS      	PRST,FBAT
    	LJMP		 TIME_DIS
    
  		JBC		 	PRST,FSEC  
 		BS		 	FLAG,FBATDIS

TIME_DIS:
    	LCALL    	SEG_COM
    	LCALL    	COM_RAM
    	
    	RET  
;============================================ 

DISH:
    	BANK     	0
    	CLR      	DIS1
    	CLR      	DIS2
DISH1:
    	BANK     	0
    	MOV      	A,@0X0A
    	SUB      	A,TEMP1
    	JBS      	STATUS,C
    	LJMP      	DISH2
    
    	MOV      	TEMP1,A
    	INC      	DIS1
    	LJMP      	DISH1
DISH2: 
    	MOV      	A,TEMP1
    	MOV      	DIS2,A
    	RET
    	
;====================================================== 
DISL:
    	BANK     	0
    	CLR      	DIS3
    	CLR      	DIS4
DISL1:
    	BANK     	0
    	MOV      	A,@0X0A
    	SUB      	A,TEMP1
    	JBS      	STATUS,C
    	LJMP     	DISL2
    
    	MOV      	TEMP1,A
    	INC      	DIS3
    	LJMP     	DISL1
DISL2: 
    	MOV      	A,TEMP1
    	MOV      	DIS4,A
    	RET
 
;============================================   
;自动保存A,BANK数据,需软件清0中断标志位OK
;============================================ 

T1_INT:										;0.5定时

    	BANK     	0   
    	JBS      	PRST,FSEC
    	LJMP      	T1_INT_D
    
    	BC       	PRST,FSEC
    	LJMP      	T1_RET
    
T1_INT_D:
		JBS			FLAG1,D_MODE_FLAG
		LJMP		CLR_D_TIME_COUNT
	
D_TIME_COUNT:
		INC			D_SEC
		MOV			A,@0X3C
		SUB			A,D_SEC
		JBS			STATUS,C
		LJMP		T1_INT1
	
		CLR			D_SEC
		MOV			D_MIN,D_MIN
		JBS			STATUS,Z
		LJMP		D_MIN_DEC
		
		MOV			A,@0X00
		XOR			A,D_HOUR
		JBC			STATUS,Z
		LJMP		HOUR_MIN_0
	
		DEC			D_HOUR		;HOUR!=0,MIN=0
		MOV			A,@0X3C
		MOV			D_MIN,A
		LJMP		D_MIN_DEC

HOUR_MIN_0:	
		MOV			A,@0X00		;HOUR=0,MIN=0
		MOV			D_MIN,A
		MOV			D_HOUR,A
		
		INC			SPEAK_TIME
		MOV			A,@0X0A
		SUB			A,SPEAK_TIME
		JBC			STATUS,C
		LJMP		SPEAK_OUT
		
		BANK		4
		JBS			WBCR,BUZE
		LJMP		SPEAK_ON

		BC			WBCR,BUZE
		LJMP		T1_INT1

SPEAK_ON:
		BANK		4
		BS			WBCR,BUZE
		LJMP		T1_INT1

SPEAK_OUT:
		CLR			SPEAK_TIME		
		BC			FLAG1,D_MODE_FLAG
		LJMP		T1_INT1
	
D_MIN_DEC:
		DEC			D_MIN
		LJMP		T1_INT1
	
CLR_D_TIME_COUNT:
		BANK		0
		CLR			D_HOUR
		CLR			D_MIN
		CLR			D_SEC

	     
T1_INT1:   
    	BS       	PRST,FSEC
    	INC      	SEC
    	MOV      	A,@0X3C  ;60
    	SUB      	A,SEC
    	JBS      	STATUS,C
    	LJMP      	T1_RET
    
    	BS       	PRST,FTBAT ;每1MIN测试一次电源电压
    	CLR      	SEC
    	INC      	MIN
    	MOV      	A,@0X3C  ;60
    	SUB      	A,MIN
    	JBS      	STATUS,C
    	LJMP      	T1_RET
    
    	CLR      	MIN
    	INC      	HOUR
    	MOV      	A,@0X18  ;24
    	SUB      	A,HOUR
    	JBS      	STATUS,C
    	LJMP      	T1_RET
    
    	CLR      	HOUR
    	INC      	DAY  
    	MOV      	A,DAYMAX  ;29 31 32
    	SUB      	A,DAY   
    	JBS      	STATUS,C
    	LJMP      	T1_RET
    
    	MOV      	A,@0X01
    	MOV      	DAY,A
    	INC      	MONTH
    	MOV      	A,@0X0D   ;13
    	SUB      	A,MONTH
    	JBS      	STATUS,C
    	LJMP      	T1_RET
    
    	MOV      	A,@0X01
    	MOV      	MONTH,A
   
 T1_RET:
    	BC       	ISR,7 
    	RETI
       
;============================================ 

TCC_INT:
    	BANK     	0
    	BS       	PRST,F50MS
    	MOV      	A,@0X35
    	MOV      	TCC,A
    	
    	MOV			A,@0X0D			;24/0->12PM
    	SUB			A,HOUR
    	JBS			STATUS,C
    	LJMP		HOUR_12PM
    
    	MOV			A,@0X0C
    	SUB			A,HOUR
    	MOV			HOUR_12,A
    	LJMP		HOUR_12AM
    
HOUR_12PM:
		MOV			HOUR,HOUR
		JBC			STATUS,Z
		LJMP		HOUR_12PMA
			
		MOV			A,HOUR
		MOV			HOUR_12,A
		LJMP		HOUR_12AM
		
HOUR_12PMA:
		MOV			A,@0X0C
		MOV			HOUR_12,A

HOUR_12AM:
		NOP
		NOP	
    
uv_key:
		JBS			PORTB,UV
		LJMP		UV_ON
		
		mov			key_time,key_time
		jbc			status,z
		LJMP		uv_off
		
		bs			flag1,uv_short			;uv 短按
		mov			a,@0x00
		mov			key_time,a
		
uv_off:
		jbs			flag1,uv_flag
		LJMP		uv_off1
		bc			flag1,uv_flag
		LJMP		key_out
		
uv_off1:
		jbc			flag1,uv_state
		bc			flag1,uv_state
		LJMP		key_out
		

uv_on:
		jbc			flag1,uv_flag
		LJMP		uv_on1
		
		bs			flag1,uv_flag
		LJMP		key_out
		
uv_on1:
		jbc			flag1,uv_state
		LJMP		uv_long

uv_do:
		bs			flag1,uv_state
		mov			a,@0x26
		mov			key_time,a
		LJMP		key_out
		
uv_long:
		mov			key_time,key_time
		jbc			status,z
		LJMP		key_out
		
		djz			key_time
		LJMP		key_out
		bs			PRST,FUV		;uv长按2s
		LJMP		key_out

key_out:
		JBS			FLAG2,SET_MODE_FLAG
		LJMP		TCC_RET
		
SET_KEY_T:
		JBS			PORTB,SET
		LJMP		SET_ON
		
		MOV			SET_KEY_TIME,SET_KEY_TIME
		JBC			STATUS,Z
		LJMP		SET_OFF
		
		BS			FLAG2,SET_SHORT		;uv 短按
		MOV			A,@0X00
		MOV			SET_KEY_TIME,A
		
SET_OFF:
		JBS			FLAG2,SET_FLAG
		LJMP		SET_OFF1
		BC			FLAG2,SET_FLAG
		LJMP		TCC_RET
		
SET_OFF1:
		JBC			FLAG2,SET_STATE
		BC			FLAG2,SET_STATE
		LJMP		TCC_RET
		

SET_ON:
		JBC			FLAG2,SET_FLAG
		LJMP		SET_ON1
		
		BS			FLAG2,SET_FLAG
		LJMP		TCC_RET
		
SET_ON1:
		JBC			FLAG2,SET_STATE
		LJMP		SET_LONG_T

SET_DO_T:
		BS			FLAG2,SET_STATE
		MOV			A,@0X26
		MOV			SET_KEY_TIME,A
		LJMP		TCC_RET
		
SET_LONG_T:
		MOV			SET_KEY_TIME,SET_KEY_TIME
		JBC			STATUS,Z
		LJMP		TCC_RET
		
		DJZ			SET_KEY_TIME
		LJMP		TCC_RET
		BS			FLAG2,SET_LONG		;uv长按2s
		
TCC_RET:
    	BC       	ISR,0
    	RETI
    
;============================================ 

 EXT_INT:
    	BANK     	0
    	BS       	PRST,FTBAT
    	JBS      	PORTB,SET
    	BS       	PRST, FSET  
 EXT_RET:
    	BANK     	1
    	CLR      	EISR
    	RETI
   
;============================================
TP_INT:
		BANK		0
		NOP
		NOP
		RETI
		    
    END
		

⌨️ 快捷键说明

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