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

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

?? os_cpu_a.asm

?? c8051f020單片機(jī)的例程
?? ASM
字號(hào):
;/*
;*********************************************************************************************************
;*                                               uC/OS-II
;*                                               實(shí)時(shí)內(nèi)核
;*
;*                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
;*                                               版權(quán)所有
;*
;*                                            8051處理器代碼
;*                                           KEIL C51大模式編譯
;*
;* 文件名 : OS_CPU_A.ASM
;* 作者   : Jean J. Labrosse
;*********************************************************************************************************
;*/

$NOMOD51
EA	BIT	0A8H.7
SP	DATA	081H
B	DATA	0F0H
ACC	DATA	0E0H
DPH	DATA	083H
DPL	DATA	082H
PSW	DATA	0D0H
TR0	BIT	088H.4
TH0	DATA	08CH
TL0	DATA	08AH

        NAME OS_CPU_A    ;模塊名
        
;定義重定位段
?PR?OSStartHighRdy?OS_CPU_A    SEGMENT CODE
?PR?OSCtxSw?OS_CPU_A           SEGMENT CODE
?PR?OSIntCtxSw?OS_CPU_A        SEGMENT CODE
?PR?OSTickISR?OS_CPU_A         SEGMENT CODE

?PR?_?serial?OS_CPU_A          SEGMENT CODE
        
;聲明引用全局變量和外部子程序
        EXTRN DATA  (?C_XBP)     ;仿真堆棧指針用于重入局部變量保存

        EXTRN IDATA (OSTCBCur)
        EXTRN IDATA (OSTCBHighRdy)
        EXTRN IDATA (OSRunning)
        EXTRN IDATA (OSPrioCur)
        EXTRN IDATA (OSPrioHighRdy)
    
        EXTRN CODE  (_?OSTaskSwHook)
        EXTRN CODE  (_?serial)
        EXTRN CODE  (_?OSIntEnter)
        EXTRN CODE  (_?OSIntExit)
        EXTRN CODE  (_?OSTimeTick)        
            
;對(duì)外聲明4個(gè)不可重入函數(shù)
        PUBLIC OSStartHighRdy
        PUBLIC OSCtxSw
        PUBLIC OSIntCtxSw
        PUBLIC OSTickISR
        
;分配堆棧空間。只關(guān)心大小,堆棧起點(diǎn)由keil決定,通過(guò)標(biāo)號(hào)可以獲得keil分配的SP起點(diǎn)。
?STACK SEGMENT IDATA
        RSEG ?STACK
OSStack:
        DS 40H
OSStkStart IDATA OSStack-1

;定義壓棧出棧宏
PUSHALL    MACRO
        PUSH PSW
        PUSH ACC
        PUSH B
        PUSH DPL
        PUSH DPH
        MOV  A,R0   ;R0-R7入棧
        PUSH ACC
        MOV  A,R1
        PUSH ACC
        MOV  A,R2
        PUSH ACC
        MOV  A,R3
        PUSH ACC
        MOV  A,R4
        PUSH ACC
        MOV  A,R5
        PUSH ACC
        MOV  A,R6
        PUSH ACC
        MOV  A,R7
        PUSH ACC
        ;PUSH SP    ;不必保存SP,任務(wù)切換時(shí)由相應(yīng)程序調(diào)整
        ENDM
    
POPALL    MACRO
        ;POP  ACC   ;不必保存SP,任務(wù)切換時(shí)由相應(yīng)程序調(diào)整
        POP  ACC    ;R0-R7出棧
        MOV  R7,A
        POP  ACC
        MOV  R6,A
        POP  ACC
        MOV  R5,A
        POP  ACC
        MOV  R4,A
        POP  ACC
        MOV  R3,A
        POP  ACC
        MOV  R2,A
        POP  ACC
        MOV  R1,A
        POP  ACC
        MOV  R0,A
        POP  DPH
        POP  DPL
        POP  B
        POP  ACC
        POP  PSW
        ENDM
    
;子程序
;-------------------------------------------------------------------------
        RSEG ?PR?OSStartHighRdy?OS_CPU_A
OSStartHighRdy:
        USING 0    ;上電后51自動(dòng)關(guān)中斷,此處不必用CLR EA指令,因?yàn)榈酱颂庍€未開(kāi)中斷,本程序退出后,開(kāi)中斷。
        LCALL _?OSTaskSwHook

OSCtxSw_in:
    
        ;OSTCBCur ===> DPTR  獲得當(dāng)前TCB指針,詳見(jiàn)C51.PDF第178頁(yè)
        MOV  R0,#LOW (OSTCBCur) ;獲得OSTCBCur指針低地址,指針占3字節(jié)。+0類(lèi)型+1高8位數(shù)據(jù)+2低8位數(shù)據(jù)
        INC  R0
        MOV  DPH,@R0    ;全局變量OSTCBCur在IDATA中
        INC  R0
        MOV  DPL,@R0
    
        ;OSTCBCur->OSTCBStkPtr ===> DPTR  獲得用戶堆棧指針
        INC  DPTR        ;指針占3字節(jié)。+0類(lèi)型+1高8位數(shù)據(jù)+2低8位數(shù)據(jù)
        MOVX A,@DPTR     ;.OSTCBStkPtr是void指針
        MOV  R0,A
        INC  DPTR
        MOVX A,@DPTR
        MOV  R1,A
        MOV  DPH,R0
        MOV  DPL,R1
    
        ;*UserStkPtr ===> R5  用戶堆棧起始地址內(nèi)容(即用戶堆棧長(zhǎng)度放在此處)  詳見(jiàn)文檔說(shuō)明  指針用法詳見(jiàn)C51.PDF第178頁(yè)    
        MOVX A,@DPTR     ;用戶堆棧中是unsigned char類(lèi)型數(shù)據(jù)
        MOV  R5,A        ;R5=用戶堆棧長(zhǎng)度
    
        ;恢復(fù)現(xiàn)場(chǎng)堆棧內(nèi)容
        MOV  R0,#OSStkStart
        
restore_stack:
    
        INC  DPTR
        INC  R0
        MOVX A,@DPTR
        MOV  @R0,A
        DJNZ R5,restore_stack
    
        ;恢復(fù)堆棧指針SP
        MOV  SP,R0
    
        ;恢復(fù)仿真堆棧指針?C_XBP        
        INC  DPTR
        MOVX A,@DPTR
        MOV  ?C_XBP,A    ;?C_XBP 仿真堆棧指針高8位
        INC  DPTR
        MOVX A,@DPTR
        MOV  ?C_XBP+1,A  ;?C_XBP 仿真堆棧指針低8位
    
        ;OSRunning=TRUE
        MOV  R0,#LOW (OSRunning)
        MOV  @R0,#01
    
        POPALL
        SETB EA    ;開(kāi)中斷
        RETI
;-------------------------------------------------------------------------
        RSEG ?PR?OSCtxSw?OS_CPU_A
OSCtxSw:    
        PUSHALL
    
OSIntCtxSw_in:
    
        ;獲得堆棧長(zhǎng)度和起址
        MOV  A,SP
        CLR  C
        SUBB A,#OSStkStart
        MOV  R5,A     ;獲得堆棧長(zhǎng)度        
    
        ;OSTCBCur ===> DPTR  獲得當(dāng)前TCB指針,詳見(jiàn)C51.PDF第178頁(yè)
        MOV  R0,#LOW (OSTCBCur) ;獲得OSTCBCur指針低地址,指針占3字節(jié)。+0類(lèi)型+1高8位數(shù)據(jù)+2低8位數(shù)據(jù)
        INC  R0
        MOV  DPH,@R0    ;全局變量OSTCBCur在IDATA中
        INC  R0
        MOV  DPL,@R0
    
        ;OSTCBCur->OSTCBStkPtr ===> DPTR  獲得用戶堆棧指針
        INC  DPTR        ;指針占3字節(jié)。+0類(lèi)型+1高8位數(shù)據(jù)+2低8位數(shù)據(jù)
        MOVX A,@DPTR     ;.OSTCBStkPtr是void指針
        MOV  R0,A
        INC  DPTR
        MOVX A,@DPTR
        MOV  R1,A
        MOV  DPH,R0
        MOV  DPL,R1
        
        ;保存堆棧長(zhǎng)度
        MOV  A,R5
        MOVX @DPTR,A
    
        MOV  R0,#OSStkStart  ;獲得堆棧起址
save_stack:
    
        INC  DPTR
        INC  R0
        MOV  A,@R0
        MOVX @DPTR,A
        DJNZ R5,save_stack
        
        ;保存仿真堆棧指針?C_XBP
        INC  DPTR
        MOV  A,?C_XBP    ;?C_XBP 仿真堆棧指針高8位
        MOVX @DPTR,A
        INC  DPTR
        MOV  A,?C_XBP+1  ;?C_XBP 仿真堆棧指針低8位
        MOVX @DPTR,A        
    
        ;調(diào)用用戶程序
        LCALL _?OSTaskSwHook
        
        ;OSTCBCur = OSTCBHighRdy
        MOV  R0,#OSTCBCur
	MOV  R1,#OSTCBHighRdy
	MOV  A,@R1
        MOV  @R0,A
        INC  R0
	INC  R1
	MOV  A,@R1
        MOV  @R0,A
        INC  R0
	INC  R1
	MOV  A,@R1
        MOV  @R0,A
                
        ;OSPrioCur = OSPrioHighRdy  使用這兩個(gè)變量主要目的是為了使指針比較變?yōu)樽止?jié)比較,以便節(jié)省時(shí)間。
        MOV  R0,#OSPrioCur
	MOV  R1,#OSPrioHighRdy
	MOV  A,@R1
        MOV  @R0,A
        
        LJMP OSCtxSw_in
;-------------------------------------------------------------------------
        RSEG ?PR?OSIntCtxSw?OS_CPU_A
        
OSIntCtxSw:

        ;調(diào)整SP指針去掉在調(diào)用OSIntExit(),OSIntCtxSw()過(guò)程中壓入堆棧的多余內(nèi)容
        ;SP=SP-4

        MOV  A,SP
        CLR  C
        SUBB A,#4
        MOV  SP,A
        
        LJMP OSIntCtxSw_in
;-------------------------------------------------------------------------
        CSEG AT 000BH    ;OSTickISR
        LJMP OSTickISR   ;使用定時(shí)器0
        RSEG ?PR?OSTickISR?OS_CPU_A

OSTickISR:        
        
        USING 0        
        PUSHALL
        
        CLR  TR0
        MOV  TH0,#70H    ;定義Tick=50次/秒(即0.02秒/次)
        MOV  TL0,#00H    ;OS_CPU_C.C  和  OS_TICKS_PER_SEC
        SETB TR0
        
        LCALL _?OSIntEnter
        LCALL _?OSTimeTick
        LCALL _?OSIntExit
        POPALL        
        RETI
;-------------------------------------------------------------------------
        CSEG AT 0023H    ;串口中斷
        LJMP SerialISR   ;工作于系統(tǒng)態(tài),無(wú)任務(wù)切換。
        RSEG ?PR?_?serial?OS_CPU_A
        
SerialISR:
        
        USING 0        
        PUSHALL
        CLR  EA
        LCALL _?serial        
        SETB EA
        POPALL        
        RETI
;-------------------------------------------------------------------------
        END
;-------------------------------------------------------------------------

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久99久精品视频免费观看| 亚洲精品国产成人久久av盗摄 | 青青草伊人久久| 欧美日韩免费电影| 日韩高清在线不卡| 精品国产电影一区二区| 九色porny丨国产精品| 久久精品这里都是精品| 成人在线一区二区三区| 亚洲欧美日韩人成在线播放| 欧美日韩免费电影| 久久国产精品无码网站| 国产三级三级三级精品8ⅰ区| av在线播放一区二区三区| 一级做a爱片久久| 337p亚洲精品色噜噜噜| 国产福利一区在线观看| 亚洲美女视频在线观看| 在线91免费看| 成人综合婷婷国产精品久久| 一区二区三区鲁丝不卡| 欧美私人免费视频| 国产一区二区三区免费播放| 一区二区三区在线不卡| 欧美一区二区视频在线观看2022 | 丁香婷婷综合激情五月色| 亚洲精品视频一区| 日韩亚洲欧美综合| www.av亚洲| 日本免费在线视频不卡一不卡二| 亚洲欧美在线视频| 欧美日韩国产一区| 国产一区二区成人久久免费影院 | 成人免费不卡视频| 日韩精品一区第一页| 欧美国产亚洲另类动漫| 欧美裸体一区二区三区| av一区二区久久| 久久精品久久精品| 亚洲在线视频网站| 国产视频一区在线播放| 欧美日本在线一区| 成人99免费视频| 激情综合亚洲精品| 亚洲综合av网| 国产精品成人一区二区三区夜夜夜| 555夜色666亚洲国产免| 色婷婷精品久久二区二区蜜臀av| 久久国产三级精品| 亚洲不卡一区二区三区| 亚洲欧美一区二区三区国产精品 | 欧美va亚洲va| 欧美视频一区二区| 成人一级视频在线观看| 美女网站色91| 午夜欧美一区二区三区在线播放| 国产精品的网站| 国产日韩欧美激情| 欧美一区二区三区免费| 欧美日韩久久久一区| 99re成人在线| 成人一区二区三区| 国产乱人伦精品一区二区在线观看 | 夜夜亚洲天天久久| 国产精品久久看| 亚洲国产高清不卡| 欧美精品一区二区三区蜜桃视频| 欧美性高清videossexo| 91蜜桃网址入口| 91蜜桃婷婷狠狠久久综合9色| 国产成人精品一区二| 国产成人丝袜美腿| 国产精品66部| 国产精品羞羞答答xxdd| 国产黄色成人av| 国产精品77777| 国产99久久精品| 懂色中文一区二区在线播放| 国产精品66部| 成年人网站91| 丁香六月综合激情| 成人午夜伦理影院| a美女胸又www黄视频久久| 成人综合在线网站| 92国产精品观看| 91视视频在线观看入口直接观看www| 成人精品在线视频观看| 成人app下载| 欧美亚洲综合久久| 欧美区一区二区三区| 欧美一三区三区四区免费在线看 | 日韩一卡二卡三卡国产欧美| 欧美一卡2卡3卡4卡| 久久网站热最新地址| 国产精品乱码久久久久久| 亚洲欧美日韩电影| 偷拍与自拍一区| 国产综合色视频| va亚洲va日韩不卡在线观看| 在线观看不卡一区| 91精品一区二区三区在线观看| 精品入口麻豆88视频| 中文字幕第一区第二区| 一个色在线综合| 日韩 欧美一区二区三区| 精彩视频一区二区| 91丨porny丨首页| 欧美一级xxx| 国产精品理论在线观看| 一区二区三区在线视频观看| 裸体一区二区三区| eeuss鲁片一区二区三区| 欧美三级电影一区| 久久久.com| 亚洲高清视频在线| 国产一区中文字幕| 色一区在线观看| 日韩午夜激情av| 亚洲免费在线看| 九色|91porny| 在线亚洲免费视频| 久久欧美中文字幕| 天堂久久久久va久久久久| 国产麻豆91精品| 欧美日韩精品电影| 亚洲黄色性网站| 国模少妇一区二区三区| 日本高清视频一区二区| 久久综合九色综合97_久久久| 亚洲柠檬福利资源导航| 狠狠狠色丁香婷婷综合久久五月| 色8久久人人97超碰香蕉987| 精品少妇一区二区三区免费观看| 亚洲狼人国产精品| 国产成人在线影院| 91精品国产欧美日韩| 亚洲欧美日韩一区二区| 国产成人午夜99999| 日韩一卡二卡三卡| 亚洲国产日日夜夜| 一本色道久久综合亚洲精品按摩| 久久综合九色综合欧美就去吻| 天天色综合成人网| 色8久久人人97超碰香蕉987| 国产精品天天摸av网| 国产九色sp调教91| 精品久久久三级丝袜| 日韩av午夜在线观看| 欧美性淫爽ww久久久久无| 国产精品电影一区二区三区| 国产风韵犹存在线视精品| 欧美电视剧免费观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧洲另类一二三四区| 亚洲欧美一区二区三区孕妇| 成人国产电影网| 亚洲国产精品二十页| 国产精品99久久久| 久久女同精品一区二区| 美腿丝袜亚洲三区| 日韩一区二区三区四区| 日韩主播视频在线| 在线不卡免费av| 日精品一区二区| 欧美一区三区四区| 蜜桃久久久久久| 日韩欧美视频在线| 精品一区二区久久久| 精品国产网站在线观看| 国精品**一区二区三区在线蜜桃| 精品电影一区二区三区| 美国十次了思思久久精品导航| 91精品综合久久久久久| 久久国内精品视频| 国产性做久久久久久| 福利一区二区在线| 亚洲欧美一区二区在线观看| 91在线视频官网| 亚洲精品亚洲人成人网在线播放| 97精品电影院| 亚洲成av人片在www色猫咪| 欧美日韩在线播| 日本美女一区二区| 久久影院午夜片一区| 成人黄色av电影| 伊人婷婷欧美激情| 欧美日本在线看| 久久99久久久欧美国产| 国产无人区一区二区三区| 不卡一区二区三区四区| 亚洲一区二区三区视频在线| 91精品国产综合久久婷婷香蕉| 精品亚洲成a人在线观看| 日本一区二区三区四区| 在线一区二区三区做爰视频网站| 亚洲va欧美va国产va天堂影院| 欧美一区二区在线免费播放| 高清免费成人av| 五月激情综合网| 国产欧美日韩在线|