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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_cpu_a.asm

?? 在別處找到的一些uc/os-ii的一些資料
?? ASM
字號:
;/*
;*********************************************************************************************************
;*                                               uC/OS-II
;*                                               實時內核
;*
;*                                               版權所有
;*
;* 文件名 : OS_CPU_A.ASM
;* 作者   : Jean J. Labrosse
;* 改編   : 陳是知 北京中軟 2005。1。27
;*********************************************************************************************************
;*/

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

;不用此語句!!! $CASE    ;標號和變量名區分大小寫

$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
P4      DATA    0D8H

        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個不可重入函數
        PUBLIC OSStartHighRdy
        PUBLIC OSCtxSw
        PUBLIC OSIntCtxSw
        PUBLIC OSTickISR
        
        ;PUBLIC SerialISR        
    
;分配堆棧空間。只關心大小,堆棧起點由keil決定,通過標號可以獲得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,任務切換時由相應程序調整
        ENDM
    
POPALL    MACRO
        ;POP  ACC   ;不必保存SP,任務切換時由相應程序調整
        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自動關中斷,此處不必用CLR EA指令,因為到此處還未開中斷,本程序退出后,開中斷。
        LCALL _?OSTaskSwHook
        
        ;OSRunning=TRUE
        MOV  R0,#LOW (OSRunning)
        MOV  @R0,#01

OSCtxSw_in:
    
        ;OSTCBHighRdy ===> DPTR  獲得當前TCB指針,詳見C51.PDF第178頁
        MOV  R0,#LOW (OSTCBHighRdy) ;獲得OSTCBHighRdy指針低地址,指針占3字節。+0類型+1高8位數據+2低8位數據
        INC  R0
        MOV  DPH,@R0    ;全局變量OSTCBCur在IDATA中
        INC  R0
        MOV  DPL,@R0
    
        ;OSTCBHighRdy->OSTCBStkPtr ===> DPTR  獲得用戶堆棧指針
        INC  DPTR        ;指針占3字節。+0類型+1高8位數據+2低8位數據
        MOVX A,@DPTR     ;.OSTCBStkPtr是void指針
        MOV  R0,A
        INC  DPTR
        MOVX A,@DPTR
        MOV  R1,A
        MOV  DPH,R0
        MOV  DPL,R1
    
        ;*UserStkPtr ===> R5  用戶堆棧起始地址內容(即用戶堆棧長度放在此處)  詳見文檔說明  指針用法詳見C51.PDF第178頁    
        MOVX A,@DPTR     ;用戶堆棧中是unsigned char類型數據
        MOV  R5,A        ;R5=用戶堆棧長度z
    
        ;恢復現場堆棧內容
        MOV  R0,#OSStkStart
        
restore_stack:
    
        INC  DPTR
        INC  R0
        MOVX A,@DPTR
        MOV  @R0,A
        DJNZ R5,restore_stack
    
        ;恢復堆棧指針SP
        MOV  SP,R0
    
        ;恢復仿真堆棧指針?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位
    

    
        POPALL
        SETB EA    ;開中斷
        RETI
;-------------------------------------------------------------------------
        RSEG ?PR?OSCtxSw?OS_CPU_A
OSCtxSw:  
        USING 0  
        PUSHALL

        ;獲得堆棧長度和起址
        MOV  A,SP
        CLR  C
        SUBB A,#OSStkStart
        MOV  R5,A     ;獲得堆棧長度        
    
        ;OSTCBCur ===> DPTR  獲得當前TCB指針,詳見C51.PDF第178頁
        MOV  R0,#LOW (OSTCBCur) ;獲得OSTCBCur指針低地址,指針占3字節。+0類型+1高8位數據+2低8位數據
        INC  R0
        MOV  DPH,@R0    ;全局變量OSTCBCur在IDATA中
        INC  R0
        MOV  DPL,@R0
    
        ;OSTCBCur->OSTCBStkPtr ===> DPTR  獲得用戶堆棧指針
        INC  DPTR        ;指針占3字節。+0類型+1高8位數據+2低8位數據
        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        
    
        ;調用用戶程序
        LCALL _?OSTaskSwHook
        
