📄 ledavr-5k.src
字号:
LD Vout_ADValueL,R1
LD Vout_ADValueH,R0
RET
ret_zero_volt:
CLR Vout_ADValueL
CLR Vout_ADValueH
RET
;*********************************
;calc_outvolt:: ;V=10*AD/13;(220v)V=10*AD/27(110v)
;入口:RR6 ADC
;RCF
;RLC R7
;RLC R6
;LD R1,R7
;LD R0,R6
;RCF
;RLC R7
;RLC R6
;RCF
;RLC R7
;RLC R6
;ADD R7,R1
;ADC R6,R0
;CP StandardVoltFlag,#Input127V
;JR EQ,set_110Vout
;LD R3,#13
;CALL Out_Volt_div
;ADD R1,#5
;ADC R0,#0
;JP rejtjel
;set_110Vout:
;LD R3,#12;13
;CALL Out_Volt_div
;SUB R1,#5
;SBC R0,#0
;rejtjel:
;LD Vout_ADValueL,R1
;LD Vout_ADValueH,R0
;LD OutVoltRegulate,R1
;LD OutVoltRegulate+1,R0
;RET
;************************************
Out_Volt_div::
CLR R0
CLR R1
Div_OutLoop:
SUB R7,R3
SBC R6,#0
JR C,exit_out_div
INC R1
CP R1,#0
JR NE,Div_OutLoop
INC R0
JP Div_OutLoop
exit_out_div:
RET
;---------------------------------------------------------------------
;=====================================================================
DC_2V: .EQU 102 ;2.25V直流 (8K2/(10K+8K2))
MAX_SAMPLE_TIME: .EQU 264
MIN_SAMPLE_TIME: .EQU 139
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;
calc_involt::
;======================================
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:
;CP StandardVoltFlag,#Input127V
;JR EQ,load_outV
SUB R1,#3
SBC R0,#0
RET
ret_zero_volt_in:
CLR R1
CLR R0
RET
;=====================================
calc_IN_volt_acture: ;10.25/13
LD R7,R1
LD R6,R0
RCF
RRC R6
RRC R7
RCF
RRC R6
RRC R7
;(VIN-200Vdc)/4 =>(R6,R7)
RCF
RLC R1 ;(VIN-200Vdc)*2=>(R0,R1)
RLC R0 ;
LD R5,R1
LD R4,R0
ADD R1,R7
ADC R0,R6
;(VIN-200Vdc)*2+(VIN-200Vdc)/4=>(R0,R1)
RCF
RLC R5
RLC R4
RCF
RLC R5
RLC R4
ADD R1,R5 ;
ADC R0,R4
;(VIN-200Vdc)*2*4+(VIN-200Vdc)*2+(VIN-200Vdc)/4
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 ;
;(R0,R1)*2=>(R4,R5,R0,R1)
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
;================================================
TAB0_WELCOME1:
.DB 15,15,15,15,15,15,16,18 ; WE
;=================================================
TAB0_WELCOME2:
.DB 15,15,15,15,15,16,18,21 ; WEL
;=================================================
TAB0_WELCOME3:
.DB 15,15,15,15,16,18,21,13 ; WELC
=================================================
TAB0_WELCOME4:
.DB 15,15,15,16,18,21,13,0 ; WELCO
;=================================================
TAB0_WELCOME5:
.DB 15,15,16,18,21,13,00,22 ; WELCOM
;=================================================
TAB0_WELCOME6:
.DB 15,16,18,21,13,00,22,18 ; WELCOME
;=================================================
TAB0_WELCOME7:
.DB 16,18,21,13,00,22,18,15 ;WELCOME
;================================================
TAB1_WELCOME:
.DB 15,15,15,15,15,15,15,15 ; SPAC
;=================================================
;==================================================
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,21,17,25,15, 6, 26 ;DELAY 6S
;================================================
TAB2_DELAY:
.DB 10,18,21,17,25,15, 3, 24 ;DELAY 3m
;================================================
TAB_INPUT:
.DB 15,14,19,23,20,12,15, 21 ;INPUT L
;================================================
TAB_OUTPUT:
.DB 0,20,12,23,20,12,15, 27 ;OUTPUT H
;================================================
TAB_TEMP:
.DB 12,18,22,23,15,15,15, 27 ;TEMP. H
;================================================
TAB_LOAD:
.DB 0,28,18,11,21,0,17, 10 ;OVERLOAD
disp_tab1:
.DB 089H, 051H ;0
.DB 000H, 050H ;1
.DB 08AH, 015H ;2
.DB 082H, 055H ;3
.DB 003H, 054H ;4
.DB 083H, 045H ;5
.DB 08BH, 045H ;6
.DB 000H, 051H ;7
.DB 08BH, 055H ;8
.DB 083H, 055H ;9
.DB 0E0H, 051H ;D 10
.DB 00BH, 01DH ;R 11
.DB 060H, 001H ;T 12
.DB 089H, 001H ;C 13
.DB 0E0H, 001H ;I 14
.DB 000H, 000H ;SPACE15
.DB 00DH, 058H ;W 16
.DB 00BH, 055H ;A 17
.DB 08BH, 005H ;E 18
.DB 019H, 058H ;N 19
.DB 089H, 050H ;U 20
.DB 089H, 000H ;L 21
.DB 019H, 052H ;M 22
.DB 00BH, 015H ;P 23
.DB 019H, 052H ;m 24
.DB 083H, 054H ;Y 25
.DB 090H, 045H ;S 26
.DB 00BH, 054H ;H 27
.DB 050H, 002H ;V 28
.DB 002H, 004H ;- 29
.DB 014H, 00AH ;X 30
.DB 09H, 0AH ;K 31
disp_tab2:
.DB 0A0H, 018H, 009H ;0
.DB 000H, 000H, 009H ;1
.DB 080H, 01AH, 005H ;2
.DB 000H, 01AH, 00DH ;3
.DB 020H, 002H, 00DH ;4
.DB 020H, 01AH, 00CH ;5
.DB 0A0H, 01AH, 00CH ;6
.DB 000H, 010H, 009H ;7
.DB 0A0H, 01AH, 00DH ;8
.DB 020H, 01AH, 00DH ;9
.DB 000H, 078H, 009H ;D
.DB 0A0H, 092H, 005H ;R
.DB 000H, 070H, 000H ;T
.DB 0A0H, 018H, 000H ;C
.DB 000H, 078H, 000H ;I
.DB 000H, 000H, 000H ;SPACE
.DB 0A0H, 084H, 009H ;W
.DB 0A0H, 012H, 00DH ;A
.DB 0A0H, 01AH, 004H ;E
.DB 0A0H, 081H, 009H ;N
.DB 0A0H, 008H, 009H ;U
.DB 0A0H, 008H, 000H ;L
.DB 0A0H, 001H, 00BH ;M
.DB 0A0H, 012H, 005H ;P
.DB 0A0H, 001H, 00BH ;m
.DB 020H, 00AH, 00DH ;Y
.DB 000H, 019H, 00CH ;S
.DB 0A0H, 002H, 00DH ;H 27
.DB 000H, 041H, 002H ;V 28
.DB 000H, 002H, 004H ;- 29
.DB 000H, 085H, 002H ;X 30
.DB 50H,10H,02H
disp_tab3:
.DB 090H, 018H, 005H ;0
.DB 000H, 000H, 005H ;1
.DB 0A0H, 058H, 001H ;2
.DB 020H, 058H, 005H ;3
.DB 030H, 040H, 005H ;4
.DB 030H, 058H, 004H ;5
.DB 0B0H, 058H, 004H ;6
.DB 000H, 010H, 005H ;7
.DB 0B0H, 058H, 005H ;8
.DB 030H, 058H, 005H ;9
.DB 000H, 01EH, 005H ;D
.DB 0B0H, 0D0H, 001H ;R
.DB 000H, 016H, 000H ;T
.DB 090H, 018H, 000H ;C
.DB 000H, 01EH, 000H ;I
.DB 000H, 000H, 000H ;SPACE
.DB 0D0H, 080H, 005H ;W
.DB 0B0H, 050H, 005H ;A
.DB 0B0H, 058H, 000H ;E
.DB 090H, 081H, 005H ;N
.DB 090H, 008H, 005H ;U
.DB 090H, 008H, 000H ;L
.DB 090H, 021H, 005H ;M
.DB 0B0H, 050H, 001H ;P
.DB 090H, 021H, 005H ;m
.DB 030H, 048H, 005H ;Y
.DB 000H, 059H, 004H ;S
.DB 0B0H, 040H, 005H ;H 27
.DB 000H, 025H, 000H ;V 28
.DB 020H, 040H, 000H ;- 29
.DB 040H, 0A1H, 000H ;X 30
.DB 90h,50h,00h ;k31
disp_tab4:
.DB 08AH, 091H ;0
.DB 000H, 090H ;1
.DB 0A8H, 051H ;2
.DB 0A0H, 0D1H ;3
.DB 022H, 0D0H ;4
.DB 0A2H, 0C1H ;5
.DB 0AAH, 0C1H ;6
.DB 000H, 091H ;7
.DB 0AAH, 0D1H ;8
.DB 0A2H, 0D1H ;9
.DB 080H, 097H ;D
.DB 02AH, 059H ;R
.DB 000H, 007H ;T
.DB 08AH, 001H ;C
.DB 080H, 007H ;I
.DB 000H, 000H ;SPACE
.DB 04AH, 098H ;W
.DB 02AH, 0D1H ;A
.DB 0AAH, 041H ;E
.DB 01AH, 098H ;N
.DB 08AH, 090H ;U
.DB 08AH, 000H ;L
.DB 01AH, 0B0H ;M
.DB 02AH, 051H ;P
.DB 01AH, 0B0H ;m
.DB 0A2H, 0D0H ;Y
.DB 090H, 0C1H ;S
.DB 02AH, 0D0H ;H 27
.DB 010H, 024H ;V 28
.DB 020H, 040H ;- 29
.DB 050H, 028H ;X 30
.DB 0ah,48h ;k 31
;======================================================================
;======================================================================
.END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -