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

📄 lcdavr_1k_1621.src

📁 液晶显示线包式交流稳压器
💻 SRC
📖 第 1 页 / 共 5 页
字号:
	;OR	ADC_Buffer+2,R6

	LD	R7,#disp_tab3%256
	LD	R6,#disp_tab3/256
	ADD	R7,R3
	ADC	R6,#0
	RCF
	RLC	R3
	ADD	R7,R3
	ADC	R6,#0
	LDCI	R2,@RR6
	;LD	R0,R2
	;AND	R2,#03H
	OR	ADC_Buffer+12,R2
	;AND	R0,#70H
	;OR	ADC_Buffer+16,R0
	
	LDCI	R2,@RR6
	OR	ADC_Buffer+13,R2
	LDCI	R2,@RR6
	OR	ADC_Buffer+14,R2

	LD	R7,#disp_tab4%256
	LD	R6,#disp_tab4/256
	;ADD	R7,R4
	;ADC	R6,#0
	RCF
	RLC	R4
	ADD	R7,R4
	ADC	R6,#0
	LDCI	R2,@RR6
	OR	ADC_Buffer+14,R2
	LDCI	R2,@RR6
	OR	ADC_Buffer+15,R2
	;LDCI	R2,@RR6
	;OR	ADC_Buffer+20,R2

	RET
;=============================================================
;入口:CURROut_Value1,CURROut_Value2
set_output_curr_display_data::
	LD	R7,#disp_tab4%256
	LD	R6,#disp_tab4/256
	LD	R2,CURROut_Value1
	LD	R3,CURROut_Value2

	;ADD	R7,R2
	;ADC	R6,#0
	RCF
	RLC	R2
	ADD	R7,R2
	ADC	R6,#0
	LDCI	R2,@RR6
	OR	ADC_Buffer+7,R2
	LDCI	R2,@RR6
	OR	ADC_Buffer+8,R2
	;LDCI	R2,@RR6
	;OR	ADC_Buffer+11,R2
	
	LD	R7,#disp_tab1%256
	LD	R6,#disp_tab1/256
	;ADD	R7,R3
	;ADC	R6,#0
	RCF
	RLC	R3
	ADD	R7,R3
	ADC	R6,#0
	LDCI	R2,@RR6
	OR	ADC_Buffer+9,R2
	LDCI	R2,@RR6
	OR	ADC_Buffer+10,R2
	;LDCI	R2,@RR6
	;OR	ADC_Buffer+14,R2
	RET
;=================================================
set_state_data::
	TM	display_set3,#display_set3_AC
	JR	NZ,set_ac_flag
	AND	ADC_Buffer+0,#~01H	;AC
	AND	ADC_Buffer+1,#~70H
	JR	set_ac_end
set_ac_flag:
	OR	ADC_Buffer+0,#01H	;AC
	OR	ADC_Buffer+1,#70H
        OR      ADC_Buffer+1,#10H       ;IT      
        OR      ADC_Buffer+1,#20H       ;Q1       
        OR      ADC_Buffer+1,#40H       ;O2       
set_ac_end:
	
	TM	display_set2,#display_set2_P
	JR	NZ,set_P_flag
	AND	ADC_Buffer+0,#~02H
	JR	set_P_end
set_P_flag:
	OR	ADC_Buffer+0,#02H
set_P_end:
	
	
	TM	display_set1,#display_set1_WN
	JR	NZ,set_WN_flag
	AND	ADC_Buffer+1,#~01H
	JR	set_WN_end
set_WN_flag:
	OR	ADC_Buffer+1,#01H
set_WN_end:


	TM	display_set1,#display_set1_Q2
	JR	NZ,set_Q2_flag
	AND	ADC_Buffer+0,#~10H
	JR	set_Q2_end
set_Q2_flag:
	OR	ADC_Buffer+0,#10H
