; *************************************************************************** ; copyright : (C) 2026 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. * ; *************************************************************************** ; *************************************************************************** ; data .dseg beeperSimpleTimer: .byte 1 beeperSimpleOnTime: .byte 1 beeperSimpleOffTime: .byte 1 ; *************************************************************************** ; code .cseg BEEPER_SIMPLE_BEGIN: ; --------------------------------------------------------------------------- ; BeeperSimple_Init ; ; @return CFLAG set if okay, clear on error ; @clobbers r16 BeeperSimple_Init: sbi BEEPER_SIMPLE_DDR, BEEPER_SIMPLE_PINNUM ; out cbi BEEPER_SIMPLE_PORT, BEEPER_SIMPLE_PINNUM ; off clr r16 sts beeperSimpleTimer, r16 sts beeperSimpleOnTime, r16 sts beeperSimpleOffTime, r16 sec ret ; --------------------------------------------------------------------------- ; @routine BeeperSimple_Every100ms @global ; ; @clobbers r16 BeeperSimple_Every100ms: lds r16, beeperSimpleTimer tst r16 breq BeeperSimple_Every100ms_ret dec r16 brne BeeperSimple_Every100ms_setTimer sbis BEEPER_SIMPLE_PORT, BEEPER_SIMPLE_PINNUM ; skip next op if beeper is on rjmp BeeperSimple_Tick_isOff ; is on cbi BEEPER_SIMPLE_PORT, BEEPER_SIMPLE_PINNUM ; off lds r16, beeperSimpleOffTime rjmp BeeperSimple_Every100ms_setTimer BeeperSimple_Tick_isOff: sbi BEEPER_SIMPLE_PORT, BEEPER_SIMPLE_PINNUM ; on lds r16, beeperSimpleOnTime BeeperSimple_Every100ms_setTimer: sts beeperSimpleTimer, r16 BeeperSimple_Every100ms_ret: ret ; @end ; --------------------------------------------------------------------------- ; @routine BeeperSimple_SetTiming @global ; ; Set blinking timing for LED. Switch LED on. ; @param r18 ontime (in 1/10s) ; @param r19 offtime (in 1/10s) ; @clobbers none ; BeeperSimple_SetTiming: cbi BEEPER_SIMPLE_PORT, BEEPER_SIMPLE_PINNUM ; off sts beeperSimpleOnTime, r18 sts beeperSimpleTimer, r18 sts beeperSimpleOffTime, r19 tst r18 breq BeeperSimple_SetTiming_ret sbi BEEPER_SIMPLE_PORT, BEEPER_SIMPLE_PINNUM ; on BeeperSimple_SetTiming_ret: ret ; @end BEEPER_SIMPLE_END: .equ MODULE_SIZE_BEEPER_SIMPLE = BEEPER_SIMPLE_END-BEEPER_SIMPLE_BEGIN