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

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

?? os_cpu_a.asm.bak

?? C51下uc/osii的一個完整的LCD項目源碼
?? BAK
字號:
;/*
;*********************************************************************************************************
;*                                               uC/OS-II
;*                                               實時內核
;*
;*                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
;*                                               版權所有
;*
;*                                            MCU-51 專用代碼
;*                                           KEIL C51大模式編譯
;*
;* 文件名 : OS_CPU_A.ASM
;* 作者   : Jean J. Labrosse
;*********************************************************************************************************
;*/

;偽指令詳細用法請查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
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)        
		
            
;對外聲明4個不可重入函數
        PUBLIC OSStartHighRdy
        PUBLIC OSCtxSw
        PUBLIC OSIntCtxSw
        PUBLIC OSTickISR
        
    
;分配堆??臻g。只關心大小,堆棧起點由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    ;開中斷
        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 002BH    ;OSTickISR
        LJMP OSTickISR   ;使用定時器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   	;工作于系統態,無任務切換。
        RSEG ?PR?_?serial?OS_CPU_A
        
SerialISR:
        
        USING 0        
        PUSHALL
        CLR  EA
        LCALL _?serial        
        SETB EA
        POPALL        
        RETI
;-------------------------------------------------------------------------
        END
;-------------------------------------------------------------------------

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人欧美一区二区三区视频网页| 国产成人自拍高清视频在线免费播放| 色综合视频一区二区三区高清| xnxx国产精品| 国产99久久久久| 日韩毛片一二三区| 在线观看一区二区视频| 亚洲精品少妇30p| 欧美乱妇23p| 蜜乳av一区二区三区| 久久在线免费观看| 成人国产精品免费观看视频| 中文字幕五月欧美| 欧美私人免费视频| 免费一级片91| 欧美国产视频在线| 91香蕉视频黄| 蜜桃久久久久久久| 久久久不卡网国产精品一区| 成人在线综合网| 亚洲国产日韩一级| 精品国一区二区三区| 成人综合婷婷国产精品久久免费| 一区二区三区在线免费| 欧美亚洲国产怡红院影院| 男女性色大片免费观看一区二区| 久久亚洲私人国产精品va媚药| 成人免费视频app| 午夜影院在线观看欧美| 久久久久久久久久久黄色| 99精品国产91久久久久久| 五月天激情综合| 国产精品久久久久久妇女6080| 欧美偷拍一区二区| 国产一区二区三区在线看麻豆| 亚洲欧美综合在线精品| 欧美一区三区四区| 99免费精品视频| 久久精品久久99精品久久| 成人欧美一区二区三区在线播放| 欧美一区二区三区精品| 国产成人av福利| 国产精品国产精品国产专区不片| 欧美日韩一区小说| 日韩激情一区二区| www亚洲一区| 亚洲夂夂婷婷色拍ww47 | 亚洲国产日韩在线一区模特| 欧美羞羞免费网站| 欧美日韩精品欧美日韩精品一综合| 亚洲精品亚洲人成人网 | 337p粉嫩大胆噜噜噜噜噜91av | 蜜臀av一区二区在线免费观看 | 亚洲欧洲精品一区二区三区| 94-欧美-setu| 欧美国产日韩亚洲一区| 国产在线不卡一区| 国产精品三级在线观看| 精品一区二区影视| 欧美一区二区三区性视频| 国产精品中文有码| 午夜日韩在线观看| 中文字幕亚洲区| 日韩精品中文字幕一区二区三区| av网站一区二区三区| 午夜精品福利一区二区三区av | 欧美精品一区二区三区一线天视频 | 日韩av一区二| 欧美在线免费观看视频| 国产欧美在线观看一区| av在线不卡网| 精品国产一区二区三区av性色| 亚洲午夜久久久久| 欧美日本在线一区| 一本色道久久综合狠狠躁的推荐| 日韩女优电影在线观看| 亚洲成av人片一区二区三区| 成人三级伦理片| 国产午夜精品久久| 国产成人午夜片在线观看高清观看| 亚洲在线观看免费视频| 欧美一级黄色大片| 一区二区三区在线免费| 99国内精品久久| 国产精品中文字幕日韩精品| 欧美激情一区在线观看| 欧美日韩小视频| 亚洲精品国产成人久久av盗摄| 不卡一区二区中文字幕| 日韩精品高清不卡| 国产欧美va欧美不卡在线| 欧美军同video69gay| 精品一区二区三区免费毛片爱| 成人免费一区二区三区在线观看| 欧美一级理论片| 欧美日韩国产高清一区二区三区| av综合在线播放| 欧美伊人久久久久久午夜久久久久| 久久99精品久久久| 国产不卡在线播放| 91视频在线看| 在线日韩一区二区| 久久夜色精品一区| 一二三区精品福利视频| 欧美国产欧美综合| 一区二区三区四区av| 亚洲国产成人91porn| 国产一区二区三区观看| 91免费视频观看| 精品理论电影在线| 伊人色综合久久天天人手人婷| 亚洲电影一区二区| 国内外精品视频| 欧美日韩三级一区二区| 国产亚洲欧美一级| 男人的天堂亚洲一区| 蜜臀精品一区二区三区在线观看 | 日本中文字幕不卡| 91啪九色porn原创视频在线观看| 日韩精品一区二区三区老鸭窝| 伊人婷婷欧美激情| 91丨九色porny丨蝌蚪| 久久久另类综合| 日本伊人精品一区二区三区观看方式 | 亚洲第一激情av| 色婷婷av一区二区三区大白胸| 久久久精品免费网站| 狂野欧美性猛交blacked| 7777精品伊人久久久大香线蕉的 | 欧美一区二区三区影视| 日韩黄色免费电影| 91麻豆精品国产91久久久久久| 亚洲电影一级黄| 欧美日韩成人综合| 蜜桃久久av一区| 26uuu久久综合| 99热精品一区二区| 一区二区三区四区乱视频| 99久久精品99国产精品| 日韩一区日韩二区| 5858s免费视频成人| 另类小说欧美激情| 国产精品家庭影院| 3d动漫精品啪啪一区二区竹菊| 久久精品国产一区二区三| 国产欧美精品在线观看| 91女人视频在线观看| 午夜av区久久| 国产欧美精品一区| 欧美日韩在线观看一区二区| 美女视频免费一区| 亚洲日本韩国一区| 欧美精品 国产精品| 丁香激情综合五月| 日韩vs国产vs欧美| 国产精品国产三级国产普通话99 | 美国十次了思思久久精品导航| 国产亚洲成年网址在线观看| 欧美精选午夜久久久乱码6080| 国产综合成人久久大片91| 视频一区中文字幕| 尤物视频一区二区| 亚洲婷婷在线视频| 国产精品美女久久久久aⅴ | 亚洲国产毛片aaaaa无费看| 日韩欧美国产三级电影视频| 色婷婷激情一区二区三区| 成年人国产精品| 成人av网址在线观看| 国产一区二区免费视频| 久久国产人妖系列| 久久精品免费观看| 国产在线视频一区二区三区| 免费欧美高清视频| 日韩av不卡在线观看| 性感美女极品91精品| 亚洲永久免费av| 午夜成人在线视频| 美女一区二区三区| 国产成人午夜视频| 91国偷自产一区二区开放时间 | 4438x亚洲最大成人网| 欧美一区二区三区视频在线| 欧美成人在线直播| 国产精品国产精品国产专区不蜜| 日本一区二区三区dvd视频在线| 国产精品久久毛片a| 玉米视频成人免费看| 九九久久精品视频| 成人av在线电影| 欧美精品xxxxbbbb| 亚洲免费看黄网站| 日韩福利电影在线观看| 国产69精品一区二区亚洲孕妇| 91视频在线观看免费| 久久午夜国产精品| 日韩经典中文字幕一区| 色狠狠综合天天综合综合| 久久久国产精华| 亚洲成人综合视频|