OSIntCtxSw_in:
        ;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  使用這兩個變量主要目的是為了使指針比較變為字節比較,以便節省時間。
        MOV  R0,#OSPrioCur
	MOV  R1,#OSPrioHighRdy
	MOV  A,@R1
        MOV  @R0,A
        
        LJMP OSCtxSw_in
;-------------------------------------------------------------------------
        RSEG ?PR?OSIntCtxSw?OS_CPU_A
        
OSIntCtxSw:
        USING 0
	LCALL _?OSTaskSwHook
        LJMP OSIntCtxSw_in
;-------------------------------------------------------------------------
        CSEG AT 000BH    ;OSTickISR
        LJMP OSTickISR   ;使用定時器0
        RSEG ?PR?OSTickISR?OS_CPU_A

OSTickISR:        
        
        USING 0
        CLR  EA    ;先關中斷,以防中斷嵌套。
        PUSHALL
        LCALL _?OSIntEnter    ;監視中斷嵌套
              
	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   ;工作于系統態,無任務切換。
        RSEG ?PR?_?serial?OS_CPU_A
        
SerialISR:
        
        USING 0
        CLR  EA    ;先關中斷,以防中斷嵌套。
        PUSHALL
        LCALL _?OSIntEnter    ;監視中斷嵌套
        
	
        LCALL _?serial        
        LCALL _?OSIntExit
	SETB EA
        POPALL        
        RETI
;-------------------------------------------------------------------------
        END
;-------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区四区不卡在线| 亚洲电影欧美电影有声小说| 亚洲国产日韩在线一区模特 | 欧美午夜视频网站| 一区二区三区毛片| 欧美日韩日本视频| 国产一区日韩二区欧美三区| 亚洲人被黑人高潮完整版| 美女精品一区二区| 在线成人av影院| 国产毛片一区二区| 樱桃视频在线观看一区| 色综合天天天天做夜夜夜夜做| 中文字幕免费不卡| 欧美日韩国产综合草草| 国产精品888| 人禽交欧美网站| 综合激情成人伊人| 国产婷婷色一区二区三区四区 | 欧美在线观看视频在线| 亚洲美腿欧美偷拍| 欧美一区二区三区四区视频| 国产成人免费视频一区| 一色桃子久久精品亚洲| 欧美日本韩国一区二区三区视频 | 色综合久久综合| 久久精品国产亚洲aⅴ| 日韩理论片网站| 久久久国产精品麻豆| 欧美日本高清视频在线观看| 丰满亚洲少妇av| 蜜芽一区二区三区| 五月天婷婷综合| 日本一区二区三级电影在线观看| 91精品免费在线| 欧美综合久久久| 97精品视频在线观看自产线路二| 久久99久久久欧美国产| 亚洲国产经典视频| 国产欧美日韩精品a在线观看| 欧美精品日韩综合在线| 在线观看免费一区| 欧美三级视频在线| 国模无码大尺度一区二区三区| 日本欧美肥老太交大片| 国产欧美一区二区精品秋霞影院| 国产麻豆精品视频| 奇米影视一区二区三区| 久久激情五月激情| 国产成人亚洲精品青草天美| 亚洲大型综合色站| 精品亚洲国内自在自线福利| 日日摸夜夜添夜夜添国产精品| 日韩 欧美一区二区三区| 日韩av午夜在线观看| 国产高清亚洲一区| 黄色成人免费在线| 国产91高潮流白浆在线麻豆| 99re这里只有精品视频首页| 97超碰欧美中文字幕| 欧美日韩国产另类一区| 国产片一区二区| 一区二区三区高清| 日韩中文字幕麻豆| 国产成人精品综合在线观看| 在线观看精品一区| 久久精品视频网| 日本不卡一区二区| gogo大胆日本视频一区| 日韩一区二区电影在线| 亚洲男女一区二区三区| 国产精品99久久久久久宅男| 日本高清无吗v一区| 亚洲国产精品t66y| 国产一区二区三区在线看麻豆| 国产一区日韩二区欧美三区| 欧美日韩成人在线| 亚洲一区二区三区四区中文字幕| 国产美女久久久久| 日韩精品一区二区三区老鸭窝| 亚洲成av人片一区二区| 色哟哟国产精品免费观看| 欧美一区二区三区四区高清| 亚洲婷婷在线视频| 91色综合久久久久婷婷| 国产精品乱码妇女bbbb| 久久99精品网久久| 国产欧美日韩在线| 成人av在线播放网站| 中文字幕日本不卡| 国产一区在线观看麻豆| 色婷婷av一区| 亚洲人成人一区二区在线观看 | 欧美久久久久久蜜桃| 亚洲午夜久久久久中文字幕久| 色综合久久中文字幕| 亚洲一二三级电影| 亚洲精品一区二区三区蜜桃下载| 国产精品一区免费视频| 一区精品在线播放| 91精品国产入口| 成人综合激情网| 一区二区三区成人| 91精品婷婷国产综合久久性色 | 欧美性生活一区| 亚洲成人av资源| 久久久精品日韩欧美| 成人h精品动漫一区二区三区| 欧美国产精品久久| 91麻豆精品91久久久久久清纯| 丁香激情综合五月| 午夜久久久影院| 中文字幕av资源一区| 日韩欧美高清一区| 91原创在线视频| 国产伦精品一区二区三区视频青涩| 2023国产精华国产精品| 欧美日韩一区二区在线观看 | 在线观看中文字幕不卡| 高清shemale亚洲人妖| 麻豆成人综合网| 日韩国产欧美视频| 亚洲夂夂婷婷色拍ww47| 中文字幕不卡一区| 99re在线精品| 欧洲av一区二区嗯嗯嗯啊| 成人免费毛片高清视频| 成人国产一区二区三区精品| 亚洲一区二区av在线| 亚洲第一会所有码转帖| 亚洲主播在线播放| 五月天一区二区三区| 亚洲日韩欧美一区二区在线| 久久精品亚洲乱码伦伦中文 | 欧美欧美欧美欧美| 粗大黑人巨茎大战欧美成人| 豆国产96在线|亚洲| 99久久久久久| 国产精品亚洲午夜一区二区三区| 国产在线看一区| 经典三级一区二区| 国产精品一区二区三区乱码| 成人av电影免费在线播放| 色哟哟日韩精品| 精品国产91洋老外米糕| 欧美一区二区女人| 1000精品久久久久久久久| 亚洲一区精品在线| 紧缚捆绑精品一区二区| 菠萝蜜视频在线观看一区| 欧美三级在线播放| 日韩精品一区在线观看| 国产欧美一区在线| 亚洲二区在线观看| 亚洲国产视频直播| 91福利区一区二区三区| 国产精品成人免费| 久久www免费人成看片高清| 欧美日韩国产首页在线观看| 亚洲男帅同性gay1069| 91美女精品福利| 亚洲欧美日韩一区二区 | 91.com视频| 捆绑调教一区二区三区| 精品va天堂亚洲国产| 国产一区二区电影| 国产精品久久久久久久久果冻传媒| 国产一区二区中文字幕| 国产精品久久久久aaaa| 91丨porny丨蝌蚪视频| 午夜国产不卡在线观看视频| 日韩免费高清av| 91污在线观看| 日韩精品国产精品| 日本一二三不卡| 欧美高清视频不卡网| 国产成人免费在线视频| 亚洲一区在线观看免费| 亚洲国产精华液网站w| 欧美日韩久久久一区| 国产成人在线观看| 亚洲精品国产精品乱码不99| 日韩免费电影一区| 欧美性高清videossexo| 国产精品一区二区在线看| 夜色激情一区二区| 中文字幕一区二区三区不卡 | 波多野结衣中文字幕一区 | 午夜精品一区二区三区免费视频 | 国产日韩在线不卡| 精品粉嫩超白一线天av| 欧美日韩五月天| 在线精品视频免费播放| av成人免费在线| av电影天堂一区二区在线| 国产黄人亚洲片| 丁香婷婷深情五月亚洲| 国产成人av一区二区三区在线| 久久精品久久综合| 久久99精品国产91久久来源|