📄 data_pro2.asm
字号:
;PRJ: FAT SCALE ;
;MODULE: DATA_PROCESS2 ;
;FUNCTION: DATA PROCESS ;
;**************************************;
DP_STATE_CON EQU 06 ;
;**************************************;
ORG 900H ;
JPS DP_CASE0 ;
JPS DP_CASE1 ;
JPS DP_CASE2 ;
JPS DP_CASE3 ;
JPS DP_CASE4 ;
JPS DP_CASE5 ;
DATA_PROCESS2: ;
BTST DP2_EN ;
RET ;
;--------------------- ;
LD L,#DP_STATE_CON ;
LD A,DP_STATE ;
CALL CHK_STATE ; CHECK DP STATE
;--------------------- ;
LD WX,#0H ;
LD A,DP_STATE ;
LD E,#0H ;
ADS EA,EA ;
ADS EA,WX ;
JR @EA ;
;**************************************;
;**************************************;
DP_CASE0: ;
BTSF SET_EN ;
JPS DP_CASE0_1 ;
SMB 1 ;
INCS AUTO_OFF_CNT+0 ;
JPS DP_CASE0_1 ;
INCS AUTO_OFF_CNT+1 ;
JPS DP_CASE0_1 ;
INCS AUTO_OFF_CNT+2 ;
JPS DP_CASE0_1 ;
SMB 0 ;
JP TURN_OFF_PWR ;
DP_CASE0_1: ;
SMB 0 ;
BTSF MAN_ON_SCALE ; MAN ON SCALE ?
JPS DP_CASE0_2 ; YES.
DP_CASE0_11: ;
BTST UPDATE_LCD_ON ; NO.& UPDATE_LCD_ON = 1 ?
RET ; NO.
BITR UPDATE_LCD_ON ; YES. CLR IT.
BTST SET_EN ; SET MODULE ENABLE ?
JPS WT_TO_BCD ; NO. DISPLAY WEIGHT
RET ; YES.DON'T DISPLAY WEIGHT
;-------------------------- ;
DP_CASE0_2: ;
BITR SET_EN ;
BTST FAT_TEST_EN ; FAT_TEST_EN = 1 ?
JPS DP_CASE0_3 ; NO.
; CALL DISP_HEIGHT ; YES.
; CALL DISP_AGE ;
; CALL SEX_ICON_ON ;
JPS DP_CASE0_4 ;
DP_CASE0_3: ;
LD A,#0 ;
CALL DISP_8888 ; CLR LCD
; CALL DIGIT789_OFF ;
; CALL DIGIT_AB_OFF ;
; CALL SEX_ICON_OFF ;
; SMB 1 ;
; BITR HEIGHT_ICON ;
; BITR AGE_ICON ;
; BITR INCH_ICON ;
; BITR CM_ICON ;
; SMB 0 ;
DP_CASE0_4: ;
BTST POSITIVE_FLAG ; IS "- "
JP DISP_ERR ; YES IF POSITIVE FLAG = 0, DISP "E ".
LD A,#SCALE_MODE_CON ; NO.
LD RUN_MODE_REG,A ;
LD A,#0H ; FOR FLASH LINE ......
LD FLASH_CNT,A ;
CALL UPDN_DIGIT_OFF ;
CALL LOOP_FLASH ;
LD EA,#(256-50) ;
LD SCALE_DLY,EA ;
LD EA,#(256-65) ;
LD DP_DLY,EA ;
INCS DP_STATE ; CAL_STATE + +
RET ;
;**************************************;
;**************************************;
;DP_CASE1: BEGIN TO FLASH LINE .... ;
DP_CASE1: ;
BTST MAN_ON_SCALE ; MAN ON SCALE ?
JPS RETURN_TO_CASE0 ; NO.
BITR KEYSCAN_EN ; YES. DISABLE KEYSCAN
BTSF SCALE_OK ; SCALE_OK ?
JPS DP_CASE1_1 ; YES.
INCS DP_DLY+0 ; NO.
RET ;
INCS DP_DLY+1 ;
RET ;
LD EA,#(256-65) ;
LD DP_DLY,EA ;
CALL LOOP_FLASH ;
INCS SCALE_DLY+0 ;
RET ;
INCS SCALE_DLY+1 ;
RET ;
JP TURN_OFF_PWR ;
;------------------- ;
;SCALE IS OK ..... ;
DP_CASE1_1: ; SCALE IS OK
BITR SCALE_OK ;
LD EA,#(256-200) ;
LD DP_DLY,EA ;
LD A,#(16-3) ;
LD DP_DLY+2,A ;
INCS DP_STATE ; DP_STATE++
BITR CAL_WT_EN ; CLR THIS BIT
CALL COMP_WEIGHT ; COMPARE WEIGHT WITH LAST WEIGHT
JPS WT_TO_BCD ;
;**************************************;
;**************************************;
;DP_CASE2: DELAY 2S FOR DISPLAY FIANAL WEIGHT VALUE ...
DP_CASE2: ;
INCS DP_DLY+0 ;
RET ;
INCS DP_DLY+1 ;
RET ;
INCS DP_DLY+2 ;
RET ;
INCS DP_STATE ; DP_STATE ++
BTST UPDATE_LAST_WT ; UPDATE LAST WEIGHT ?
RET ; NO.
;WRITE LAST_WEIGHT TO 24C01 ;
WR_LAST_WEIGHT: ;
LD A,#01H ; YES.
LD EEP_NUM,A ; BYTE NUM: 2
LD EA,#00H ;
LD EEP_RAM_ADDR,EA ; EEP_RAM_ADDR: 04H
LD EA,#LAST_WEIGHT ;
LD CPU_RAM_ADDR,EA ;
JPS WRITE_EEP ; WRITE LASTEST WEIGHT TO 24C01
;**************************************;
;**************************************;
;DP_CASE3: CHK TAPE ON PIN,IF TAPE ON IS HIGH, RETURN TO CASE 0
; OTHERWISE,FLASH THE WEIGHT 5 TIMES...
DP_CASE3: ;
BTST MAN_ON_SCALE ; MAN ON SCALE ?
JPS RETURN_TO_CASE0 ; NO.
; IF FATA_TEST_EN = 1 TEST FAT RATE ;
DP_CASE3_1: ;
BTSF FAT_TEST_EN ; YES. ENABLE TEST FAT ?
JP INIT_FAT_TEST ; YES. INITIAL FAT_TEST MODULE
LD A,#(16-4) ; NO. FLASH 4 TIMES THEN PWR OFF
LD FLASH_CNT,A ;
BITS FLASH_DISP_ON ;
INCS DP_STATE ;
RET ;
;**************************************;
;**************************************;
;CASE4: FLASH SCALE RESULT ;
DP_CASE4: ;
INCS DP_STATE ; DP_STATE ++
LD EA,#(256-150) ;
LD DP_DLY,EA ;
;-------------------- ;
BTST MAN_ON_SCALE ; MAN ON SCALE ?
JPS RETURN_TO_CASE0 ; NO.
DP_CASE4_1: ;
BTST FLASH_DISP_ON ; YES. & FLASH ON ?
JPS DP_CASE4_2 ; |
BITR FLASH_DISP_ON ; YES. DISPLAY WEIGHT
LD2B BCC_BUF,WT_BCD ; |
JP DISP_WEIGHT ; |
DP_CASE4_2: ; |
LD A,#0H ; NO.
CALL DISP_8888 ;
BITS FLASH_DISP_ON ;
INCS FLASH_CNT ; FLASH_CNT FULL ?
RET ; NO.
LD2B BCC_BUF,WT_BCD ;
CALL DISP_WEIGHT ;
LD EA,#0FFH ;
CALL DELAY_3MS ;
LD EA,#0FFH ;
CALL DELAY_3MS ;
LD EA,#0FFH ;
CALL DELAY_3MS ;
JP TURN_OFF_PWR ; YES.
;**************************************;
;**************************************;
; DP_CASE5: DELAY 0.5S FOR FLASH LCD ;
DP_CASE5: ;
BTST MAN_ON_SCALE ; MAN ON SCALE ?
JPS RETURN_TO_CASE0 ; NO.
DP_CASE5_1: ; YES.
INCS DP_DLY+0 ;
RET ;
INCS DP_DLY+1 ;
RET ;
LD A,#04H ;
LD DP_STATE,A ;
RET ;
;**************************************;
;**************************************;
RETURN_TO_CASE0: ;
LD A,#0H ;
LD DP_STATE,A ;
BITS CAL_WT_EN ;
CALL INIT_KB ;
LD_AUTOFF_CNT: ;
SMB 1 ;
LD EA,#00H ;
LD AUTO_OFF_CNT+0,EA ;
LD AUTO_OFF_CNT+2,EA ; RELOAD AUTO_OFF_CNT
SMB 0 ;
RET ;
;**************************************;
;**************************************;
; COMPARE WEIGHT WITH LAST WEIGHT ;
COMP_WEIGHT: ;
SMB 15 ;
LDB C,JP1_PIN ;
SMB 0 ;
BTST C ; JP1 CONNECTED ?
RET ; YES.
LD HL,#ABS_ERR ; NO.
LD YZ,#WEIGHT ;
LD WX,#LAST_WEIGHT ;
CALL SUB2BB ; ABS_ERR = |LAST_WEIGHT - WEIGHT|
JPS COMP_WT1 ;
LD HL,#ABS_ERR ;
CALL ABS2BB ; ABS_ERR<= 1+ /ABS_ERR
COMP_WT1: ;
LD WX,#24 ;
BTST KG_FLAG ; UNIT IS KG ?
LD WX,#54 ; NO.
LD HL,#(ABS_ERR+2) ; YES.
LD YZ,#00 ;
CALL COMP_CON ; COMPARE ABS_ERR WITH CONSTANT
JPS COMP_WT2 ; ABS_ERR >= 0.5KG
LD2B WEIGHT,LAST_WEIGHT ;
BITR UPDATE_LAST_WT ;
RET ;
COMP_WT2: ;
LD2B LAST_WEIGHT,WEIGHT ;
BITS UPDATE_LAST_WT ;
RET ;
;**************************************;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -