亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? os_cpu_a.s90

?? Small RTOS 移植到AVR下用IAR編譯的
?? S90
字號:
;********************************************************************************************************
;                                               uC/OS-II
;                                         The Real-Time Kernel
;
;                                       ATMEL  AVR Specific code
;
;
; File     : OS_CPU_A.S90
; By       : Jean J. Labrosse
;********************************************************************************************************

#include "os_cpu_i.s90"


;********************************************************************************************************
;                                          PUBLIC DECLARATIONS
;********************************************************************************************************

                MODULE  OS_CPU_A

                PUBLIC  OS_CPU_SR_Save
                PUBLIC  OS_CPU_SR_Restore
                PUBLIC  OSCtxSw
                PUBLIC  OSIntCtxSw

				
;********************************************************************************************************
;                                         EXTERNAL DECLARATIONS
;********************************************************************************************************

                EXTERN  OSTCBCur
                EXTERN  OSTCBHighRdy
				
;/*$PAGE*/
;********************************************************************************************************
;                            DISABLE/ENABLE INTERRUPTS USING OS_CRITICAL_METHOD #3
;
; Description : These functions are used to disable and enable interrupts using OS_CRITICAL_METHOD #3.
;
;               OS_CPU_SR  OSCPUSaveSR (void)
;                     Get current value of SREG
;                     Disable interrupts
;                     Return original value of SREG
;
;               void  OSCPURestoreSR (OS_CPU_SR cpu_sr)
;                     Set SREG to cpu_sr
;                     Return
;********************************************************************************************************

                   RSEG    CODE:CODE:NOROOT(1)

OS_CPU_SR_Save:    IN      R16,SREG                 ; Get current state of interrupts disable flag
                   CLI                              ; Disable interrupts
                   RET                              ; Return original SREG value in R16


OS_CPU_SR_Restore: OUT     SREG,R16                 ; Restore SREG
                   RET	                     		; Return


;/*$PAGE*/
;********************************************************************************************************
;                                       TASK LEVEL CONTEXT SWITCH
;
; Description : This function is called when a task makes a higher priority task ready-to-run.
;
; Note(s)     : 1) Upon entry,
;                  OSTCBCur     points to the OS_TCB of the task to suspend
;                  OSTCBHighRdy points to the OS_TCB of the task to resume
;
;               2) The stack frame of the task to suspend looks as follows:
;
;                                       SP+0 --> LSB of task code address
;                                         +1     MSB of task code address                (High memory)
;
;               3) The saved context of the task to resume looks as follows:
;
;                                                       Hardware Stack points to EMPTY
;                                                       <----------------------------\
;                                                PC (H)                              |
;                                                PC (L)                              |
;                                                                                    |
;                                                                                    |
;                  OSTCBHighRdy->OSTCBStkPtr --> SPL of (return) stack pointer   ----/   (Low memory)
;                                                SPH of (return) stack pointer
;                                                Flags to load in status register
;                                                RAMPZ
;                                                R31
;                                                R30
;                                                R27
;                                                .
;                                                .
;                                                R0                                      (High memory)
;********************************************************************************************************

OSCtxSw:        PUSH_ALL                            ; Save current task's context
                PUSH_SREG
                PUSH_SP

                LDS     R30,OSTCBCur                ; Z = OSTCBCur->OSTCBStkPtr
                LDS     R31,OSTCBCur+1              ;
                ST      Z+,R28                      ; Save Y (R29:R28) pointer
                ST      Z+,R29                      ;


                LDS     R30,OSTCBHighRdy            ; Let Z point to TCB of highest priority task
                LDS     R31,OSTCBHighRdy+1          ; ready to run
                STS     OSTCBCur,R30                ; OSTCBCur = OSTCBHighRdy
                STS     OSTCBCur+1,R31              ;

                LD      R28,Z+                      ; Restore Y pointer
                LD      R29,Z+                      ;

                POP_SP                              ; Restore stack pointer
                LD      R16,Y+                      ; Restore status register
                SBRC    R16,7                       ; Skip next instruction in interrupts DISABLED
                RJMP    OSCtxSw_1

                OUT     SREG,R16                    ; Interrupts of task to return to are DISABLED
                POP_ALL
                RET

OSCtxSw_1:      CBR     R16,BIT07                   ; Interrupts of task to return to are ENABLED
                OUT     SREG,R16
                POP_ALL                             ; Restore all registers
                RETI


;/*$PAGE*/
;*********************************************************************************************************
;                                INTERRUPT LEVEL CONTEXT SWITCH
;
; Description : This function is called by OSIntExit() to perform a context switch to a task that has
;               been made ready-to-run by an ISR.
;
; Note(s)     : 1) Upon entry,
;                  OSTCBCur     points to the OS_TCB of the task to suspend
;                  OSTCBHighRdy points to the OS_TCB of the task to resume
;
;               2) The stack frame of the task to suspend looks as follows:
;
;                                                       Hardware Stack points to EMPTY
;                                                       <----------------------------\
;                                                PC (H)                              |
;                                                PC (L)                              |
;                                                                                    |
;                                                                                    |
;                  OSTCBCur->OSTCBStkPtr ------> SPL of (return) stack pointer    ---/   (Low memory)
;                                                SPH of (return) stack pointer
;                                                Flags to load in status register
;                                                RAMPZ
;                                                R31
;                                                R30
;                                                R27
;                                                .
;                                                .
;                                                R0                                      (High memory)
;
;               3) The saved context of the task to resume looks as follows:
;
;                                                       Hardware Stack points to EMPTY
;                                                       <----------------------------\
;                                                PC (H)                              |
;                                                PC (L)                              |
;                                                                                    |
;                                                                                    |
;                  OSTCBHighRdy->OSTCBStkPtr --> SPL of (return) stack pointer    ---/   (Low memory)
;                                                SPH of (return) stack pointer
;                                                Flags to load in status register
;                                                RAMPZ
;                                                R31
;                                                R30
;                                                R27
;                                                .
;                                                .
;                                                R0                                      (High memory)
;*********************************************************************************************************

OSIntCtxSw:
                LDS     R30,OSTCBHighRdy            ; Let Z point to TCB of highest priority task
                LDS     R31,OSTCBHighRdy+1          ; ready to run
                STS     OSTCBCur,R30                ; OSTCBCur = OSTCBHighRdy
                STS     OSTCBCur+1,R31              ;

                LD      R28,Z+                      ; Restore Y pointer
                LD      R29,Z+                      ;

                POP_SP                              ; Restore stack pointer
                LD      R16,Y+                      ; Restore status register
                SBRC    R16,7                       ; Skip next instruction in interrupts DISABLED
                RJMP    OSIntCtxSw_1

                OUT     SREG,R16                    ; Interrupts of task to return to are DISABLED
                POP_ALL
                RET

OSIntCtxSw_1:   CBR     R16,BIT07                   ; Interrupts of task to return to are ENABLED
                OUT     SREG,R16
                POP_ALL                             ; Restore all registers
                RETI
				END
				


?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品日韩一区二区三区免费视频| 一区二区三区免费| 久久综合色婷婷| 欧美一区二区三区在线观看| 6080国产精品一区二区| 在线成人小视频| 91精品国产综合久久香蕉麻豆| 欧美在线不卡一区| 欧美日韩精品一二三区| 3d成人h动漫网站入口| 日韩视频免费观看高清完整版在线观看 | 亚洲精品免费在线播放| 亚洲欧美日韩人成在线播放| 亚洲女同女同女同女同女同69| 亚洲美腿欧美偷拍| 亚洲韩国精品一区| 婷婷成人综合网| 麻豆传媒一区二区三区| 国产真实乱对白精彩久久| 国产成人av电影在线播放| 成人av网站在线观看免费| av网站免费线看精品| 色老综合老女人久久久| 欧美日韩精品二区第二页| 精品日韩av一区二区| 国产亚洲短视频| 亚洲人亚洲人成电影网站色| 亚洲永久免费视频| 美国av一区二区| 福利一区二区在线| 欧美综合一区二区三区| 日韩视频中午一区| 国产精品午夜春色av| 亚洲自拍另类综合| 精品在线观看免费| 99这里只有精品| 3d动漫精品啪啪| 国产精品丝袜一区| 亚洲国产欧美日韩另类综合 | 久久精品免费看| 不卡一区中文字幕| 欧美日韩在线三级| 久久久久久久国产精品影院| 成人欧美一区二区三区小说| 午夜一区二区三区视频| 国产精品99久久久久久久vr| 欧美在线播放高清精品| 久久久精品免费观看| 亚洲美女一区二区三区| 韩国成人在线视频| 欧美又粗又大又爽| 久久影院电视剧免费观看| 一区二区三区欧美日韩| 国内精品久久久久影院薰衣草| 91蜜桃免费观看视频| 精品少妇一区二区三区免费观看| 亚洲欧美影音先锋| 紧缚奴在线一区二区三区| 日本韩国欧美一区| 国产午夜精品理论片a级大结局| 亚洲第一狼人社区| 成人av午夜电影| 精品国产亚洲在线| 一区二区免费视频| 国产91精品欧美| 欧美一区二区三区日韩| 亚洲另类中文字| 国产传媒欧美日韩成人| 91精品一区二区三区久久久久久| 成人欧美一区二区三区白人 | 欧美日韩国产综合久久| 国产精品久久毛片a| 久久精品国内一区二区三区| 日本乱人伦一区| 国产精品国产三级国产aⅴ中文| 精品一区二区三区在线播放 | 一区二区三区欧美久久| 高清不卡一二三区| 久久久99精品免费观看| 日本不卡123| 欧美吻胸吃奶大尺度电影| 中文字幕av不卡| 国产美女久久久久| 精品久久久久久久久久久院品网 | 欧美日韩在线三区| 亚洲丝袜制服诱惑| 成人午夜伦理影院| 久久精品日产第一区二区三区高清版| 免费成人在线观看视频| 欧美伦理影视网| 亚洲第一电影网| 欧美在线影院一区二区| 亚洲欧美激情一区二区| voyeur盗摄精品| 国产清纯白嫩初高生在线观看91| 国产综合久久久久影院| 精品欧美久久久| 韩国在线一区二区| 精品国产三级a在线观看| 美日韩一区二区| 欧美一区二区国产| 日韩av不卡在线观看| 欧美精品一卡两卡| 日韩精品免费专区| 日韩欧美一二三区| 国内精品久久久久影院色| 精品国产免费一区二区三区四区| 激情图片小说一区| 久久一日本道色综合| 精品综合免费视频观看| 久久久久久久久久久久久久久99 | 国产成人av一区二区三区在线| 精品少妇一区二区三区在线播放 | 午夜影院久久久| 欧美高清视频不卡网| 日韩精品色哟哟| 精品日韩99亚洲| 国产黄色91视频| 国产精品久久久久久亚洲毛片| jiyouzz国产精品久久| 一区二区三区不卡视频| 欧美精品色一区二区三区| 日本aⅴ免费视频一区二区三区| www国产精品av| 成人精品小蝌蚪| 亚洲精品日韩综合观看成人91| 欧美高清视频在线高清观看mv色露露十八| 视频一区二区中文字幕| 26uuu成人网一区二区三区| 国产精品影视在线观看| 亚洲欧美中日韩| 91精品婷婷国产综合久久竹菊| 久久国产尿小便嘘嘘| 欧美国产一区在线| 欧美日韩精品是欧美日韩精品| 免费视频最近日韩| 国产精品免费aⅴ片在线观看| 色偷偷久久人人79超碰人人澡| 婷婷国产在线综合| 国产欧美日韩中文久久| 在线一区二区三区四区五区| 日韩精品一二三四| 国产精品系列在线| 欧美伦理视频网站| 成人一级视频在线观看| 亚洲图片欧美综合| 久久综合资源网| 欧美日韩综合一区| 国产一区二区三区黄视频| **性色生活片久久毛片| 欧美精品在线一区二区| 波多野结衣亚洲| av成人免费在线观看| 一区二区三区.www| 久久看人人爽人人| 欧亚一区二区三区| 国产黄色精品网站| 天堂一区二区在线免费观看| 国产精品无圣光一区二区| 欧美另类高清zo欧美| 成人av网站在线观看| 日韩av一二三| 亚洲欧美日韩久久精品| 久久这里只有精品首页| 欧美日韩另类国产亚洲欧美一级| 成人一级片网址| 久久精品99国产精品日本| 亚洲成在人线在线播放| 中文av一区二区| 精品国产乱码久久久久久影片| 欧美亚洲国产一区在线观看网站| 国产精品一区二区不卡| 日本午夜一区二区| 伊人夜夜躁av伊人久久| 国产视频亚洲色图| 日韩免费在线观看| 欧美三级在线视频| 一本色道**综合亚洲精品蜜桃冫| 韩日欧美一区二区三区| 日韩av成人高清| 亚洲成人免费av| 亚洲精品ww久久久久久p站| 国产日韩欧美高清| 精品国产第一区二区三区观看体验| 欧美性欧美巨大黑白大战| 丰满白嫩尤物一区二区| 蜜桃一区二区三区在线观看| 亚洲午夜在线观看视频在线| 中文字幕一区av| 亚洲国产电影在线观看| 国产网站一区二区三区| 亚洲精品在线网站| 日韩一级片网址| 91精品在线一区二区| 欧美久久一二三四区| 欧美日韩精品免费| 欧美日韩国产bt| 欧美三级韩国三级日本三斤| 欧美三级中文字| 欧美日韩大陆一区二区|