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

📄 avrx_singlestep.s

📁 血凝仪检测系统,硬件电路部分由正弦波产生模块、前级放大与滤波模块、检测线圈、锁相环同步检波模块、后级平滑滤波与放大模块、AD转换器、线圈驱动模块、单片机模块等部分组成。
💻 S
字号:
#include        "avrx.inc"
/*
        Copyright 1999-2001, Larry Barello
        larry@barello.net

*/
        _MODULE(avrx_singlestep)

        _EXTERN(IntProlog)
        _EXTERN(RunQueue)
        _EXTERN(_QueuePid)
        _EXTERN(_Epilog)

        _CODESECTION
;+
;-----------------------------------------------------------
; unsigned char AvrXSingleStepNext(pProcessID)
;
; Marks a suspended task for single step support
; Jams it on the front of the run queue.  Returns error
; if task is not suspended.
;
; PASSED:       R25:R24 = Pid to single step
; RETURN:       R24 = 1 if task not suspended (error)
; USES:         FLAGS (except T)
;-
        _FUNCTION(AvrXSingleStepNext)

AvrXSingleStepNext:
        AVRX_Prolog

        mov     Zh, p1h
        mov     Zl, p1l
        ldd     Xl, Z+PidState
        sbrs    Xl, SuspendedBit
        rjmp    AssnXErr
        
        sbr     Xl, BV(SingleStep) ; Mark for single stepping
        std     Z+PidState, Xl
        
        lds     Xh, RunQueue+NextH   ; Put task in front of run queue
        lds     Xl, RunQueue+NextL
        sts     RunQueue+NextH, Zh
        sts     RunQueue+NextL, Zl
        std     Z+NextH, Xh
        std     Z+NextL, Xl
        rjmp    AssnXOk
        _ENDFUNC

/*+
; -----------------------------------------------------------
; unsigned char AvrXStepNext(pProcessID)
;
; Unsuspends a task, adds it to the run queue
; then resuspends the task.  
;
; PASSED:       R25:R24 = Pid to single step
; RETURN:       R24 = 1 if task not suspended (error)
; USES:         
;
-*/
        _FUNCTION(AvrXStepNext)

AvrXStepNext:
        AVRX_Prolog

        mov     Zh, p1h
        mov     Zl, p1l
        ldd     Xl, Z+PidState
        sbrs    Xl, SuspendedBit
        rjmp    AssnX
        
        cbr     Xl, BV(SuspendBit) | BV(SuspendedBit)
        std     Z+PidState, Xl
        rcall   _QueuePid               ; Add to run queue
; <BUG BUG - QueuePid trashes Z?, yeah, reloads with R25:R24
        ldd     Xl, Z+PidState
        sbr     Xl, BV(SuspendBit)
        std     Z+PidState, Xl
AssnXOk:
        ldi     r1l, lo8(0)     ; Ok Return
        rjmp    AssnX
AssnXErr:
        ldi     r1l, lo8(1)     ; Err Return
AssnX:
        std     Y+_r1l, r1l
        rjmp    _Epilog

        _ENDFUNC
        _END


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -