📄 fat_test.asm
字号:
;MODULE: FAT_TEST ;
;FUNCTION: TEST FAT RATE ;
;**************************************;
FAT_STATE_CON EQU 07 ;
;**************************************;
ORG 1600H ;
JPS FAT_CASE0 ; DISPLAY "OOOO"
JPS FAT_CASE1 ; TEST FAT_RATE
JPS FAT_CASE2 ;-----\
JPS FAT_CASE3 ; |
JPS FAT_CASE4 ; |--- FLASH WEIGHT & FAT_RATE
JPS FAT_CASE5 ;-----/
JPS FAT_CASE6 ; CHK e_POLE
FAT_TEST: ;
BTST FAT_MODULE_EN ; FAT_MODULE_EN = 1 ?
RET ; NO. EXIT
;-------------------- ;
LD L,#FAT_STATE_CON ;
LD A,FAT_STATE ;
CALL CHK_STATE ; CHECK FAT STATE
;-------------------- ;
LD WX,#0H ;
LD A,FAT_STATE ;
LD E,#0 ;
ADS EA,EA ;
ADS EA,WX ;
JR @EA ;
;**************************************;
FAT_CASE0: ;
LD A,#0 ;
LD DIS_FAT_CNT,A ;
CALL DISP_8888 ;
CALL LD_FAT_DLY1 ;
INCS FAT_STATE ; FAT_STATE + +
LD EA,#OOOO ;
JPS TIP_DISP ; DISP "oooo"
;**************************************;
FAT_CASE1: ;
BTST MAN_ON_SCALE ; MAN ON SCALE ?
JPS FAT_CASE1_6 ; NO.
CALL CHK_HUMAN ; YES. TOUCH IS OK ?
BTST C ;
JPS FAT_CASE1_0 ; YES.
JPS FAT_CASE1_6 ; NO.
FAT_CASE1_0: ;
INCS FAT_DLY+0 ;
RET ;
INCS FAT_DLY+1 ;
RET ;
INCS DIS_FAT_CNT ;
LD A,DIS_FAT_CNT ;
CPSE A,#01 ;
JPS FAT_CASE1_1 ;
LD EA,#XOOO ; DISPLAY " ooo"
JPS FAT_CASE1_C ;
FAT_CASE1_1: ;
CPSE A,#02 ;
JPS FAT_CASE1_2 ;
LD EA,#XXOO ; DISPLAY " oo"
JPS FAT_CASE1_C ;
FAT_CASE1_2: ;
CPSE A,#03 ;
JPS FAT_CASE1_4 ;
LD EA,#XXXO ; DISPLAY " o"
JPS FAT_CASE1_C ;
FAT_CASE1_4: ;
CPSE A,#04H ;
JPS FAT_CASE1_5 ;
LD EA,#XXXX ;
FAT_CASE1_C: ;
CALL TIP_DISP ;
JPS LD_FAT_DLY1 ; RESET THE INTERVAL OF DISPLAY "OOOO" "OOO" "OO" "O"
FAT_CASE1_5: ;
CALL CALCUL_RES ; WHEN DISPLAY "OOOO" OVER, CALCULATE BODY RESISTANCE
CALL CALCULATE_FAT ; CALCULATE THE FAT_RATE...
CALL CAL_WATER_RATE ; CALCUCATE THE WATER_RATE
LD A,#(16-3) ;
LD DIS_FAT_CNT,A ; SET THE CNT TO DISPLAY WEIGHT AND FAT RATE BY TURNS.
BITR FAT_TEST_EN ;
INCS FAT_STATE ; FAT_STATE++
JPS DISP_HEIGHT ;
;---------------------- ;
FAT_CASE1_6: ;
LD EA,#MD_LINE ; DISPLAY "----"
CALL TIP_DISP ;
LD EA,#00H ;
LD FAT_DLY+0,EA ;
LD A,#(16-3) ;
LD FAT_DLY+2,A ;
LD A,#06H ;
LD FAT_STATE,A ;
RET ;
;**************************************;
;DISPLAY PAGE1, WEIGHT AND HEIGHT ;
FAT_CASE2: ;
CALL DISP_WEIGHT_HEIGHT ;
CALL LD_FAT_DLY2 ;
INCS FAT_STATE ; FAT_STATE ++
RET ;
;**************************************;
FAT_CASE3: ;
INCS FAT_DLY+0 ;
RET ;
INCS FAT_DLY+1 ;
RET ;
INCS FAT_DLY+2 ;
RET ;
INCS FAT_STATE ; FAT_STATE ++
RET ;
;**************************************;
; DISPLAY FAT AND WATER RATE ;
FAT_CASE4: ;
CALL DISP_WATER_FAT_RATE ;
CALL LD_FAT_DLY2 ;
INCS FAT_STATE ; FAT_STATE ++
RET ;
;**************************************;
;**************************************;
FAT_CASE5: ;
INCS FAT_DLY+0 ;
RET ;
INCS FAT_DLY+1 ;
RET ;
INCS FAT_DLY+2 ;
RET ;
INCS DIS_FAT_CNT ; DIS_FAT_CNT FULL ?
JPS FAT_CASE5_1 ; NO.
JPS TURN_OFF_PWR ; YES.TURN OFF PWR
FAT_CASE5_1: ; |
LD A,#02H ; |
LD FAT_STATE,A ; NO. GO ON DISPLAY WEIGHT ,AGE, WATER_FAT_RATE BY TURN.
RET ;
;**************************************;
FAT_CASE6: ;
BTST MAN_ON_SCALE ; MAN ON SCALE ?
JPS RET_NORMAL_SCALE ; NO.
CALL CHK_HUMAN ; YES
BTST C ; & TOUCH IS OK ?
JPS FAT_CASE6_1 ; YES.
INCS FAT_DLY+0 ;
RET ;
INCS FAT_DLY+1 ;
RET ;
INCS FAT_DLY+2 ; NO.
RET ;
SMB 15 ;
BITR FAT_CONTROL ;
BITR TOE0 ;
SMB 0 ;
JPS TURN_OFF_PWR ; WHEN TIME IS OUT AND TOUCH IS NOT OK, TURN OFF PWR
FAT_CASE6_1: ;
LD A,#0 ; IF TOUCH IS OK, DISPLAY "OOOO".."O" AGAIN.
LD FAT_STATE,A ; TEST FAT ONCE MORE
RET ;
;**************************************;
INIT_FAT_TEST: ;
BITR DP2_EN ; DISABLE DP2 MODULE
BITR KEYSCAN_EN ; DISABLE KB MODULE
BITR SET_EN ; DISABLE SET MODULE
BITS FAT_MODULE_EN ; START FAT TEST MODULE
LD A,#FAT_MODE_CON ;
LD RUN_MODE_REG,A ;
LD A,#0 ;
LD FAT_STATE,A ;
SMB 15 ;
BITS FAT_CONTROL ;
BITR P2.0 ;
BITS TOE0 ;
SMB 0 ;
;------------------------ ;
;WEIGHT <= WEIGHT/10 ;
LD2B BCC_BUF,WEIGHT ;
LD EA,#10 ;
BTST KG_FLAG ; UNIT IS KG ?
LD EA,#22 ; NO.
LD ACC_BUF,EA ; YES.
LD EA,#00 ;
LD BCC_BUF+4,EA ;
LD BCC_BUF+6,EA ;
LD ACC_BUF+2,EA ;
CALL CW_DIV ;
LD2B WEIGHT,CCC_BUF ; THIS VALUE USE FOR CALAULATE FAT ...
RET ;
;**************************************;
;**************************************;
;IF SEX IS FEMEALE,BODY_RES = 550 ;
;ELSE: ;
;IF(WEIGHT / HEIGHT) < 3 BODY_RES = 600;
; ELSE BODY_RES= 500. ;
CALCUL_RES: ;
BTST SEX ; SEX = 1 ? (MALE)
JPS RES_500 ; NO.
;--------------------- ;
;MALE BODY_RES = 650 ;
RES_650:SMB 1 ;
LD EA,#0A8H ; YES. BODY_RES: 680
LD BODY_RES,EA ;
LD EA,#02H ;
LD BODY_RES+2,EA ;
SMB 0 ;
RET ;
;--------------------- ;
;FEMALE BODY_RES = 500 ;
RES_500:SMB 1 ;
LD EA,#0F4H ; BODY_RES: 500
LD BODY_RES,EA ;
LD EA,#01H ;
LD BODY_RES+2,EA ;
SMB 0 ;
RET ;
;**************************************;
;**************************************;
LD_FAT_DLY2: ;
LD A,#(16-4) ; DELAY 2S
LD FAT_DLY+2,A ;
LD_FAT_DLY1: ;
LD EA,#(265-256) ;
LD FAT_DLY+0,EA ; DELAY 1S
RET ;
;**************************************;
;**************************************;
RET_NORMAL_SCALE: ;
BITR FAT_MODULE_EN ;
BITS DP2_EN ;
BITS CAL_WT_EN ; ENABLE CALCULATE WEIGHT
LD A,#SCALE_MODE_CON ;
LD RUN_MODE_REG,A ;
LD A,#0 ;
LD DP_STATE,A ;
CALL DISP_8888 ;
CALL INIT_KB ;
CALL LD_AUTOFF_CNT ;
BTST FAT_TEST_EN ;
RET ;
CALL DISP_AGE ;
CALL DISP_HEIGHT ;
JP SEX_ICON_ON ;
;**************************************;
;**************************************;
;C = 1: NO MAN ON SCALE ;
;C = 0: MAN ON SCALE ;
CHK_HUMAN: ;
BITR EMB ;
LDB C,FAT_IN ;
RET ;
;**************************************;
;**************************************;
;DISPLAY ERR1,2,3,4,5.... NO BANK RESTRICT
DISP_ERR1: ;
LD EA,#ERR1 ;
JPS DISP_ERR_COM ;
DISP_ERR2: ;
LD EA,#ERR2 ;
JPS DISP_ERR_COM ;
DISP_ERR3: ;
LD EA,#ERR3 ;
JPS DISP_ERR_COM ;
DISP_ERR4: ;
LD EA,#ERR4 ;
JPS DISP_ERR_COM ;
DISP_ERR5: ;
LD EA,#ERR5 ;
JPS DISP_ERR_COM ;
DISP_ERR: ;
LD EA,#ERR ;
DISP_ERR_COM: ;
LD WX,EA ;
LD A,#0 ;
CALL DISP_8888 ;
LD EA,WX ;
CALL TIP_DISP ;
JPS DLY5S_OFF_PWR ;
;**************************************;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -