⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avrx_recvmessage.s

📁 一个基于AVR 单片机的操作系统,有组于了解操作系统在单片机上运行的内幕.
💻 S
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -