📄 cm-941.asm
字号:
LDS TempR0, 1
SUB SData3
JNZ Exit_KeyProcess
LDA SData2
JNZ Exit_KeyProcess
LDS SData1, 0
LDS SData2, 0
LDS SData3, 0
LDS SData4, 1
RTS
;--------------
H_inchOverFlow:
INC* SData1
DAA* SData1
JNC $+4
INC* SData2
DAA* SData2
RTS
LDS TempR0, 2
SUB SData1
LDS TempR0, 1
SBC SData2
JNZ CheckH_inchOverFlow
LDS SData1, 0
LDS SData2, 0
INC* SData3
;-------------------------------6'10''
CheckH_inchOverFlow
LDS TempR0, 1
EOR SData2
JNZ Exit_KeyProcess
LDS TempR0, 6
EOR SData3
JNZ Exit_KeyProcess
LDS SData3, 3
LDS SData2, 0
LDS SData1, 3
RTS
;;;;;;;;;;;;;;;;;;;;;;increase weight
Fat_A_Key1:
ANDI FatModeFlg, 2
JNZ W_lbOverFlow
INC* SData1
DAA* SData1
JNZ CheckWOverFlow
INC* SData2
DAA* SData2
JNZ Exit_KeyProcess
INC* SData3
DAA* SData3
JNZ Exit_KeyProcess
INC* SData4
RTS
CheckWOverFlow:
LDA SData4
JZ Exit_KeyProcess
LDS TempR0, 5
SUB SData3
JNZ Exit_KeyProcess
LDA SData2
JNZ Exit_KeyProcess
LDS SData1, 0
LDS SData2, 0
LDS SData3, 1
LDS SData4, 0
RTS
;--------------------------------
W_lbOverFlow:
LDS TempR0, 2
ADD* SData1
DAA* SData1
JNC CheckW_lbOverFlow
INC* SData2
DAA* SData2
JNC CheckW_lbOverFlow
INC* SData3
DAA* SData3
JNC CheckW_lbOverFlow
INC* SData4
DAA* SData4
CheckW_lbOverFlow:
LDS TempR0, 7
SUB SData1
LDS TempR0, 0
SBC SData2
LDS TempR0, 3
SBC SData3
LDS TempR0, 3
SBC SData4
JNC Exit_KeyProcess
LDS SData1, 0
LDS SData2, 2
LDS SData3, 2
LDS SData4, 0
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Fat_A_Key_1:
LDS TempR0, 2
EOR* SData5
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;increase timer Data
Timer_A_Key:
LDA Mode1
JZ Timer_A_Key0
SUBI Mode1, 1
JZ Timer_A_Key1
RTS
Timer_A_Key1:
LDS TempR0, 0
SUB SData1
LDS TempR0, 0
SBC SData2
LDS TempR0, 0
SBC SData3
LDS TempR0, 6
SBC SData4
JC Exit_KeyProcess
INC* SData1
DAA* SData1
JNC Exit_KeyProcess
INC* SData2
LDS TempR0, 6
SUB SData2
JNC Exit_KeyProcess
LDS SData2, 0
INC* SData3
DAA* SData3
JNC $+3
INC* SData4
DAA* SData4
RTS
Timer_A_Key0:
LDA SData1
OR SData2
JNZ Timer_A_Key0_1
LDS TempR0, 0
SUB SData3
LDS TempR0, 6
SBC SData4
JC Exit_KeyProcess
JMP Timer_A_Key0_1_1
Timer_A_Key0_1:
LDS TempR0, 9
SUB SData3
LDS TempR0, 5
SBC SData4
JC Exit_KeyProcess
Timer_A_Key0_1_1:
INC* SData3
DAA* SData3
JNC $+3
INC* SData4
DAA* SData4
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;inscrease Alm data
Alarm_A_Key:
LDA Mode1
JZ Alarm_A_Key0
SUBI Mode1, 1
JZ IncHr
JMP IncMin
Alarm_A_Key0:
EORI* AlmFlg, 1
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;inscrease clock data
SetClock_A_Key:
ANDI* FlgSet_12Hr,1101B
LDA Mode1
JZ IncHr
IncMin:
LDS TempR1, 0AH
LDS TempR2, 1
LDS TempR0, 0
MVU TempR0
MVH TempR2
MVL TempR1
CALL AddSecMin
RTS
IncHr:
LDS TempR1, 0CH
LDS TempR2, 1
LDS TempR0, 0
MVU TempR0
MVH TempR2
MVL TempR1
CALL AddHour
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;enter alm Mode
Clock_A_Key:
LDS MainMode, 2
LDS Mode1, 0
JMP SetKeySound
;;;;;;;;;;;;;;;
T_Key:
LDA R_Error
JNZ Exit_KeyProcess
LDA MainMode
JZ Clock_T_Key
SUBI MainMode, 1
JZ SetClock_T_Key
SUBI MainMode, 2
JZ Alarm_T_Key
SUBI MainMode, 3
JZ Timer_T_Key
Fat_T_Key:
ANDI FatModeFlg, 1
JNZ Fat_T_Key_1 ;if at Set Unit Mode ?yes ,skip to Fat_T_Key_1
SUBI Mode1, 1
JZ Fat_T_Key1
SUBI Mode1, 2
JZ Fat_T_Key2
SUBI Mode1, 3
JZ Fat_T_Key3
SUBI Mode1, 4
JZ Fat_T_Key4
RTS
;-----------------------------convert gender
Fat_T_Key4:
LDS TempR0, 8
EOR* SData1
RTS
;-----------------------------decrease age value
Fat_T_Key3:
DEC* SData1
DAS* SData1
JC Exit_KeyProcess
DEC* SData2
DAS* SData2
CheckAgeUnderFlow:
LDA SData2
JNZ Exit_KeyProcess
LDS SData1, 0
LDS SData2, 8
RTS
;-----------------------------descrease height value
Fat_T_Key2:
ANDI FatModeFlg, 2
JNZ H_inchUnderFlow
LDS TempR0, 5
SUB* SData1
DAS* SData1
JC Exit_KeyProcess
DEC* SData2
DAS* SData2
JC Exit_KeyProcess
DEC* SData3
DAS* SData3
JC Exit_KeyProcess
DEC* SData4
;------------------------------------100cm
CheckHUnderFlow:
LDA SData4
JNZ Exit_KeyProcess
LDS SData1, 0
LDS SData2, 0
LDS SData3, 1
LDS SData4, 2
RTS
;;;;;;;;;;;;;;;;;;;;;;;
H_inchUnderFlow:
DEC* SData1
DAS* SData1
JC CheckH_inchUnderFlow
DEC* SData2
DAS* SData2
JC Exit_KeyProcess
DEC* SData3
LDS SData1, 1
LDS SData2, 1
RTS
;------------------------------------3'03''
CheckH_inchUnderFlow:
LDS TempR0, 3
SUB SData1
LDS TempR0, 0
SBC SData2
LDS TempR0, 3
SBC SData3
JC Exit_KeyProcess
LDS SData1, 0
LDS SData2, 1
LDS SData3, 6
RTS
;------------------------descrease weight value
Fat_T_Key1:
ANDI FatModeFlg, 2
JNZ W_lbUnderFlow ;lb? yes,skip
DEC* SData1
DAS* SData1
JC Exit_KeyProcess
DEC* SData2
DAS* SData2
JC Exit_KeyProcess
DEC* SData3
DAS* SData3
JC CheckWUnderFlow
DEC* SData4
RTS
;--------------------------------10Kg
CheckWUnderFlow:
LDA SData4
JNZ Exit_KeyProcess
LDA SData3
JNZ Exit_KeyProcess
LDS TempR0, 9
SUB SData2
JNZ Exit_KeyProcess
LDS SData1, 0
LDS SData2, 0
LDS SData3, 5
LDS SData4, 1
RTS
;;;;;;;;;;;;;;;;;;;;;;;;
W_lbUnderFlow:
LDS TempR0, 2
SUB* SData1
DAS* SData1
JC Exit_KeyProcess
DEC* SData2
DAS* SData2
JC CheckW_lbUnderFlow
DEC* SData3
DAS* SData3
JC Exit_KeyProcess
DEC* SData4
DAS* SData4
RTS
;--------------------------------22.0lb
CheckW_lbUnderFlow:
LDA SData4
JNZ Exit_KeyProcess
LDS TempR0, 2
EOR SData3
JNZ Exit_KeyProcess
LDS TempR0, 1
EOR SData2
JNZ Exit_KeyProcess
LDS SData1, 6
LDS SData2, 0
LDS SData3, 3
LDS SData4, 3
RTS
;---------------------------------
Fat_T_Key_1:
LDS TempR0, 2
EOR* SData5
RTS
;-----------------------------------descrease timer data
Timer_T_Key:
LDA Mode1
JZ Timer_T_Key0
SUBI Mode1, 1
JZ Timer_T_Key1
RTS
Timer_T_Key1:
DEC* SData1
DAS* SData1
JC Exit_KeyProcess
DEC* SData2
DAS* SData2
JC Exit_KeyProcess
LDS SData2, 5
Timer_T_Key0:
DEC* SData3
DAS* SData3
JC Exit_KeyProcess
DEC* SData4
DAS* SData4
JC Exit_KeyProcess
LDA Mode1
JZ Timer_T_Key0_1
LDS SData1, 0
LDS SData2, 0
Timer_T_Key0_1:
LDS SData3, 0
LDS SData4, 0
RTS
;------------------------------------descrease alm data
Alarm_T_Key:
LDA Mode1
JZ Alarm_T_Key0
SUBI Mode1, 1
JZ DecHr
JMP DecMin
Alarm_T_Key0:
EORI* AlmFlg, 1
RTS
;-------------------------------------descrease clock data
SetClock_T_Key:
ANDI* FlgSet_12Hr,1101B
LDA Mode1
JZ DecHr
DecMin:
LDS TempR1, 0AH
LDS TempR2, 1
LDS TempR0, 0
MVU TempR0
MVH TempR2
MVL TempR1
CALL SubSecMin
RTS
DecHr:
LDS TempR1, 0CH
LDS TempR2, 1
LDS TempR0, 0
MVU TempR0
MVH TempR2
MVL TempR1
CALL SubHour
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;enter Timer Mode
Clock_T_Key:
LDS MainMode, 3
LDS Mode1, 0
;----------------------------Timer copyto SData
LDA TSec_L
STA SData1
LDA TSec_H
STA SData2
LDA TMin_L
STA SData3
LDA TMin_H
STA SData4
JMP SetKeySound
;;;;;;;;;;;;;;;;;;
F_Key:
LDA MainMode
JZ Clock_F_Key
SUBI MainMode, 1
JZ SetClock_F_Key
SUBI MainMode, 2
JZ Alarm_F_Key
SUBI MainMode, 3
JZ Timer_F_Key
;---------------------------------F Key in FatMode
Fat_F_Key:
ANDI FatModeFlg, 1
JNZ Fat_F_Key_1
LDS R_Error, 0
LDA M_FatFlg
JZ Fat_F1_Key
LDS M_FatFlg, 0
LDS PortA, 2
OPA PortA
RF 4
Fat_F1_Key:
LDA Mode1
JZ Fat_F_Key0
SUBI Mode1, 1
JZ Fat_F_Key1
SUBI Mode1, 2
JZ Fat_F_Key2
SUBI Mode1, 3
JZ Fat_F_Key3
SUBI Mode1, 4
JZ Fat_F_Key4
JMP Fat_F_Key5
;------------------------------------Mode4--Mode5 & SData copyto gender & calc BMI
Fat_F_Key4:
ANDI* FatModeFlg, 1011B
LDS Mode1, 5
CALL F_BMI
ORI* OptionR, 8
LDS TempR0, 8
AND SData1
JNZ SetKeySound
ANDI* OptionR, 7
JMP SetKeySound
;-------------------------------------Mode3--Mode4 & SData copyto Age & Gender copyto SData
Fat_F_Key3:
LDS Mode1, 4
LDA SData1
STA Age1
LDA SData2
STA Age2
LDA OptionR
STA SData1
JMP SetKeySound
;-------------------------------------Mode2--Mode3 & SData copyto Height & Age copyto SData
Fat_F_Key2:
LDS Mode1, 3
ANDI FatModeFlg, 2
JZ $+2
CALL Inch_Cm
LDA SData1
STA Height1
LDA SData2
STA Height2
LDA SData3
STA Height3
LDA SData4
STA Height4
LDA Age1
STA SData1
LDA Age2
STA SData2
JMP SetKeySound
;--------------------------------------Mode1--Mode2 & SData copyto Weight & Height copyto SData
Fat_F_Key1:
LDS Mode1, 2
ANDI FatModeFlg, 2
JZ $+2
CALL Lb_Kg
LDA SData1
STA Weight1
LDA SData2
STA Weight2
LDA SData3
STA Weight3
LDA SData4
STA Weight4
LDA Height1
STA SData1
LDA Height2
STA SData2
LDA Height3
STA SData3
LDA Height4
STA SData4
ANDI FatModeFlg, 2
JZ $+2
CALL Cm_Inch
JMP SetKeySound
;---------------------------------------Mode0--Mode1 &Weight copyto SData
Fat_F_Key0:
LDS Mode1, 1
LDA Weight1
STA SData1
LDA Weight2
STA SData2
LDA Weight3
STA SData3
LDA Weight4
STA SData4
ANDI FatModeFlg, 2
JZ $+2
CALL Kg_Lb
JMP SetKeySound
;----------------------------------------Exit Set FatUnit Mode
Fat_F_Key_1:
ANDI* FatModeFlg, 1110B ;no at set FatUnit Mode
LDS TempR0, 0010B
AND* SData5
ANDI FatModeFlg, 0010B
EOR SData5
JZ SetKeySound
ANDI* FatModeFlg, 1101B
LDS TempR0, 2
AND SData5
JZ $+2
ORI* FatModeFlg, 2
ANDI FatModeFlg, 2
JNZ Fat_F_Key_1_1
SUBI Mode1, 1
JNZ $+3
CALL Lb_Kg
JMP SetKeySound
SUBI Mode1, 2
JNZ $+2
CALL Inch_Cm
JMP SetKeySound
Fat_F_Key_1_1:
SUBI Mode1, 1
JNZ $+3
CALL Kg_Lb
JMP SetKeySound
SUBI Mode1, 2
JNZ $+2
CALL Cm_Inch
JMP SetKeySound
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Timer_F_Key:
LDS Keyms, 5
LDA Mode1
JZ Timer_F_Key0
SUBI Mode1, 1
JZ Timer_F_Key1
RTS
Timer_F_Key1:
LDS MainMode, 0
LDA SData1
OR SData2
OR SData3
OR SData4
JZ Timer_F_Key1_1
ORI* OptionR, 4 ;Timer running
LDS MainMode, 3
LDS Mode1, 2 ;Enable Timer
LDS T_2Hz, 1
ORI* FlgSet_12Hr,4 ;SoundKey
LDS KeySound, 6
ALM 80H
Timer_F_Key1_1:
LDA SData1
STA TSec_L
LDA SData2
STA TSec_H
LDA SData3
STA TMin_L
LDA SData4
STA TMin_H
JMP ActiveTMR2
;----------------------------------change to adjust TimerMin Mode at Timer Mode
Timer_F_Key0:
LDS Mode1, 1
JMP SetKeySound
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;F Key at Alarm Mode
Alarm_F_Key:
LDS Keyms, 5
LDA Mode1
JZ Alarm_F_Key0
SUBI Mode1, 1
JZ Alarm_F_Key1
;--------------------------------return to Clock Mode & SData copyto ALM Registers
;Alarm_F_Key2:
LDS MainMode, 0
LDA SData1
STA AlmMin_L
LDA SData2
STA AlmMin_H
LDA SData3
STA AlmHr_L
LDA SData4
STA AlmHr_H
JMP SetKeySound
;----------------------------------change to adjust ALMMin Mode at ALM Mode
Alarm_F_Key1:
LDS Mode1, 2
JMP SetKeySound
;-----------------------------------set alm on /off
Alarm_F_Key0:
LDS MainMode, 0
ANDI AlmFlg, 1
JZ SetKeySound ;if alm off ,exit to Mainmode0
LDS MainMode, 2
LDS Mode1, 1
LDA AlmMin_L
STA SData1
LDA AlmMin_H
STA SData2
LDA AlmHr_L
STA SData3
LDA AlmHr_H
STA SData4
JMP SetKeySound
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;F Key at SetClock Mode
SetClock_F_Key:
LDS Keyms, 5
LDA Mode1
JZ SetClock_F_Key0
;----------------------------------return to Clock Mode & SData copyto clock Registers
LDS MainMode, 0
LDA SData1
STA Min_L
LDA SData2
STA Min_H
LDA SData3
STA Hr_L
LDA SData4
STA Hr_H
JMP SetKeySound
;------------------------------change to adjust clockMin Mode at setclock Mode
SetClock_F_Key0:
LDS Mode1, 1
JMP SetKeySound
;------------------------------enter FatMode
Clock_F_Key:
LDS MainMode, 4
ANDI* FatModeFlg, 1110B
;Mode5-Mode0/Mode1
Fat_F_Key5:
LDS Mode1, 0
LDA P_FAT1
OR P_FAT2
OR P_FAT3
JNZ SetKeySound ;Have Fat test value?
LDS Mode1, 1
LDA Weight1
STA SData1
LDA Weight2
STA SData2
LDA Weight3
STA SData3
LDA Weight4
STA SData4
ANDI FatModeFlg, 2
JZ $+2
CALL Kg_Lb
JMP SetKeySound
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;enter SetUnit Mode
A_T_Key:
SUBI MainMode, 4
JNZ Exit_KeyProcess
ANDI FatModeFlg, 1
JNZ Exit_KeyProcess
;MainMode=4 & no SetUnit Mode
ANDI KeyDoneFlg, 8
JNZ Exit_KeyProcess ;hold key
ORI* KeyDoneFlg, 8
ORI* FatModeFlg, 1
LDA FatModeFlg
STA SData5
RTS
;;;;;;;;;;;;;;;;;;;;;;;;;;;Set Fat default Parameter
T_F_Key:
SUBI MainMode, 4
JNZ Exit_KeyProcess
ANDI FatModeFlg, 1
JNZ Exit_KeyProcess
LDA M_FatFlg
JNZ Exit_KeyProcess
;MainMode=4 & Mode1=0 & no SetUnit Mode
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -