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

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

?? os_cpu_a.asm

?? ucos v2.62 安裝程序 附帶已移植到C8051F020的UCOS源碼
?? ASM
字號:


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


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

        EXTRN IDATA (OSTCBCur)
        EXTRN IDATA (OSTCBHighRdy)
        EXTRN IDATA (OSRunning)
        EXTRN IDATA (OSPrioCur)
        EXTRN IDATA (OSPrioHighRdy)
    
        EXTRN CODE  (_?OSTaskSwHook)
        EXTRN CODE  (_?OSIntEnter)
        EXTRN CODE  (_?OSIntExit)
        EXTRN CODE  (_?OSTimeTick)        
		
            
;對外聲明4個不可重入函數
        PUBLIC OSStartHighRdy
        PUBLIC OSCtxSw
        PUBLIC OSIntCtxSw
        PUBLIC OSTickISR
        
    
;分配堆棧空間。只關心大小,堆棧起點由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

OSCtxSw_in:
    
        ;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
    
        ;*UserStkPtr ===> R5  用戶堆棧起始地址內容(即用戶堆棧長度放在此處)  詳見文檔說明  指針用法詳見C51.PDF第178頁    
        MOVX A,@DPTR     ;用戶堆棧中是unsigned char類型數據
        MOV  R5,A        ;R5=用戶堆棧長度
    
        ;恢復現場堆棧內容
        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位
    
        ;OSRunning=TRUE
        MOV  R0,#LOW (OSRunning)
        MOV  @R0,#01
    
        POPALL
        SETB EA    ;開中斷
		mov p2,#000h

        RETI
;-------------------------------------------------------------------------
        RSEG ?PR?OSCtxSw?OS_CPU_A
OSCtxSw:    
        PUSHALL
    
OSIntCtxSw_in:
    
        ;獲得堆棧長度和起址
        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
        
        ;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:

        ;調整SP指針去掉在調用OSIntExit(),OSIntCtxSw()過程中壓入堆棧的多余內容
        ;SP=SP-4

        MOV  A,SP
        CLR  C
        SUBB A,#4
        MOV  SP,A
        
        LJMP OSIntCtxSw_in
;-------------------------------------------------------------------------

CSEG  AT 000BH
mov p2,#0ffh
	LJMP OSTickISR
	RSEG ?PR?OSTickISR?OS_CPU_A

OSTickISR:
	USING 0
	CLR   TR0
 	MOV   TH0,    #00H
	MOV   TL0,    #00H
	SETB  TR0
	PUSHALL
	LCALL _?OSIntEnter
	LCALL _?OSTimeTick
	LCALL _?OSIntExit
	POPALL
	mov p2,#00h

	RETI
;-------------------------------------------------------------------------

;-------------------------------------------------------------------------
        END
;-------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲自拍偷拍| 精品毛片乱码1区2区3区| 在线免费精品视频| 欧美亚洲一区三区| 日韩免费一区二区三区在线播放| 在线一区二区三区做爰视频网站| 欧美高清性hdvideosex| 久久精品视频一区二区| 亚洲女人****多毛耸耸8| 日韩福利电影在线| 国产成人一区二区精品非洲| 国产成人精品免费看| 欧美中文字幕一区二区三区 | 国产夫妻精品视频| 一本到不卡精品视频在线观看| 69久久99精品久久久久婷婷 | 国产精品福利一区二区| 天堂久久久久va久久久久| 日韩av电影免费观看高清完整版在线观看| 国精产品一区一区三区mba桃花| 色综合久久88色综合天天| 日韩亚洲国产中文字幕欧美| 最新欧美精品一区二区三区| 亚洲综合色视频| 岛国精品在线观看| 日韩欧美一级二级三级| 亚洲香肠在线观看| 成人av先锋影音| 精品国产电影一区二区| 亚洲永久免费av| 成人污视频在线观看| 日韩欧美国产1| 日韩av一级片| 欧美视频精品在线| 国产亚洲精品bt天堂精选| 日韩av高清在线观看| 91福利在线导航| 国产精品久久精品日日| 国产精品主播直播| 色噜噜狠狠成人网p站| 亚洲国产经典视频| 国产伦精品一区二区三区免费| 4438x成人网最大色成网站| 亚洲一区二区av在线| 成人永久免费视频| 欧美一区二区三区免费观看视频| 亚洲国产精品精华液网站| 色综合久久久久久久久| 国产精品精品国产色婷婷| 国产成人午夜电影网| 精品sm在线观看| 亚洲蜜桃精久久久久久久| 91啪在线观看| 亚洲欧美一区二区三区孕妇| 99精品热视频| 亚洲精品午夜久久久| 日本久久一区二区三区| 一区二区三区在线看| 欧美三片在线视频观看| 午夜影院在线观看欧美| 欧美日韩激情在线| 男女男精品网站| 91精品国产福利在线观看 | 久久久亚洲精品石原莉奈| 久久99久国产精品黄毛片色诱| 91精品国产综合久久久久久久| 午夜久久福利影院| 欧美一区二区成人| 国产最新精品免费| 国产精品国产三级国产有无不卡| 国产一区日韩二区欧美三区| 国产欧美一区二区精品秋霞影院| 99久久精品国产麻豆演员表| 亚洲国产高清不卡| 色8久久精品久久久久久蜜| 三级亚洲高清视频| 久久免费视频一区| 国内成人自拍视频| 日韩一区在线看| 欧美久久久一区| 国产大片一区二区| 亚洲激情六月丁香| 日韩一区二区电影| 成人综合激情网| 天堂一区二区在线| 欧美一区二区三区影视| 国产一区二区导航在线播放| 中文字幕亚洲欧美在线不卡| 欧美三级电影精品| 国产激情91久久精品导航| 亚洲一本大道在线| 久久久国产综合精品女国产盗摄| 97精品久久久午夜一区二区三区| 日韩在线卡一卡二| 国产精品成人免费| 日韩精品在线一区二区| 国产美女久久久久| 亚洲美女偷拍久久| 久久免费的精品国产v∧| 欧美午夜不卡视频| 成人免费视频免费观看| 一区二区在线观看视频在线观看| 欧美成va人片在线观看| 在线观看精品一区| 狠狠v欧美v日韩v亚洲ⅴ| 一个色综合网站| 久久精品欧美一区二区三区不卡| 欧美日韩视频不卡| 国产成人av一区二区三区在线观看| 日韩精品一区二区三区在线观看| 99久久精品情趣| 97精品久久久久中文字幕| 91麻豆精品一区二区三区| 成人av电影在线观看| www.日韩精品| 91网站在线观看视频| 91麻豆免费看| 欧美日韩视频在线一区二区 | av不卡在线播放| 99热99精品| 欧美亚洲动漫另类| 欧美日韩电影在线播放| 欧美丰满嫩嫩电影| 日韩三级.com| 久久视频一区二区| 国产欧美精品在线观看| 亚洲丝袜精品丝袜在线| 亚洲精品国产第一综合99久久| 一级特黄大欧美久久久| 日韩精品一级二级| 国产精品99久久久久久有的能看| 成人免费视频视频在线观看免费 | 一区二区三区四区乱视频| 亚洲在线观看免费视频| 日产欧产美韩系列久久99| 国产在线精品一区二区夜色 | 中文字幕一区二区5566日韩| 亚洲蜜臀av乱码久久精品 | 亚洲观看高清完整版在线观看| 亚洲成人1区2区| 国产在线一区二区综合免费视频| 不卡一区中文字幕| 欧美日韩国产高清一区二区 | 国产成人啪免费观看软件| 成人av免费在线观看| 欧美视频一区二| 久久久久久久久久久久久女国产乱 | 九九在线精品视频| 99精品视频一区二区| 51久久夜色精品国产麻豆| 欧美国产精品v| 亚洲高清一区二区三区| 丁香一区二区三区| 欧美精选在线播放| 国产精品全国免费观看高清| 日韩精品亚洲一区| 成人国产精品免费观看动漫| 欧美一区二区三区免费观看视频| 国产精品乱码人人做人人爱 | 日韩一本二本av| 亚洲精品乱码久久久久久| 久久电影网站中文字幕| 色老汉一区二区三区| 国产欧美一区二区三区在线老狼| 亚洲国产一区二区三区| 成人午夜又粗又硬又大| 6080午夜不卡| 亚洲黄色性网站| 国产丶欧美丶日本不卡视频| 宅男在线国产精品| 亚洲精品中文字幕在线观看| 狠狠色狠狠色综合日日91app| 欧美日韩你懂的| 亚洲美女在线一区| 成人性生交大合| 久久在线免费观看| 青青草一区二区三区| 在线观看国产精品网站| 国产精品三级在线观看| 国内外精品视频| 91精品国产综合久久香蕉的特点| 天天综合天天综合色| 91视视频在线观看入口直接观看www | 99久久精品免费| 国产精品污www在线观看| 国产精品夜夜嗨| 精品国产一区二区三区不卡| 日韩黄色免费电影| 69av一区二区三区| 天堂久久久久va久久久久| 在线中文字幕一区二区| 一区二区三区自拍| 一本大道久久a久久综合 | 久久众筹精品私拍模特| 日产国产高清一区二区三区| 欧美精品777| 石原莉奈一区二区三区在线观看 | 国产.精品.日韩.另类.中文.在线.播放| 日韩欧美另类在线| 久久99精品国产麻豆婷婷|