avr: added routine Util_WaitForPinState1ms
This commit is contained in:
54
avr/common/utils_wait_pin.asm
Normal file
54
avr/common/utils_wait_pin.asm
Normal file
@@ -0,0 +1,54 @@
|
||||
; ***************************************************************************
|
||||
; copyright : (C) 2023 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. *
|
||||
; ***************************************************************************
|
||||
|
||||
|
||||
; ***************************************************************************
|
||||
; code
|
||||
|
||||
|
||||
.cseg
|
||||
|
||||
|
||||
|
||||
; ---------------------------------------------------------------------------
|
||||
; Util_WaitForPinState1ms
|
||||
;
|
||||
; Waits up to 1ms for status change on a pin
|
||||
;
|
||||
; @param R16 state to wait for (00 for low, 0xff for high)
|
||||
; @param R17 io address of the port containing the pin
|
||||
; @param R18 pin mask
|
||||
; @return CFLAG set if state reached, cleared otherwise
|
||||
; REGS: R19, R22
|
||||
|
||||
Util_WaitForPinState1ms:
|
||||
push xl
|
||||
push xh
|
||||
clr xh
|
||||
mov xl, r17
|
||||
ldi r19, 200
|
||||
com2WaitForDataState1ms_loop:
|
||||
ld r22, X
|
||||
eor r22, r16
|
||||
andi r22, r18
|
||||
breq com2WaitForDataState1ms_stateReached
|
||||
Utils_WaitNanoSecs 5000, 0, r22 ; wait for 5us
|
||||
dec r19
|
||||
brne com2WaitForDataState1ms_loop
|
||||
clc
|
||||
rjmp com2WaitForDataState1ms_ret
|
||||
com2WaitForDataState1ms_stateReached:
|
||||
sec
|
||||
com2WaitForDataState1ms_ret:
|
||||
pop xh
|
||||
pop xl
|
||||
ret
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user