📄 samtestc.src.bak
字号:
LD NewWeightBCD3,A ;
JR CalculateLB70
CalculateLB60
LD A,YS_F_REG_4 ;
LD NewWeightBCD4,A ;
CalculateLB70
RET
;***********************************************************
; F: Calculate Fuild oz
; I: NewWeightCnt
; O: NewWeightBCD[]
; D: EA, HL, WX, YZ
;
CalculateFLOZ
LD A,FactoryMode
DECS A ; if mode = 1, use CalculateLB
JR CalculateFLOZ_1
JPS CalculateLB
CalculateFLOZ_1
CALLS Rnd2Step_floz ;
CALLS CalStepVal ;
PUSH EA ;
CALL ozRatio2LReg ;
LD WX,#YS_L_REG_4 ;
LD HL,#YS_F_REG_4 ;
REF RCpyBuf ; Copy YS_L_REG[] to YS_F_REG[]
REF RDiv_10_FReg ;
REF RCpy_F2LReg ;
REF RNWCnt2FReg ;
REF RDiv_YS ;
REF RHxFReg2Dec ;
LD WX,#DecBuf4 ;
LD HL,#NewWeightBCD3
CALL CpyBuf2 ;
;------
REF RCpy_R2FReg ; get remainder
REF RMul_10_FReg ;
LD WX,#YS_L_REG_4 ;
REF RCurStep2Ary ;
REF RDiv_YS ;
POP EA ; get step value
CALL Mul_EA_FReg ;
LD A,YS_F_REG_4 ;
LD NewWeightBCD4,A ;
RET
;***********************************************************
; F: Check 4 dsp Step change
; I: AverageCount, NewWeightCnt, ZeroCount
; O: Chge4stepNow = 0: within 4 dsp step range
; = 1: beyond 4 dsp step count
;
Chk_4stepChange
LD HL,#PreviousCount ; compare with previous count
CALL GetDif ; and check 4 step change
REF RActCurStp2Ary ;
LD HL,#YS_F_REG_4 ;
REF RDouble_YS ;
LD HL,#YS_F_REG_4 ;
REF RDouble_YS ;
LD WX,#YS_F_REG_4 ;
LD HL,#DecBuf+2 ; DecBuf = Step Count * 4
CALLS Ary2Wrd ;
LD HL,#HexBuf ; HL = HexBuf = weight change
LD WX,#DecBuf ; WX = DecBuf = 4 step count
REF RCmpHex ; if @WX => @HL, skip
JR GoSetSlpTmr ;
RET ;
GoSetSlpTmr
BITS Chge4stepNow ;
BITR IdleCnstRdNow ;
BITR IdleZeroRdNow ;
BITR ChgeSlpTmrNow
LD A,#ChgeSlpTmrDly ; Reset set sleep timer delay
LD Chge4stepTimer,A
RET
;***********************************************************
; F: Main Calculation Routine
; I: SampleCount0, SampleCount1, HaveData, UnitMode
; O: NewWeightBCD
; LDigitxxx1, LDigitxx1x, LDigitx1xx, LDigit1xxx
; D: EA, HL, WX, YZ
;
MainCalculate
BTSF IdleBatLowNow ; if battery low now,
RET ; exit
BTST HaveSample0 ; Got 2 Samples?
RET ;
BTST HaveSample1 ;
RET ;
REF RAverageSample ;
BTST EnCreeping ; check creeping enable
JPS MainCalculate22
CALL ChkZeroOne
;=======================
; Compare to the previous count
; Calculate the difference
LD HL,#PreviousCount ; compare with the previous count
CALL GetDif ; and check for creeping
LD EA,HexBuf+2 ; store the difference for further
LD YZ,EA ; calculation
LD HL,#AverageCount ; HL = HexBuf = AverageCount
LD WX,#PreviousCount ; WX = DecBuf = PreviousCount
REF RCmpHex ; if @WX => @HL, skip
JR MainCalculate1
LD EA,#0FFh ; complement in case of negative difference
XOR YZ,EA
INCS YZ
NOP
; Compare to Difference with the creep limit
MainCalculate1
LD EA,#CreepingDif4
REF RPutDec
LD HL,#HexBuf ; HL = HexBuf = weight change
LD WX,#DecBuf ; WX = DecBuf = Hold stable count
REF RCmpHex ; if @WX => @HL, skip
JPS MainCalculate22
;=====================================
; Check Creep Zero
MainCalculate20
; Modified by Dennis 1-12-2003
BTST ZeroOne ; For ZeroOne Range
JPS MainCalculate20b ; Reset Zero
BTST CreepZero ; Check creep zero timer
JPS MainCalculate21
RCF
LD EA,AverageCount+2 ;
LD HL,#ZeroRtnUpBnd ;
REF RADC_EAHL ;
LD ZeroCount+2,EA ;
LD EA,AverageCount ;
LD HL,#0 ;
REF RADC_EAHL ;
LD ZeroCount,EA ;
REF RSetBnd
JPS MainCalculate22
MainCalculate20b
LD A,#ZeroUpdate
LD Tag2sec,A
BITR CreepZero
;=====================================
; Check creeping exist
MainCalculate21
BTST TimrFinished ;
JPS MainCalculate26 ; Creeping timer = 8s?
; creeping exist, update zero
LD HL,#0 ; HL = MSB of different
LD EA,#80h
RCF
ADS EA,YZ
JR MainCalculate21a
BTSF ZeroOne ; For Zero one,
JPS MainCalculate22 ; not compensate for dropping
LD HL,#0FFH ; Change to negative for dropping
MainCalculate21a
RCF ; ZeroCount = ZeroCount + diff
LD EA,ZeroCount+2 ; lsb
ADC EA,YZ ;
LD ZeroCount+2,EA ;
LD EA,ZeroCount ; msb
REF RADC_EAHL ;
LD ZeroCount,EA ;
RCF ; StartZero = StartZero + diff
LD EA,StartZero+2 ; lsb
ADC EA,YZ ;
LD StartZero+2,EA ;
LD EA,StartZero ; msb
REF RADC_EAHL ;
LD StartZero,EA ;
REF RSetBnd ; Set Zero Bound
MainCalculate22
LD A,#CreepTimer_RL4 ; reset timer
BTST ZeroOne ;
LD A,#CreepTimer_RL6 ;
LD CreepTimer,A ;
BITR TimrFinished ;
LD A,#ZeroUpdate ;
LD Tag2sec,A ;
BITR CreepZero ;
MainCalculate23
CALLS Chk_4stepChange ;
LD HL,#PreviousCount ; AverageCount ---> PreviousCount
REF RGetAverageCnt
;------------------------------------------------------------------------
MainCalculate26
REF RCalWeightCnt ;
;=====================================
MainCalculate2
BITR OvrWtNow ;
CALLS ChkOverloading ; Chk overload
JR MainCalculate3 ;
BITS OvrWtNow ;
CALLS OverloadingProc ;
RET ;
MainCalculate3
BITR UdrWtNow ;
CALLS ChkUnderweight ; Chk underweight
JR UMainCalculate6 ;
BITS UdrWtNow ;
CALLS UnderweightProc ;
BTST UdrWtNow ;
JR MainCalculate7 ;
RET ;
; add by hcy 03-12-2 9:45
UMainCalculate6:
BITR UdrAlrDsp ; clr already display '----'
; add by hcy 03-12-2 10:37
; bits PermitSend
MainCalculate6
BITR UdrWtNow ; Clear UdrWtNow
BITR OvrWtNow ; Clear OvrWtNow
BITR AutoZeroNow ; Disable Reset to Zero
LD A,#BCNT2s_RL ;
LD AutoZeroTim,A ; reload Auto zero timer
MainCalculate7
BTST SolLiqMode ; if Solid mode,
JR MainCalculate8 ; jump
BTST UnitMode ;
JPS CalculateML ;
JPS CalculateFLOZ ; Remark for temporary Creep testing
MainCalculate8
BTST UnitMode ;
JPS CalculateKG ;
JPS CalculateLB ; Remark for temporary Creep testing
;***********************************************************
; F: Main Calculation Routine
; I: SampleCount0, SampleCount1, HaveData, UnitMode
; O: NewWeightBCD
; LDigitxxx1, LDigitxx1x, LDigitx1xx, LDigit1xxx
; D: EA, HL, WX, YZ
;
;MainCalculate
; BTSF IdleBatLowNow ; if battery low now,
; RET ; exit
;
; BTST HaveSample0 ; Got 2 Samples?
; RET ;
; BTST HaveSample1 ;
; RET ;
;
;
;
; REF RAverageSample ;
;
; BTST EnCreeping
; JPS MainCalculate22
;
; CALL ChkZeroOne
;
; LD HL,#PreviousCount ; compare with the previous count
; CALL GetDif ; and check for creeping
;
; LD EA,HexBuf+2 ; store the difference for further
; LD YZ,EA ; calculation
;
; LD HL,#AverageCount ; HL = HexBuf = AverageCount
; LD WX,#PreviousCount ; WX = DecBuf = PreviousCount
; REF RCmpHex ; if @WX => @HL, skip
; JR MainCalculate1
; LD EA,#0FFh
; XOR YZ,EA
; INCS YZ
; NOP
;MainCalculate1
; LD EA,#CreepingDif4
; REF RPutDec
;
; LD HL,#HexBuf ; HL = HexBuf = weight change
; LD WX,#DecBuf ; WX = DecBuf = Hold stable count
; REF RCmpHex ; if @WX => @HL, skip
; JPS MainCalculate22
;
;=====================================
; Check creep zero
;MainCalculate20
; ; HexBuf = ZeroCount - AverageCount
; LD HL,#AverageCount
; LD WX,#ZeroCount
; REF RSubHex ; HexBuf = @WX - @HL
;
; BTST C
; JR MainCalculate20a
; JPS MainCalculate20b ; if ZeroCount < Average Count, check no creep zero
;
;MainCalculate20a
; LD EA,#ZeroRtnUpBnd
; REF RPutDec
;
; LD HL,#DecBuf ;
; LD WX,#HexBuf ; HexBuf = ZeroCount - AverageCount
; REF RCmpHex ; If @HL <= @WX, skip
; JPS MainCalculate20b
;
; LD EA,#ZeroRtnLowBnd
; REF RPutDec
;
; LD HL,#HexBuf ; HexBuf = ZeroCount - AverageCount
; LD WX,#DecBuf ;
; REF RCmpHex ; If @HL <= @WX, skip
; JPS MainCalculate20b
;
; BTST CreepZero ; Check creep zero timer
; JPS MainCalculate21
;
; RCF
; LD EA,AverageCount+2 ;
; LD HL,#ZeroRtnUpBnd ;
; REF RADC_EAHL ;
; LD ZeroCount+2,EA ;
; LD EA,AverageCount ;
; LD HL,#0 ;
; REF RADC_EAHL ;
; LD ZeroCount,EA ;
;
; REF RSetBnd
; JPS MainCalculate22
;MainCalculate20b
; LD A,#ZeroUpdate
; LD Tag2sec,A
; BITR CreepZero
;=====================================
; Check creeping exist
;MainCalculate21
; BTST TimrFinished ;
; JPS MainCalculate26 ; Creeping timer = 8s?
;
; LD HL,#0 ; HL = MSB of different
; LD EA,#80h
; RCF
; ADS EA,YZ
; JR MainCalculate21a
; BTSF ZeroOne
; JPS MainCalculate22
; LD HL,#0FFH
;MainCalculate21a
; RCF ; ZeroCount = ZeroCount + diff
; LD EA,ZeroCount+2 ; lsb
; ADC EA,YZ ;
; LD ZeroCount+2,EA ;
; LD EA,ZeroCount ; msb
; REF RADC_EAHL ;
; LD ZeroCount,EA ;
;
; RCF ; StartZero = StartZero + diff
; LD EA,StartZero+2 ; lsb
; ADC EA,YZ ;
; LD StartZero+2,EA ;
; LD EA,StartZero ; msb
; REF RADC_EAHL ;
; LD StartZero,EA ;
;
; REF RSetBnd ; Set Zero Bound
;
;MainCalculate22
; LD A,#CreepTimer_RL4 ; reset timer
; BTST ZeroOne ;
; LD A,#CreepTimer_RL6 ;
; LD CreepTimer,A ;
; BITR TimrFinished ;
;
; LD A,#ZeroUpdate ;
; LD Tag2sec,A ;
; BITR CreepZero ;
;MainCalculate23
; CALLS Chk_4stepChange ;
; LD HL,#PreviousCount ; AverageCount ---> PreviousCount
; REF RGetAverageCnt
;
;------------------------------------------------------------------------
;MainCalculate26
;----------------------------------------------------------
;MainCalculate29
; REF RCalWeightCnt ;
;=====================================
;MainCalculate2
; BITR OvrWtNow ;
; CALLS ChkOverloading ; Chk overload
; JR MainCalculate3 ;
; BITS OvrWtNow ;
; CALLS OverloadingProc ;
; RET ;
;
;MainCalculate3
; BTSF HoldRd ; check reading is hold now
; RET
;
; BITR UdrWtNow ;
; CALLS ChkUnderweight ; Chk underweight
; JR UMainCalculate6 ;
; BITS UdrWtNow ;
; CALLS UnderweightProc ;
; BTST UdrWtNow ;
; JR MainCalculate7 ;
; RET ;
;
;UMainCalculate6:
; ; add by hcy 03-12-1 18:27
; BITR UdrAlrDsp ; clr already display '----'
;MainCalculate6
; BITR UdrWtNow ; Clear UdrWtNow
; BITR OvrWtNow ; Clear OvrWtNow
; BITR AutoZeroNow ; Disable Reset to Zero
; LD A,#BCNT2s_RL ;
; LD AutoZeroTim,A ; reload Auto zero timer
;
;MainCalculate7
; BTST SolLiqMode ; if Solid mode,
; JR MainCalculate8 ; jump
; BTST UnitMode ;
; JPS CalculateML ;
; JPS CalculateFLOZ ; Remark for temporary Creep testing
;MainCalculate8
; BTST UnitMode ;
; JPS CalculateKG ;
; JPS CalculateLB ; Remark for temporary Creep testing
;***********************************************************
; F: Calculate NewWeightCnt
; I: AverageCount, ZeroCount
; O: NewWeightCnt
CalWeightCount
PUSH EA
PUSH HL
PUSH WX
; Show Zero in case of negative
LD HL,#ZeroCount ;
LD WX,#AverageCount ;
REF RCmpHex ; if @HL <= @WX, skip
JPS CalWeightCnt2 ;
; Modificated by Dennis 1-12-2003
BTST EnCreeping ; check creeping enable
JPS CalWeightCnt1
; Show Zero in case of ZeroOne
BTSF ZeroOne
JPS CalWeightCnt2
CalWeightCnt1
; NewWeightCnt = AverageCount - ZeroCount
LD HL,#ZeroCount
LD WX,#AverageCount
REF RSubHex ; HexBuf = @WX - @HL
LD EA,HexBuf+2
LD NewWeightCnt+2,EA
LD EA,HexBuf
LD NewWeightCnt,EA
; display 2 grams until the actual weight is 3.5 grams
LD EA,#22 ; Load 2 grams display magin
REF RPutDec
LD HL,#NewWeightCnt ; HL = HexBuf = AverageCount
LD WX,#DecBuf ; WX = DecBuf = PreviousCount
REF RCmpHex ; if @WX => @HL, skip
JR CalWeightCntE
LD EA,#12 ; display 2 grams
LD NewWeightCnt+2,EA
REF RLD_EA0
LD NewWeightCnt,EA
JR CalWeightCntE
CalWeightCnt2
REF RLD_EA0 ;
LD NewWeightCnt,EA ; MSB
LD NewWeightCnt+2,EA ; LSB
CalWeightCntE
REF RRET_WXHLEA
;***********************************************************
; F: Calculate NewWeightCnt
; I: AverageCount, ZeroCount
; O: NewWeightCnt
;CalWeightCount
; PUSH EA
; PUSH HL
; PUSH WX
;
; LD HL,#ZeroCount ;
; LD WX,#AverageCount ;
; REF RCmpHex ; if @HL <= @WX, skip
; JR CalWeightCnt2 ;
;
; ; NewWeightCnt = AverageCount - ZeroCount
; LD HL,#ZeroCount
; LD WX,#AverageCount
; REF RSubHex ; HexBuf = @WX - @HL
; LD EA,HexBuf+2
; LD NewWeightCnt+2,EA
; LD EA,HexBuf
; LD NewWeightCnt,EA
; JR CalWeightCntE
;
;CalWeightCnt2
; REF RLD_EA0 ;
; LD NewWeightCnt,EA ; MSB
; LD NewWeightCnt+2,EA ; LSB
;
;CalWeightCntE
; REF RRET_WXHLEA
;***********************************************************
; F: Take Average of 2 Samples Count
; I: Samp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -