avrx_recvmessage.s
来自「血凝仪检测系统,硬件电路部分由正弦波产生模块、前级放大与滤波模块、检测线圈、锁相」· S 代码 · 共 45 行
S
45 行
#include "avrx.inc"
/*
Copyright 1999-2001, Larry Barello
larry@barello.net
*/
_MODULE(avrx_recvmessage)
_EXTERN(_RemoveFirstObject)
_EXTERN(AvrXResetSemaphore)
_CODESECTION
/*+
; --------------------------------------------------
; pMessage AvrXRecvMessage(pMessageQueue)
;
; Removes the first item in a queue. Return Zero if empty.
;
; PASSED: R25, R24 = Queue head
; RETURNS: R25, R24 = Object = 0 if list empty
; USES: Z, X, Flags, R23:R22
; CALLS:
; ASSUMES: Null terminated list
; NOTES: If queue empty, then reset queue semaphore
;
;
-*/
_FUNCTION(AvrXRecvMessage)
AvrXRecvMessage:
mov Zl, p1l
mov Zh, p1h
BeginCritical
rcall _RemoveFirstObject
subi p1l, lo8(-2)
sbci p1h, hi8(-2)
rcall AvrXResetSemaphore ; Note, interrupt enabled here
mov r1l, p2l
mov r1h, p2h
EndCriticalReturn
_ENDFUNC
_END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?