📄 lcdavr_1k_1621.src
字号:
calc_regulate_time::
CLR R0
cal_regulate_time_conti:
CP R6,#0
JR NE,OVER_255_timr
CP R7,#10
JR ULT,set_regulat_low
CP R7,#70
JR UGT,OVER_255_timr
LD R0,R7
RCF
RRC R7
RCF
RRC R7
ADD R0,R7
RET
OVER_255_timr:
LD R0,#100
RET
set_regulat_low:
LD R0,#4
RET
;====================================================================
;------------------------------------------------------------------
Display_Module:
CP SystemStatus,#SYSTEM_INIT
JP NE,DLY_NORMAL
CLR display_set2
CP DLYINIT_Timer,#00H
JR NE,DLY_INIT_EXIT
LD R6,#TAB_DLY_INIT/256
LD R7,#TAB_DLY_INIT%256
CP DLYINIT_Counter,#07H
JR ULT,DLY_INIT_FIXED
JR EQ,DLY_INIT_WELCOME
CP DLYINIT_Counter,#10H
JR EQ,DLY_INIT_DELAY
CP DLYINIT_Counter,#8
JR UGE,DLY_INIT_ACCU
DLY_INIT_DELAY:
CP DelaySW_Input,#DLY_SHORT
JR NE,DLY_INIT_LONG
LD DLYINIT_Counter,#08H
LD R2,DLYINIT_Counter
JP DLY_INIT_HANDLE
DLY_INIT_WELCOME:
LD R2,DLYINIT_Counter
LD DLYINIT_Counter,#10H
JP DLY_INIT_HANDLE
DLY_INIT_LONG:
LD DLYINIT_Counter,#09H
LD R2,DLYINIT_Counter
JP DLY_INIT_HANDLE
DLY_INIT_ACCU:
CP DLYINIT_Counter,#10
JR UGE,DLY_INIT_REPLAY
CP AccuSW_Input,#ACCU_HIGH
JR NE,DLY_INIT_LOW
LD DLYINIT_Counter,#10
LD R2,DLYINIT_Counter
JP DLY_INIT_HANDLE
DLY_INIT_LOW:
LD DLYINIT_Counter,#11
LD R2,DLYINIT_Counter
JP DLY_INIT_HANDLE
DLY_INIT_REPLAY:
CP DelaySW_Input,#DLY_SHORT
JR EQ,DLY_INIT_EXIT
CLR DLYINIT_Counter
JP DLY_INIT_FIXED
DLY_INIT_FIXED:
LD R2,DLYINIT_Counter
INC DLYINIT_Counter
DLY_INIT_HANDLE:
RCF
RLC R2
ADD R7,R2
ADC R6,#00H
LDCI R14,@RR6
LDCI R15,@RR6
JP @RR14
DLY_INIT_EXIT:
RET
TAB_DLY_INIT:
.DW DLY_INIT_DATA0
.DW DLY_INIT_DATA1
.DW DLY_INIT_DATA2
.DW DLY_INIT_DATA3
.DW DLY_INIT_DATA4
.DW DLY_INIT_DATA5
.DW DLY_INIT_DATA6
.DW DLY_INIT_DATA7
.DW DLY_INIT_DATA8
.DW DLY_INIT_DATA9
.DW DLY_INIT_DATA10
.DW DLY_INIT_DATA11
DLY_INIT_DATA0:
LD R6,#TAB0_WELCOME/256
LD R7,#TAB0_WELCOME%256
CALL GET_DLY_INIT_DATA
LD DLYINIT_Timer,#FOUR_TEN_SECOND
JP DLY_INIT_PROCESS
DLY_INIT_DATA1:
LD R6,#TAB1_WELCOME/256
LD R7,#TAB1_WELCOME%256
CALL GET_DLY_INIT_DATA
LD DLYINIT_Timer,#FOUR_TEN_SECOND
JP DLY_INIT_PROCESS
DLY_INIT_DATA2:
LD R6,#TAB2_WELCOME/256
LD R7,#TAB2_WELCOME%256
CALL GET_DLY_INIT_DATA
LD DLYINIT_Timer,#FOUR_TEN_SECOND
JP DLY_INIT_PROCESS
DLY_INIT_DATA3:
LD R6,#TAB3_WELCOME/256
LD R7,#TAB3_WELCOME%256
CALL GET_DLY_INIT_DATA
LD DLYINIT_Timer,#FOUR_TEN_SECOND
JP DLY_INIT_PROCESS
DLY_INIT_DATA4:
LD R6,#TAB4_WELCOME/256
LD R7,#TAB4_WELCOME%256
CALL GET_DLY_INIT_DATA
LD DLYINIT_Timer,#FOUR_TEN_SECOND
JP DLY_INIT_PROCESS
DLY_INIT_DATA5:
LD R6,#TAB5_WELCOME/256
LD R7,#TAB5_WELCOME%256
CALL GET_DLY_INIT_DATA
LD DLYINIT_Timer,#FOUR_TEN_SECOND
JP DLY_INIT_PROCESS
DLY_INIT_DATA6:
LD R6,#TAB6_WELCOME/256
LD R7,#TAB6_WELCOME%256
CALL GET_DLY_INIT_DATA
LD DLYINIT_Timer,#FOUR_TEN_SECOND
JP DLY_INIT_PROCESS
DLY_INIT_DATA7:
LD R6,#TAB7_WELCOME/256
LD R7,#TAB7_WELCOME%256
CALL GET_DLY_INIT_DATA
LD DLYINIT_Timer,#EIGHT_TEN_SECOND
JP DLY_INIT_PROCESS
DLY_INIT_DATA8:
LD R6,#TAB1_DELAY/256
LD R7,#TAB1_DELAY%256
CALL GET_DLY_INIT_DATA
CLR display_set2
LD DLYINIT_Timer,#EIGHT_TEN_SECOND
LD DelaySW_Save,#DLY_UNCHANGE
JP DLY_INIT_PROCESS
DLY_INIT_DATA9:
LD R6,#TAB2_DELAY/256
LD R7,#TAB2_DELAY%256
CALL GET_DLY_INIT_DATA
CLR display_set2
LD DLYINIT_Timer,#EIGHT_TEN_SECOND
LD DelaySW_Save,#DLY_UNCHANGE
JP DLY_INIT_PROCESS
DLY_INIT_DATA10:
LD R6,#TAB1_ACCU/256
LD R7,#TAB1_ACCU%256
CALL GET_DLY_INIT_DATA
LD display_set2,#display_set2_P
LD DLYINIT_Timer,#EIGHT_TEN_SECOND
JP DLY_INIT_PROCESS
DLY_INIT_DATA11:
LD R6,#TAB2_ACCU/256
LD R7,#TAB2_ACCU%256
CALL GET_DLY_INIT_DATA
LD display_set2,#display_set2_P
LD DLYINIT_Timer,#EIGHT_TEN_SECOND
JP DLY_INIT_PROCESS
DLY_INIT_PROCESS:
LD display_set1,#00H
LD display_set3,#00H
JP DLY_NORMAL_PROCESS
GET_DLY_INIT_DATA:
LDCI R8,@RR6
LD VoltIn_Value1,R8
LDCI R8,@RR6
LD VoltIn_Value2,R8
LDCI R8,@RR6
LD VoltIn_Value3,R8
LDCI R8,@RR6
LD CURROut_Value1,R8
LDCI R8,@RR6
LD CURROut_Value2,R8
LDCI R8,@RR6
LD VoltOut_Value1,R8
LDCI R8,@RR6
LD VoltOut_Value2,R8
LDCI R8,@RR6
LD VoltOut_Value3,R8
RET
DLY_NORMAL_ACCU:
LD DLYDelay_Timer,#TWO_SECOND
LD DLYINIT_Counter,#8
LD R6,#TAB_DLY_INIT/256
LD R7,#TAB_DLY_INIT%256
LD AccuSW_Save,#DLY_UNCHANGE
JP DLY_INIT_ACCU
DLY_NORMAL_DELAY:
LD DLYDelay_Timer,#TWO_SECOND
LD DLYINIT_Counter,#8
LD R6,#TAB_DLY_INIT/256
LD R7,#TAB_DLY_INIT%256
JP DLY_INIT_DELAY
DLY_NORMAL:
TM UserFlag,#DetectFlag
JP Z,DLY_EXIT
CP SystemStatus,#SYSTEM_NORMAL
JP NE,DLY_FAILED
CP AccuSW_Save,#DLY_CHANGED
JR EQ,DLY_NORMAL_ACCU
CP DelaySW_Save,#DLY_SKIP
JR EQ,DLY_NORMAL_DELAY
LD DLYDelay_Timer,#TWO_SECOND
TM UserFlag,#DLY_NORMAL_START
JR NZ,DLY_NORMAL_COMP1
OR UserFlag,#DLY_NORMAL_START
LD LCDBlink_Timer,#SIX_TEN_SECOND
LD display_set1,#display_set1_WN|display_set1_Q1
LD display_set3,#display_set3_AC
JP DLY_NORMAL_PROCESS
DLY_NORMAL_COMP1:
CP display_set1,#display_set1_WN|display_set1_Q1
JR NE,DLY_NORMAL_Q
CP LCDBlink_Timer,#00h
JR NE,DLY_NORMAL_PROCESS
LD display_set1,#display_set1_WN|display_set1_Q2
; LD display_set2,#display_set2_P
LD display_set3,#display_set3_AC
LD LCDBlink_Timer,#SIX_TEN_SECOND
JP DLY_NORMAL_PROCESS
DLY_NORMAL_Q:
CP LCDBlink_Timer,#00H
JR NE,DLY_NORMAL_PROCESS
LD display_set1,#display_set1_WN|display_set1_Q1
; LD display_set2,#display_set2_P
LD display_set3,#display_set3_AC
LD LCDBlink_Timer,#SIX_TEN_SECOND
DLY_NORMAL_PROCESS:
CALL clear_buffer_routine
CALL set_state_data
CALL set_input_volt_display_data
CALL set_output_curr_display_data
CALL set_output_volt_display_data
;=====================================
DLY_START:
CALL WriteDisplayData
DLY_EXIT:
RET
;=====================================
DLY_FAILED:
LD DLYDelay_Timer,#SIX_TEN_SECOND
LD display_set3,#display_set3_AC
CP LCDBlink_Timer,#00h
JR NE,DLY_FAILED_PROCESS
CP display_set1,#display_set1_UL
JR NE,DLY_FAILED_LOGO
LD display_set1,#display_set1_UL|DLY_SD
LD LCDBlink_Timer,#SIX_TEN_SECOND
JP DLY_FAILED_PROCESS
DLY_FAILED_LOGO:
LD display_set1,#display_set1_UL
LD LCDBlink_Timer,#SIX_TEN_SECOND
DLY_FAILED_PROCESS:
CP Temp_Protect,#TEMP_PROTECTED
JR EQ,DLY_TEMP_FAIL
CP LoadState,#LOAD_PROT
JR EQ,FAIL_LOAD_PROC
CP Volt_Protect,#VOLT_PROTECTED
JR EQ,DLY_VOLT_FAIL
JP DLY_NORMAL_PROCESS
DLY_TEMP_FAIL:
LD R6,#TAB_TEMP/256
LD R7,#TAB_TEMP%256
CALL GET_DLY_INIT_DATA
LD display_set2,#display_set2_P
LD display_set3,#00H
LD DLYINIT_Timer,#EIGHT_TEN_SECOND
JP DLY_NORMAL_PROCESS
FAIL_LOAD_PROC:
LD R6,#TAB_LOAD/256
LD R7,#TAB_LOAD%256
CALL GET_DLY_INIT_DATA
LD display_set3,#00H
LD display_set2,#00H
LD DLYINIT_Timer,#EIGHT_TEN_SECOND
JP DLY_NORMAL_PROCESS
DLY_VOLT_FAIL:
LD R6,#TAB_INPUT/256
LD R7,#TAB_INPUT%256
CALL GET_DLY_INIT_DATA
LD display_set2,#00H
LD display_set3,#00H
LD DLYINIT_Timer,#EIGHT_TEN_SECOND
JP DLY_NORMAL_PROCESS
;入口 R0,COMMAND_ID
;出口 无
WriteCommand::
LD R6,#COMMAND_ID_TAB/256
LD R7,#COMMAND_ID_TAB%256
RCF
RLC R0
ADD R7,R0
ADC R6,#0
LDCI R1,@RR6
LDC R2,@RR6 ;取COMMAND-->R1,R2
CS LOWO
LD R3,#8
write_contin
DATA_PIN HIGHO
RLC R1
JR C,is_send_high_bit
DATA_PIN LOWO
is_send_high_bit:
MAKEWRCLK
DEC R3
JR NZ,write_contin
LD R3,#4
write_contin_B:
DATA_PIN HIGHO
RLC R2
JR C,is_send_high_bit_B
DATA_PIN LOWO
is_send_high_bit_B:
MAKEWRCLK
DEC R3
JR NZ,write_contin_B
CS HIGHO
RET
;---------------------------------
WriteDisplayData::
LD R1,#0A0H
LD R3,#8
CS LOWO
WRINGD:
DATA_PIN HIGHO
RLC R1
JR C,iiiissf
DATA_PIN LOWO
iiiissf:
MAKEWRCLK
DEC R3
JR NZ,WRINGD ;
DATA_PIN LOWO
MAKEWRCLK
;DATA_PIN LOWO ;写完10BIT命令
;MAKEWRCLK
LD R2,#ADC_Buffer
write_data_do:
LD R1,@R2
;CALL WriteData
;LD R0,R1 ;
;AND R1,#0FH ;提取低四位数据(对应显示地址+0,COM0--COM4,高四位未用)
CALL WriteDo
;RR R0
;RR R0
;RR R0
;RR R0
;AND R0,#0fH
;LD R1,R0
;CALL WriteDo ;提取高四位数据(对应显示地址+2)
INC R2
CP R2,#ADC_Buffer+16
JR ULT,write_data_do
CS HIGHO
RET
;=====================
;WriteData::
; RET
;====================================================
;向1623发送8位数据
WriteDo:
LD R3,#8
JJJJJJJJJJJJJJJJ:
DATA_PIN HIGHO
RRC R1
JR C,SKFJDJF
DATA_PIN LOWO
SKFJDJF:
MAKEWRCLK
DEC R3
JR NZ,JJJJJJJJJJJJJJJJ
RET
;----------------------------------------------
DELAY_us::
LD R8,#0CH
loop_us:
NOP
DEC R8 ;6
JR NZ,loop_us ;12/10
RET
;AVR_LCD 移植
clear_buffer_routine:
LD R1,#ADC_Buffer
clear_ADC_Buffer:
CLR @R1
INC R1
CP R1,#(ADC_Buffer+16)
JP ULT,clear_ADC_Buffer
RET
;入口
;将数据显示在123位 VoltIn_Value1,VoltIn_Value2,VoltIn_Value3
set_input_volt_display_data::
LD R7,#disp_tab1%256
LD R6,#disp_tab1/256
LD R2,VoltIn_Value1
LD R3,VoltIn_Value2
LD R4,VoltIn_Value3
;ADD R7,R2
;ADC R6,#0
RCF
RLC R2
ADD R7,R2
ADC R6,#0
LDCI R2,@RR6
OR ADC_Buffer+2,R2
LDCI R2,@RR6
OR ADC_Buffer+3,R2
;LDCI R2,@RR6
;OR ADC_Buffer+5,R2
LD R7,#disp_tab2%256
LD R6,#disp_tab2/256
ADD R7,R3
ADC R6,#0
RCF
RLC R3
ADD R7,R3
ADC R6,#0
LDCI R2,@RR6
OR ADC_Buffer+3,R2
LDCI R2,@RR6
OR ADC_Buffer+4,R2
LDCI R2,@RR6
OR ADC_Buffer+5,R2
LD R7,#disp_tab3%256
LD R6,#disp_tab3/256
ADD R7,R4
ADC R6,#0
RCF
RLC R4
ADD R7,R4
ADC R6,#0
LDCI R2,@RR6
OR ADC_Buffer+5,R2
LDCI R2,@RR6
OR ADC_Buffer+6,R2
LDCI R2,@RR6
OR ADC_Buffer+7,R2
RET
;======================================
;入口:VoltOut_Value1,VoltOut_Value2,VoltOut_Value3
;
set_output_volt_display_data::
LD R7,#disp_tab2%256
LD R6,#disp_tab2/256
LD R2,VoltOut_Value1
LD R3,VoltOut_Value2
LD R4,VoltOut_Value3
ADD R7,R2
ADC R6,#0
RCF
RLC R2
ADD R7,R2
ADC R6,#0
LDCI R2,@RR6
OR ADC_Buffer+10,R2
LDCI R2,@RR6
OR ADC_Buffer+11,R2
LDCI R2,@RR6
;LD R6,R2
;AND R2,#07H
OR ADC_Buffer+12,R2
;AND R6,#30H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -