📄 power_oper.asm
字号:
INCLUDE REG_DEF.INC
PUBLIC POWER_CTRL
EXTERN START :NEAR
EXTERN DELAY_120MS :NEAR
EXTERN INIT_RF :NEAR
EXTERN SEN_ENTRY_SLEEP_MODE:NEAR
EXTERN SEN_INIT :NEAR
EXTERN SCAN_KEY :NEAR
EXTERN SEN_RESUME :NEAR
POWER_CTRL_CODE .SECTION 'CODE'
POWER_CTRL:
INC XYZ_ZERO_CNT
MOV A, 100 ; 8MS*100=800MS
XOR A, XYZ_ZERO_CNT
SZ ACC
JMP NOT_100_TIMES
SET XYZ_ZERO_FLAG
NOT_100_TIMES:
SZ MOVEMENT
JMP MOVE_OCCURED
INC MS_CNT
MOV A, 125 ; 8MS * 125 = 1000MS = 1 SEC
XOR A, MS_CNT
SZ ACC
JMP NOT_1S_YET
CLR MS_CNT
INC SEC_CNT
MOV A, 60
XOR A, SEC_CNT
SZ ACC
JMP NOT_1M_YET
CLR SEC_CNT
SET POWER_MODE.2 ; 1 MINUTE
INC MIN_CNT
MOV A, 3
XOR A, MIN_CNT
SZ ACC
JMP NOT_1S_YET
;========================================================================
;3 MIN WITHOUT ANY MOVEMENT
;ENTRY POWER SAVING LEVEL 1
;SHUT DOWN RF
;SHUT DOWN ARF2496
CLR TRRDY
CLR PSB
SET POWER_MODE.0 ; 5 MINUTEs
;SHUT DOWN MCU
CLR TIMER_ENABLE
HALT
SET RESUME_FROM_HALT
RET
MOVE_OCCURED:
CLR MS_CNT
CLR SEC_CNT
CLR MIN_CNT
CLR XYZ_ZERO_CNT
CLR XYZ_ZERO_FLAG
SNZ POWER_MODE.0
JMP RESUME_OK
SET PSB ; MCU TO STANDBY MODE
CALL DELAY_4MS
RESUME_OK:
CLR POWER_MODE
NOT_1S_YET:
NOT_1M_YET:
NOT_15M_YET:
CLR MOVEMENT
RET
DELAY_4MS:
MOV A, 0FFH
MOV MS_CNT, A
D4MSLOOP:
DEC MS_CNT
SZ MS_CNT
JMP D4MSLOOP
CLR MS_CNT
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -