Files
aqhomecontrol/avr/modules/f_keepup/main.asm
2025-04-21 00:32:30 +02:00

108 lines
2.3 KiB
NASM

; ***************************************************************************
; copyright : (C) 2025 by Martin Preuss
; email : martin@libchipcard.de
;
; ***************************************************************************
; * This file is part of the project "AqHome". *
; * Please see toplevel file COPYING of that project for license details. *
; ***************************************************************************
; ***************************************************************************
; defines
.equ FILTER_KEEPUP_OFFS_TIMER = 0
.equ FILTER_KEEPUP_OFFS_RESTARTVALUE = 1
.equ FILTER_KEEPUP_DATA_SIZE = 2
; ***************************************************************************
; code
.cseg
; ---------------------------------------------------------------------------
; @routine FilterKeepUp_Init @global
;
; @param Y pointer to filter data
; @clobbers r16
FilterKeepUp_Init:
clr r16
std Y+FILTER_KEEPUP_OFFS_TIMER, r16
ret
; @end
; ---------------------------------------------------------------------------
; @routine FilterKeepUp_Fini @global
;
; @param Y pointer to filter data
FilterKeepUp_Fini:
; nothing to do
ret
; @end
; ---------------------------------------------------------------------------
; @routine FilterKeepUp_GetValue @global
;
; @param Y pointer to filter data
; @return R16 value
; @clobbers none
FilterKeepUp_GetValue:
ldd r16, Y+FILTER_KEEPUP_OFFS_TIMER
tst r16
breq FilterKeepUp_GetValue_end
ldi r16, 1
FilterKeepUp_GetValue_end:
ret
; @end
; ---------------------------------------------------------------------------
; @routine FilterKeepUp_SetValue @global
;
; @param Y pointer to filter data
; @param R16 value
; @clobbers r17
FilterKeepUp_SetValue:
tst r16
breq FilterKeepUp_SetValue_end
ldd r17, Y+FILTER_KEEPUP_OFFS_RESTARTVALUE
std Y+FILTER_KEEPUP_OFFS_TIMER, r17
FilterKeepUp_SetValue_end:
ret
; @end
; ---------------------------------------------------------------------------
; @routine FilterKeepUp_Every100ms @global
;
; @param Y pointer to filter data
; @clobbers r16
FilterKeepUp_Every100ms:
ldd r16, Y+FILTER_KEEPUP_OFFS_TIMER
tst r16
breq FilterKeepUp_Every100ms_end
dec r16
std Y+FILTER_KEEPUP_OFFS_TIMER, r16
FilterKeepUp_Every100ms_end:
ret
; @end