set_Q2_end:
	

	TM	display_set1,#display_set1_Q1
	JR	NZ,set_Q1_flag
	AND	ADC_Buffer+0,#~20H
	JR	set_Q1_end
set_Q1_flag:
	OR	ADC_Buffer+0,#20H
set_Q1_end:

	TM	display_set1,#display_set1_UL
	JR	NZ,set_UL_flag
	AND	ADC_Buffer+1,#~02H
	JR	set_UL_end
set_UL_flag:
	OR	ADC_Buffer+1,#02H
set_UL_end:

	TM	display_set1,#DLY_SD
	JR	NZ,set_sd_flag
	AND	ADC_Buffer+1,#~04H
	JR	set_sd_end
set_sd_flag:
	OR	ADC_Buffer+1,#04H
set_sd_end:
	
	RET	


;=======================================
;
;取当前ADC最大/最小值,用于KEY 和 Temp
;出口: RR0:最大, RR2:最小值
GetMaxMinData::
	
	AND	UserFlag,#~FreshAdc
	
watie_djfdkfjDSL:
	CLRWDT	
	TM	UserFlag,#FreshAdc
	JR	Z,watie_djfdkfjDSL
	CLR	R0
	CLR	R1	;最大值
	
	LD	R2,#0FFH
	LD	R3,#0FFH ;最小值
	
	
start_get_:
	AND	UserFlag,#~FreshAdc
	
waite_over__:	
	CLRWDT
	TM	UserFlag,#FreshAdc
	JR	Z,waite_over__
	
	CLR	R4
	LD	R5,AdataH
	LD	R8,AdataL
	AND	R8,#03H
	RCF
	RLC	R5
	RLC	R4
	RCF
	RLC	R5
	RLC	R4
	OR	R5,R8

	;===========取最大值		
	CP	R4,R0
	JR	UGT,set_max
	JR	ULT,check_min
	CP	R5,R1
	JR	ULE,check_min
set_max:
	LD	R0,R4
	LD	R1,R5
	JR	check_min
check_over_time:
	SUB	R7,#1	;采样时间到
	SBC	R6,#0
	JR	NC,waite_over__
	RET
	;===========取最小值		
check_min:	
	CP	R4,R2
	JR	UGT,check_over_time
	JR	ULT,set_min
	CP	R5,R3
	JR	UGE,check_over_time
set_min:
	LD	R2,R4
	LD	R3,R5
	JR	check_over_time	
;----------------------------------------------------------------
OUT_100ADC:	.EQU	285
cal_outvolt::	;V=(2+1/2+1/4+1/8)AD/8-1.3
	;入口:RR6 ADC
; 	LD	OutVoltValue+1,R7
; 	LD	OutVoltValue,R6
;	RET
 	LD	R1,R7
 	LD	R0,R6
	
	SUB	R1,#OUT_100ADC%256
	SBC	R0,#OUT_100ADC/256
	JR	NC,calc_continu_out
	COM	R1
	COM	R0
	ADD	R1,#1
	ADC	R0,#0
	CALL	calc_IN_volt_acture;calc_volt_acture
	COM	R1
	COM	R0
	ADD	R1,#221
	ADC	R0,#0
	JR	NC,ret_zero_volt
	JR	rejtjel
calc_continu_out:
	CALL	calc_IN_volt_acture;calc_volt_acture
	ADD	R1,#220
	ADC	R0,#0	
rejtjel:
 	LD	V_ADValueL,R1
 	LD	V_ADValueH,R0
	RET
ret_zero_volt:
	CLR	V_ADValueL
	CLR	V_ADValueH
	RET

;---------------------------------------------------------------------
;=====================================================================
DC_2V:	.EQU	102	;2.25V直流 (8K2/(10K+8K2))
MAX_SAMPLE_TIME:	.EQU	264
MIN_SAMPLE_TIME:	.EQU	139
;CurrentCycle:	.ram_ds 2
SampleNew::
wait_first_do:
	CLRWDT	
	TM	UserFlag,#FreshAdc
	JR	Z,wait_first_do
	AND	UserFlag,#~FreshAdc	;去掉第一个不稳定数据
	CLR	R8
	CLR	R9
	OR	UserFlag,#BasePoint	;直流相位点未找到
	CLR	R4
	CLR	R5	;和
	
	CLR	R6	;次数
	CLR	R7
wait_adc_act_over:
	AND	UserFlag,#~FreshAdc
wait_adc_act_over_:
	CLRWDT	
	TM	UserFlag,#FreshAdc
	JR	Z,wait_adc_act_over_
	LD	R0,AdataH
	LD	R1,AdataL		;取出AD值
	LD	R3,R0
	
	SUB	R3,#DC_2V
	JR	NC,compare_c
	COM	R3
	INC	R3
compare_c:
	CP	R3,#3
	JR	UGT,not_base_point	;不是直流相位点
	;是直流相位点
	TM	UserFlag,#BasePoint
	JR	Z,is_end_point
	AND	UserFlag,#~BasePoint	;是开始计算起始点
	CLR	R8
	CLR	R9
	;OR	P0,#02H		;TEST
	
	JR	compare_next_p
	;--------------------
is_end_point:	
	;>(256-80)*80=14ms,允许结束
	;CP	R2,#80			
	;JR	ULT,set_adc_over	;
	CP	R8,#MIN_SAMPLE_TIME/256
	JR	UGT,set_adc_over
	JR	ULT,is_continue_sum
	CP	R9,#MIN_SAMPLE_TIME%256
	JR	UGT,set_adc_over
	JR	is_continue_sum
	;---------------
not_base_point:
	TM	UserFlag,#BasePoint
	JR	NZ,base_point_not_found	;未出现过直流相位点
is_continue_sum:	
	CLR	R3	;AD值规格化
	RCF
	RLC	R0
	RLC	R3
	RCF
	RLC	R0
	RLC	R3
	OR	R0,R1

	SUB	R0,#409%256
	SBC	R3,#409/256
	JR	NC,add_ccongn
	COM	R0
	COM	R3
	ADD	R0,#1
	ADC	R3,#0
	
add_ccongn:
	ADD	R5,R0
	ADC	R4,R3	;绝对值和
	INC	R7	;次数
	JR	NZ,compare_next_p
	INC	R6
;	JR	wait_adc_act_over
	;------------
compare_next_p:
	;出现过直流相位点且规定采样时间未结束,转继续采样
base_point_not_found:	
	;DEC	R2		;
	INC	R9
	JR	NZ,sikip_hgekjhte
	INC	R8
sikip_hgekjhte:
	CP	R8,#MAX_SAMPLE_TIME/256
	JR	UGT,set_adc_over
	JR	ULT,wait_adc_act_over
	CP	R9,#MAX_SAMPLE_TIME%256	
	JR	ULT,wait_adc_act_over	;未出现过直流相位点且规定采样时间未结束,转继续采样

set_adc_over:
	;AND	P0,#~02H	;TEST
	LD	R3,R6
	OR	R3,R7
	JR	Z,_is_return_zero
	
	LD	R0,R4
	LD	R1,R5
	
	LD	R3,R7
	LD	R2,R6
	
	RCF
	RRC	R2
	RRC	R3
	;LD	CurrentCycle+1,R3;保存电流周期
	;LD	CurrentCycle,R2
	
	CALL	dbl_divs		;
	LD	R7,R1			;平均值->RR8
	LD	R6,R0
	RET
	;余数*10			;提高计算精度,计算一位小数
;	CALL	mul_10
;	LD	R1,R5
;	LD	R0,R4			;
;	CALL	dbl_divs
;	LD	R6,R0
;	LD	R7,R1
;	
;	LD	R5,R9			;整数位*10
;	LD	R4,R8
;	CALL	mul_10
;	ADD	R7,R5			;+小数位退出,
;	ADC	R6,R4
;	RET
	
_is_return_zero:
	CLR	R6
	CLR	R7
	RET
;=====================================================================




;=================
VOLT_200:		.EQU    260;440;509	;输入220V

calc_involt::
; 	LD	InVoltValue+1,R7
; 	LD	InVoltValue,R6
;	RET
	;======================================
 	LD	R1,R7
 	LD	R0,R6
	
	SUB	R1,#VOLT_200%256
	SBC	R0,#VOLT_200/256
	JR	NC,calc_continu_in
	COM	R1
	COM	R0
	ADD	R1,#1
	ADC	R0,#0
	CALL	calc_IN_volt_acture
	COM	R1
	COM	R0
	ADD	R1,#201
	ADC	R0,#0
	JR	NC,ret_zero_volt_in
	JR	rejtjel_in
calc_continu_in:
	CALL	calc_IN_volt_acture
	ADD	R1,#200
	ADC	R0,#0
rejtjel_in:
 	LD	VIn_ADValueL,R1
 	LD	VIn_ADValueH,R0
	RET
ret_zero_volt_in:
	CLR	VIn_ADValueL
	CLR	VIn_ADValueH
	RET

;=====================================
calc_IN_volt_acture: ;10.25/13
	LD	R7,R1
	LD	R6,R0
	RCF
	RRC	R6
	RRC	R7
	RCF
	RRC	R6
	RRC	R7
	
	RCF
	RLC	R1
	RLC	R0
	LD	R5,R1
	LD	R4,R0
	ADD	R1,R7
	ADC	R0,R6

	RCF
	RLC	R5
	RLC	R4
	RCF
	RLC	R5
	RLC	R4
	ADD	R1,R5
	ADC	R0,R4
	LD	R3,#13
	CLR	R2
	CALL	dbl_divs	
	RET
;=========================
;RR0/RR2-->RR0 余数:RR4
dbl_divs::
	CLRWDT
	LD	R6,#16
	
	CLR	R4
	CLR	R5
 _divs_do:
 	RCF
 	RLC	R1
 	RLC	R0
 	
 	RLC	R5
 	RLC	R4
 	
 	CP	R4,R2
 	JR	ULT,no_go
 	JR	UGT,go_sub
 	CP	R5,R3
 	JR	ULT,no_go
   go_sub:
   	SUB	R5,R3
   	SBC	R4,R2
   	OR	R1,#1
   sub_en:
   no_go:
   	DEC	R6
   	JR	NZ,_divs_do
   	RET
;===============================================================================




;================================================
TAB0_WELCOME:
	 .DB     15,15,15,15,15,15,15,16 ;       W
;================================================
TAB1_WELCOME:
	 .DB     15,15,15,15,15,15,16,18 ;      WE
;=================================================
TAB2_WELCOME:
	 .DB     15,15,15,15,15,16,18,21 ;     WEL
;=================================================
TAB3_WELCOME:
 	 .DB     15,15,15,15,16,18,21,13 ;    WELC
=================================================
TAB4_WELCOME:
	 .DB     15,15,15,16,18,21,13,0  ;   WELCO
;=================================================
TAB5_WELCOME:
	 .DB     15,15,16,18,21,13,00,22 ;  WELCOM
;=================================================
TAB6_WELCOME:
	 .DB     15,16,18,21,13,00,22,18 ; WELCOME
;=================================================
TAB7_WELCOME:
	 .DB     16,18,21,13,00,22,18,15 ;WELCOME
;==================================================
TAB1_ACCU:
        .DB     23,11,18,13,15,15,15,27 ;PREC.H
;=================================================
TAB2_ACCU:
        .DB     23,11,18,13,15,15,15,21 ;PREC.L
;================================================
TAB1_DELAY:
         .DB    10,18,

⌨️ 快捷键说明

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