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

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

?? os_cpu_a.asm

?? uC/OS-II在C51下的一個(gè)完整的LCD項(xiàng)目源碼。
?? ASM
字號(hào):
;/*
;*********************************************************************************************************
;*                                               uC/OS-II
;*                                               實(shí)時(shí)內(nèi)核
;*
;*                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
;*                                               版權(quán)所有
;*
;*                                            MCU-51 專用代碼
;*                                           KEIL C51大模式編譯
;*
;* 文件名 : OS_CPU_A.ASM
;* 作者   : Jean J. Labrosse
;*********************************************************************************************************
;*/

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

;不用此語(yǔ)句!!! $CASE    ;標(biāo)號(hà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
TR1	BIT		088H.6
TH1	DATA	08DH
TL1	DATA	08BH
TF2	BIT	0C8H.7

        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決定,通過標(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)榈酱颂庍€未開中斷,本程序退出后,開中斷。
        LCALL _?OSTaskSwHook

OSCtxSw_in:
    
        ;OSTCBCur ===> DPTR  獲得當(dāng)前TCB指針,詳見C51.PDF第178頁(yè)
        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)容(即用戶堆棧長(zhǎng)度放在此處)  詳見文檔說明  指針用法詳見C51.PDF第178頁(yè)    
        MOVX A,@DPTR     ;用戶堆棧中是unsigned char類型數(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    ;開中斷
        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指針,詳見C51.PDF第178頁(yè)
        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
        
        ;保存堆棧長(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()過程中壓入堆棧的多余內(nèi)容
        ;SP=SP-4

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

OSTickISR:        
        CLR  TF2
        USING 0        
        PUSHALL       

        LCALL _?OSIntEnter
        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        
        PUSHALL
        CLR  EA
        LCALL _?serial        
        SETB EA
        POPALL        
        RETI
;-------------------------------------------------------------------------
        END
;-------------------------------------------------------------------------

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区欧美日韩 | 久久久精品国产免大香伊| 国产成人精品亚洲777人妖| 一区二区三区蜜桃网| 免费在线视频一区| 国产精品色在线| 制服丝袜亚洲色图| 91蝌蚪porny九色| 国内精品视频一区二区三区八戒| 亚洲欧美一区二区三区孕妇| 久久亚洲私人国产精品va媚药| 日本伦理一区二区| 国产成人精品免费视频网站| 日本欧美肥老太交大片| 亚洲综合一二三区| 中文字幕亚洲区| 久久久www成人免费毛片麻豆 | 蜜臀精品一区二区三区在线观看 | 亚洲一区在线观看视频| 国产精品日日摸夜夜摸av| 欧美电影免费观看高清完整版在| 91成人在线精品| 99riav一区二区三区| 福利一区在线观看| 国产精品一色哟哟哟| 久久99国产精品久久99果冻传媒| 首页综合国产亚洲丝袜| 亚洲一区二区在线播放相泽| 亚洲欧洲日韩一区二区三区| 国产午夜精品在线观看| 精品久久久久久亚洲综合网 | 中文字幕精品一区| 国产色综合久久| 欧美精品一区二区在线观看| 日韩一级片在线播放| 亚洲免费高清视频在线| 欧美高清在线一区二区| 国产日韩视频一区二区三区| 久久亚区不卡日本| 精品1区2区在线观看| 日韩精品一区在线| 欧美mv日韩mv国产网站app| 欧美一二三区在线| 日韩一级精品视频在线观看| 日韩女优毛片在线| 欧美大片在线观看| 久久久综合精品| 国产亲近乱来精品视频 | 亚洲国产aⅴ成人精品无吗| 亚洲综合一区在线| 亚洲1区2区3区视频| 婷婷国产在线综合| 麻豆国产精品官网| 国产一区二区0| 成人精品国产一区二区4080| 99久久久精品免费观看国产蜜| eeuss鲁片一区二区三区在线看| 国产91色综合久久免费分享| a美女胸又www黄视频久久| 91免费小视频| 欧美久久久一区| 精品毛片乱码1区2区3区 | 国产欧美日韩麻豆91| 中文无字幕一区二区三区| 中文字幕中文字幕在线一区 | 91毛片在线观看| 欧美视频日韩视频在线观看| 91精品国产综合久久久久久久| 日韩欧美视频一区| 国产精品网站一区| 亚洲午夜一二三区视频| 久热成人在线视频| 成人精品一区二区三区中文字幕| 色综合久久久久网| 日韩欧美国产三级电影视频| 国产欧美日产一区| 亚洲成人在线网站| 国产精品一卡二| 色婷婷亚洲婷婷| 日韩视频一区二区在线观看| 国产精品网站导航| 免费成人性网站| 99视频国产精品| 日韩一区二区精品葵司在线| 国产精品久久久久久久久久久免费看| 亚洲一区二区三区国产| 国产精品一区二区在线观看不卡 | 精品国产一区二区国模嫣然| 亚洲欧洲精品一区二区三区| 日本伊人色综合网| 不卡一区二区在线| 日韩欧美中文字幕精品| 国产精品国产三级国产三级人妇| 石原莉奈一区二区三区在线观看| 成人性色生活片免费看爆迷你毛片| 欧美日韩一级片在线观看| 久久精品夜色噜噜亚洲a∨| 亚洲尤物视频在线| 成人黄色小视频在线观看| 欧美日韩高清一区二区不卡| 中文字幕欧美三区| 美国毛片一区二区三区| 91精品福利视频| 亚洲国产岛国毛片在线| 久久国产视频网| 欧美日韩精品一区二区| 综合中文字幕亚洲| 国产寡妇亲子伦一区二区| 7777女厕盗摄久久久| 亚洲精品乱码久久久久久黑人| 国产麻豆精品视频| 日韩三级视频中文字幕| 午夜精品久久久久久久99樱桃| 99热99精品| 国产欧美日韩一区二区三区在线观看| 日本午夜精品视频在线观看 | 国产亚洲va综合人人澡精品| 琪琪久久久久日韩精品| 日本丶国产丶欧美色综合| 国产精品蜜臀av| 国产成人精品亚洲午夜麻豆| 日韩一级二级三级精品视频| 手机精品视频在线观看| 欧美主播一区二区三区| 亚洲精品国产第一综合99久久| 高清日韩电视剧大全免费| 久久久久久久久久久久久久久99| 青青草97国产精品免费观看 | 中文字幕国产精品一区二区| 久国产精品韩国三级视频| 日韩一区二区在线播放| 天堂在线亚洲视频| 欧美福利视频一区| 亚洲一二三四区| 欧美日韩免费一区二区三区| 一区二区三区资源| 欧洲亚洲精品在线| 亚洲一区在线观看免费观看电影高清| 91久久精品一区二区三区| 亚洲精品乱码久久久久久| 在线免费一区三区| 亚洲成精国产精品女| 欧美另类高清zo欧美| 日本不卡在线视频| 日韩一区二区免费在线观看| 日韩av午夜在线观看| 欧美岛国在线观看| 国产麻豆一精品一av一免费| 国产欧美一区二区在线| 成人免费视频视频| 亚洲精品少妇30p| 欧美日韩三级一区| 男人的天堂久久精品| 久久久欧美精品sm网站| 国产a视频精品免费观看| 中文字幕一区二区三区四区| 日本丶国产丶欧美色综合| 天天操天天综合网| 欧美成人r级一区二区三区| 国产在线乱码一区二区三区| 国产欧美一区二区在线观看| 91麻豆精品一区二区三区| 亚洲二区在线观看| 欧美电视剧在线观看完整版| 丰满白嫩尤物一区二区| 一区二区三区不卡视频 | 精品国产乱码久久久久久1区2区 | 亚洲午夜免费视频| 日韩免费视频线观看| 国产福利一区二区| 亚洲精品成人a在线观看| 制服丝袜日韩国产| 国产成人精品亚洲777人妖| 亚洲精品久久嫩草网站秘色| 欧美一区二区网站| 成人性生交大合| 色偷偷久久人人79超碰人人澡| 亚洲香肠在线观看| 久久久www成人免费无遮挡大片| 91蜜桃婷婷狠狠久久综合9色| 日韩av不卡一区二区| 国产精品久久夜| 欧美二区乱c少妇| 成人av网在线| 麻豆一区二区三| 亚洲女性喷水在线观看一区| 555www色欧美视频| www.色综合.com| 老司机一区二区| 136国产福利精品导航| 欧美刺激午夜性久久久久久久| 99久久精品国产麻豆演员表| 蜜臀久久99精品久久久久久9| 亚洲精品自拍动漫在线| 久久久高清一区二区三区| 欧美日韩成人高清| 99re视频精品| 国产剧情一区在线| 日本在线不卡视频一二三区| 综合久久给合久久狠狠狠97色 |