📄 main.asm
字号:
; PROJECT: FATSCALE ;
; RANGE: (0 - 150KG)/d = 0.1kg ;
; CPU: KS57C2308 XTAL: 4.19M ;
;**************************************;
;**************************************;
; ALARM REMARK: ;
; 1. ERR5: SENSOR ALARM ;
; 2. ERR4: 24C01 ALARM ;
; 3. ERR3: KB ALARM ;
; 4. ERR2: CAL ALARM ;
; 5. ERR1: USER'S INFO ERR ;
; 6. ERR: OVERLOAD ALARM ;
; 7. LO : BATTERY ALARM ;
;---------------------- ;
;JP REMARK: ;
;JP0: OPEN: NORMAL / SHORT: ADC ADJUST ;
;JP1: OPEN: WITH MEM/SHORT: WITHOUT MEM;
;**************************************;
.INCLUDE "57C2316.REG" ;
.INCLUDE "DEFINE.ASM" ;
;**************************************;
ORG 000H ;
VENT0 1,0,RESET ; RESET
VENT1 0,1,BT_ISR ; USE FOR SCALE COUNT
VENT2 0,1,INT0_ISR ; USE FOR AD CONVERT
VENT3 0,1,INT1_ISR ; // NO USE
VENT4 0,1,INTS_ISR ; // NO USE
VENT5 0,1,TC0_ISR ; USE FOR SYSTEM CLICK
;**************************************;
INTS_ISR: ;
IRET ;
;**************************************;
INT1_ISR: ;
IRET ;
;**************************************;
;INPUT: [POST_INT_FLAG] ;
; [G_PIN] (USE FOR START ADC) ;
;OUTPUT: [SCALE_CNT] ;
; [CHK_BTCNT_FLAG] ;
; [ADC_OK] ;
;------------------------ ;
INT0_ISR: ;
PUSH SB ;
SRB 1 ;
BTSF POST_INT_FLAG ; IS POSITIVE INTEGRAL ?
JPS INT0_ISR_1 ; YES.
LD EA,BCNT ; ----> GET ADC VALUE ......
BITR IEB ;
LD SCALE_CNT+0,EA ;
LD EA,BT_COUNT ; ----> GET ADC VALUE ......
BTST IRQB ; IRQB = 1 ?
JPS INT0_ISR_0 ; NO.
BITR IRQB ; YES. CLR THIS FLAG
BITS CHK_BTCNT_FLAG ; SET THIS FLAG FOR PROCESS ADC VALUE
LD WX,EA ;
INCS WX ;
LD EA,WX ;
INT0_ISR_0: ;
LD SCALE_CNT+2,EA ;
BITS IEB ;
BITS ADC_OK ; ADC OK
BITS BMOD.3 ; RESTART BT
BITS POST_INT_FLAG ; POST_INT_FLAG 0 ---> 1
BITS G_PIN ; AFTER READ COUNTS,G = H RESTART AD
JPS EXIT_INT0_ISR ;
;---------------------- ;
; POST_INT_FLAG = 1: DELAY 150MS BEGIN ;
;---------------------- ;
INT0_ISR_1: ;
LD EA,ADC_DLY_BUF ; RELOAD ADC DELAY TIMER
LD AD_DLY,EA ;
BITS BMOD.3 ; START BT
EXIT_INT0_ISR: ;
LD EA,#00 ;
LD CHK_ADC_CNT,EA ; USE FOR CHECK ADC
POP SB ;
IRET ;
;**************************************;
; POST_INT_FLAG = 1: POSITIVE INTEGRAL (SAMPLE)
; = 0: NEGATIVE INTEGRAL (SCALE)
BT_ISR: PUSH SB ;
SRB 2 ;
BTSF POST_INT_FLAG ; POSITIVE INTEGRAL ?
JPS BT_ISR_1 ; YES.
;------------------------ ;
;POST_INT_FLAG = 0 COUNTS++ ;
;------------------------ ;
INCS BT_COUNT+0 ; NO. BT_COUNT ++
JPS BT_ISR_0 ;
INCS BT_COUNT+1 ;
JPS BT_ISR_0 ;
BT_ISR_0: ;
JPS EXIT_BT_ISR ; EXIT
;----------------------- ;
; POST_INT_FLAG = 1 DELAY 150MS ;
;----------------------- ;
BT_ISR_1: ;
INCS AD_DLY+0 ; AD_DLY + +
JPS BT_ISR_11 ;
INCS AD_DLY+1 ; AD_DLY FULL ?
BT_ISR_11: ;
JPS EXIT_BT_ISR ; NO.
BITR POST_INT_FLAG ; YES. POST_INT_FLAG 1 --- > 0
LD EA,#00 ;
LD BT_COUNT,EA ; CLR BT_COUNT
BITR CHK_BTCNT_FLAG ; CLR THIS FLAG
BITR G_PIN ; G = L
BITS BMOD.3 ; BMOD.3 = 1 RESTART BT
EXIT_BT_ISR: ;
POP SB ;
IRET ;
;**************************************;
TC0_ISR:PUSH SB ;
BITS SYS_CLICK ; SYS_CLICK = 1
POP SB ;
IRET ;
;**************************************;
RESET: TURN_ON_PWR ; EMB = 1, ERB = 0
JPS SYS_INIT ; INITIAL HARDWARE
SYS_INIT_END: ;
JPS RAM_CLR ; CLEAR BANK0 & BANK1
RAM_CLR_END: ;
LD A,#1111B ;
CALL DISP_8888 ;
CALL GET_BENCHMARK ; GET BENCHMARK & UNIT
CALL SOFT_INIT ;
EI ; ENABLE INTERRUPT
;**************************************;
;MAIN PROGRAM
;**************************************;
MAIN: BTST SYS_CLICK ;
JPS MAIN ;
BITR SYS_CLICK ;
CALL VOL_DETECT ;
CALL KEYSCAN ;
CALL KEY_PROCESS ;
CALL USER_SET ;
CALL CALIBRATION ;
CALL DATA_PROCESS1 ;
CALL DATA_PROCESS2 ;
CALL FAT_TEST ;
JPS MAIN ;
;**************************************;
.INCLUDE "INITIAL.ASM" ;
.INCLUDE "KEYSCAN.ASM" ;
.INCLUDE "SET.ASM" ;
.INCLUDE "CAL.ASM" ;
.INCLUDE "DATA_PRO2.ASM" ;
.INCLUDE "DATA_PRO1.ASM" ;
.INCLUDE "VOLD.ASM" ;
.INCLUDE "24C01.ASM" ;
.INCLUDE "LCD.ASM" ;
.INCLUDE "FAT_TEST.ASM" ;
.INCLUDE "LIB.ASM" ;
.END ;
;**************************************;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -