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

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

?? os_cpu_a.asm

?? 這是完整的ucos在51上移植的資料
?? ASM
字號:
;/*
;*********************************************************************************************************
;*                                               uC/OS-II
;*                                               實時內(nèi)核
;*
;*                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
;*                                               版權(quán)所有
;*
;*                                            MCU-51 專用代碼
;*                                           KEIL C51大模式編譯
;*
;* 文件名 : OS_CPU_A.ASM
;* 作者   : Jean J. Labrosse
;* 改編   : 楊屹 gdtyy@ri.gdt.com.cn 巨龍公司系統(tǒng)集成開發(fā)部 2002.09.27
;*********************************************************************************************************
;*/

;偽指令詳細用法請查A51.PDF文件
;程序結(jié)構(gòu)詳見《uC/OS-II》193-198頁

;不用此語句!!! $CASE    ;標(biāo)號和變量名區(qū)分大小寫

$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)        
            
;對外聲明4個不可重入函數(shù)
        PUBLIC OSStartHighRdy
        PUBLIC OSCtxSw
        PUBLIC OSIntCtxSw
        PUBLIC OSTickISR
        
        ;PUBLIC SerialISR        
    
;分配堆棧空間。只關(guān)心大小,堆棧起點由keil決定,通過標(biāo)號可以獲得keil分配的SP起點。
?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ù)切換時由相應(yīng)程序調(diào)整
        ENDM
    
POPALL    MACRO
        ;POP  ACC   ;不必保存SP,任務(wù)切換時由相應(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自動關(guān)中斷,此處不必用CLR EA指令,因為到此處還未開中斷,本程序退出后,開中斷。
        LCALL _?OSTaskSwHook

OSCtxSw_in:
    
        ;OSTCBCur ===> DPTR  獲得當(dāng)前TCB指針,詳見C51.PDF第178頁
        MOV  R0,#LOW (OSTCBCur) ;獲得OSTCBCur指針低地址,指針占3字節(jié)。+0類型+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類型+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)容(即用戶堆棧長度放在此處)  詳見文檔說明  指針用法詳見C51.PDF第178頁    
        MOVX A,@DPTR     ;用戶堆棧中是unsigned char類型數(shù)據(jù)
        MOV  R5,A        ;R5=用戶堆棧長度
    
        ;恢復(fù)現(xiàn)場堆棧內(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    ;開中斷
        RETI
;-------------------------------------------------------------------------
        RSEG ?PR?OSCtxSw?OS_CPU_A
OSCtxSw:    
        PUSHALL
    
OSIntCtxSw_in:
    
        ;獲得堆棧長度和起址
        MOV  A,SP
        CLR  C
        SUBB A,#OSStkStart
        MOV  R5,A     ;獲得堆棧長度        
    
        ;OSTCBCur ===> DPTR  獲得當(dāng)前TCB指針,詳見C51.PDF第178頁
        MOV  R0,#LOW (OSTCBCur) ;獲得OSTCBCur指針低地址,指針占3字節(jié)。+0類型+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類型+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
        
        ;保存堆棧長度
        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  使用這兩個變量主要目的是為了使指針比較變?yōu)樽止?jié)比較,以便節(jié)省時間。
        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()過程中壓入堆棧的多余內(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   ;使用定時器0
        RSEG ?PR?OSTickISR?OS_CPU_A

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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人综合网| 日韩电影在线观看一区| 成人免费av资源| 国产精品丝袜一区| 91美女蜜桃在线| 一区二区三区四区精品在线视频| 欧美性一级生活| 麻豆久久一区二区| 国产三级欧美三级| 91视频免费看| 蜜桃av一区二区| 中文字幕乱码久久午夜不卡 | www国产成人| 国产成人精品午夜视频免费| 国产精品欧美一级免费| 欧美在线观看视频在线| 蜜臀精品一区二区三区在线观看| 久久综合九色欧美综合狠狠| 99re这里只有精品6| 日韩有码一区二区三区| 国产日韩成人精品| 欧美日韩视频不卡| 国产成人a级片| 亚洲国产精品一区二区www在线 | 欧美日韩在线播| 久久精工是国产品牌吗| 国产精品久久久久久久裸模| 欧美最猛黑人xxxxx猛交| 老司机精品视频在线| 亚洲欧美在线视频| 欧美成人免费网站| 在线视频综合导航| 国产精品一区在线| 日韩高清不卡在线| 国产精品国产馆在线真实露脸 | 精品99999| 欧美主播一区二区三区美女| 精品在线观看视频| 亚洲午夜激情网站| 中文久久乱码一区二区| 日韩一区二区电影网| 91亚洲永久精品| 国产大片一区二区| 日本中文字幕一区二区有限公司| 成人欧美一区二区三区| 日韩一级免费一区| 欧美日韩国产高清一区| www..com久久爱| 国产一区二区在线影院| 亚洲一区二区三区小说| 中文字幕在线不卡视频| 久久综合九色综合久久久精品综合 | 成人99免费视频| 狠狠色丁香久久婷婷综合_中| 亚洲成精国产精品女| 一区二区三区在线观看动漫| 久久精品一区八戒影视| 欧美一级xxx| 欧美浪妇xxxx高跟鞋交| 91久久国产最好的精华液| 成人av免费在线观看| 国产69精品久久99不卡| 蜜臀久久99精品久久久久宅男 | 国产在线一区二区| 美女视频网站黄色亚洲| 免费欧美日韩国产三级电影| 亚洲午夜国产一区99re久久| 亚洲免费观看高清| 亚洲精品中文在线影院| 亚洲日本一区二区| 亚洲天堂a在线| 亚洲欧美另类在线| 亚洲日本在线看| 亚洲免费资源在线播放| 亚洲色图视频网站| 亚洲精品视频在线观看免费| 亚洲欧美国产三级| 尤物av一区二区| 亚洲成人你懂的| 视频一区在线视频| 久久精品99国产国产精| 黄网站免费久久| 国产凹凸在线观看一区二区| 国产成人午夜99999| 成人黄色电影在线 | 亚洲国产人成综合网站| 亚洲国产日韩精品| 免费在线观看不卡| 韩国成人精品a∨在线观看| 国产精品 欧美精品| 成人av网站在线| 在线观看视频91| 欧美日韩另类国产亚洲欧美一级| 欧美疯狂性受xxxxx喷水图片| 欧美一区国产二区| 欧美韩国日本综合| 亚洲精品国产精华液| 日韩激情一区二区| 国产美女精品一区二区三区| av不卡在线观看| 欧美偷拍一区二区| 日韩欧美色综合| 国产精品美女久久久久久久 | 国产精品理论在线观看| 亚洲精品videosex极品| 轻轻草成人在线| 国产成人av一区二区| 欧美在线免费观看亚洲| 精品噜噜噜噜久久久久久久久试看 | 国产曰批免费观看久久久| 国产成人精品网址| 欧美在线视频日韩| 久久久欧美精品sm网站| 亚洲免费观看在线视频| 久久福利视频一区二区| 91猫先生在线| 日韩精品中午字幕| 一区二区欧美精品| 国产麻豆欧美日韩一区| 欧美日韩亚洲另类| 日本一区二区三级电影在线观看| 亚洲成人福利片| 成人免费毛片嘿嘿连载视频| 欧美精品精品一区| 自拍偷拍亚洲欧美日韩| 国产原创一区二区| 欧美日韩成人综合| √…a在线天堂一区| 久久精品国产久精国产爱| 91看片淫黄大片一级在线观看| 日韩欧美在线网站| 亚洲高清不卡在线| 99麻豆久久久国产精品免费优播| 日韩三级视频在线观看| 亚洲精品乱码久久久久久| 成人性生交大合| 欧美一区二区三区在线观看 | 日韩成人伦理电影在线观看| eeuss影院一区二区三区| 精品国产麻豆免费人成网站| 亚洲国产中文字幕| 91丨porny丨在线| 亚洲国产精品二十页| 精品伊人久久久久7777人| 欧美三级视频在线| 一级女性全黄久久生活片免费| 国产suv一区二区三区88区| 日韩欧美国产综合一区 | 美女在线视频一区| 欧美日韩精品一区二区天天拍小说| 中文字幕亚洲区| 高清久久久久久| 国产日韩欧美精品一区| 国内精品免费在线观看| 精品国产乱码久久久久久浪潮| 亚洲不卡av一区二区三区| 欧美在线|欧美| 一区二区三区精品在线| 色综合天天性综合| 亚洲摸摸操操av| 日本乱人伦aⅴ精品| 亚洲人成网站精品片在线观看| 丁香一区二区三区| 欧美激情在线观看视频免费| 国产乱码精品一区二区三区忘忧草| 日韩一级二级三级| 美女脱光内衣内裤视频久久网站| 91精品国产麻豆| 蜜桃av一区二区三区电影| 日韩欧美国产一二三区| 另类小说视频一区二区| 亚洲精品一线二线三线| 国产精品影视网| 国产精品国模大尺度视频| 99久久777色| 亚洲一级二级三级| 欧美三级日韩三级| 蜜臀91精品一区二区三区| 欧美大白屁股肥臀xxxxxx| 激情综合一区二区三区| 国产欧美中文在线| 91免费小视频| 亚洲午夜久久久| 日韩一级大片在线| 国产精品996| 亚洲欧美一区二区三区国产精品 | 欧美福利电影网| 激情五月激情综合网| 欧美国产精品中文字幕| 色综合久久久久综合体桃花网| 一区二区三区欧美日韩| 日韩欧美123| 成人av资源下载| 丝袜美腿亚洲一区二区图片| 日韩精品中文字幕一区| 粉嫩久久99精品久久久久久夜| 夜夜夜精品看看| 日韩精品中文字幕一区| 91理论电影在线观看| 美女看a上一区|