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

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

?? os_cpu_a.asm

?? C51下uc/osii的一個完整的LCD項目源碼
?? ASM
字號:
;/*
;*********************************************************************************************************
;*                                               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
        
    
;分配堆棧空間。只關心大小,堆棧起點由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一区二区三区免费野_久草精品视频
日韩精品国产精品| 久久精品人人做人人综合 | 久久草av在线| 91网站在线观看视频| 91精品国产色综合久久不卡蜜臀| 中文字幕精品一区二区精品绿巨人 | 欧美日韩综合一区| 国产欧美一区二区精品秋霞影院 | 国产精品久久久久三级| 蜜桃av噜噜一区| 在线中文字幕一区二区| 国产精品久久久一区麻豆最新章节| 日韩一区精品字幕| 91国偷自产一区二区三区成为亚洲经典 | 久久久精品2019中文字幕之3| 久久精品国产精品亚洲综合| 在线观看视频一区二区| 国产精品三级av| 国产成人精品三级| 欧美一区二区三区小说| 亚洲在线视频网站| 国产欧美日韩卡一| 91福利国产成人精品照片| 精品午夜久久福利影院| 欧美精品v日韩精品v韩国精品v| 国产精品乱子久久久久| 日韩精品久久理论片| 久久久精品黄色| 在线观看亚洲一区| 色天使久久综合网天天| 7777精品伊人久久久大香线蕉| 91精品国产综合久久精品图片 | 欧洲一区在线观看| 欧美妇女性影城| 久久国产夜色精品鲁鲁99| 国产精品日韩成人| 精品卡一卡二卡三卡四在线| 91婷婷韩国欧美一区二区| 国产精品区一区二区三区| 欧美日韩在线三级| av高清久久久| 一本大道综合伊人精品热热| 欧美日韩一区 二区 三区 久久精品| 国产精品18久久久久久久久| 日韩精品中文字幕一区二区三区 | 97久久久精品综合88久久| 国产欧美日韩精品在线| 丁香五精品蜜臀久久久久99网站| 久久久综合视频| 成人在线一区二区三区| 亚洲视频免费在线观看| 欧美性大战久久久久久久蜜臀| 亚洲第一成人在线| 日韩欧美在线不卡| 国产成人免费在线观看| 国产精品久久久久三级| 色哟哟欧美精品| 水蜜桃久久夜色精品一区的特点 | 色天使色偷偷av一区二区| 亚洲综合清纯丝袜自拍| 欧美日韩激情在线| 精品制服美女久久| 国产精品三级久久久久三级| 91豆麻精品91久久久久久| 免费观看30秒视频久久| 亚洲国产精品成人久久综合一区| 91麻豆福利精品推荐| 日韩高清一级片| 欧美精彩视频一区二区三区| 91玉足脚交白嫩脚丫在线播放| 亚洲午夜久久久久久久久久久 | 日日嗨av一区二区三区四区| 日韩精品一区二区三区视频在线观看 | 国产成人在线网站| 亚洲一区二区高清| 日韩视频免费直播| 不卡av电影在线播放| 日韩av在线播放中文字幕| 国产欧美一区二区三区鸳鸯浴| 欧美α欧美αv大片| 波多野结衣在线aⅴ中文字幕不卡| 亚洲在线观看免费| 欧美激情一区在线观看| 91精品国产高清一区二区三区| 国产成人av福利| 日韩福利视频导航| 亚洲精品一二三| 久久精品亚洲麻豆av一区二区| 欧美丝袜自拍制服另类| 99久久久精品免费观看国产蜜| 美美哒免费高清在线观看视频一区二区| 国产精品久久看| 久久久久久久久久看片| 91精品欧美久久久久久动漫 | 国内成人免费视频| 亚洲国产精品影院| 自拍偷拍欧美激情| 国产日韩欧美不卡| 久久综合精品国产一区二区三区 | 亚洲一区中文在线| 亚洲国产高清在线| 国产亚洲精品超碰| 精品成人一区二区三区四区| 欧美男男青年gay1069videost| 色狠狠桃花综合| 91视频免费播放| 不卡视频一二三| 成人午夜激情片| 国产成a人亚洲精品| 国产激情精品久久久第一区二区| 蜜桃久久久久久| 婷婷久久综合九色综合伊人色| 亚洲精品国产a| 一区二区在线免费| 亚洲欧美激情插| 一区二区三区色| 一区二区三区免费在线观看| 亚洲欧美偷拍卡通变态| 亚洲人成网站在线| 亚洲人被黑人高潮完整版| 亚洲欧美日本韩国| 亚洲自拍与偷拍| 天天综合日日夜夜精品| 奇米影视一区二区三区小说| 日韩电影在线一区二区三区| 蜜桃视频免费观看一区| 狠狠色狠狠色合久久伊人| 韩国精品免费视频| 国产成人精品一区二区三区网站观看| 国产一区二区在线免费观看| 国产盗摄一区二区| av在线一区二区| 欧美亚洲综合网| 这里只有精品视频在线观看| 欧美xfplay| 国产精品久久久久久久久免费桃花 | 久久久久久久久久久久久女国产乱| 婷婷开心激情综合| 欧美午夜一区二区三区免费大片| 亚洲成人免费电影| 欧美一级二级三级乱码| 国产精品综合一区二区三区| 国产精品系列在线| 精品国产亚洲在线| 欧美亚男人的天堂| 91女神在线视频| 国产福利视频一区二区三区| 韩国av一区二区三区四区| 热久久久久久久| 日产国产欧美视频一区精品| 五月天一区二区| 午夜精品影院在线观看| 夜夜夜精品看看| 亚洲精品日日夜夜| 一区二区三区四区视频精品免费 | 99久免费精品视频在线观看| 韩国欧美国产1区| 国精品**一区二区三区在线蜜桃| 日本欧美久久久久免费播放网| 日韩av中文字幕一区二区三区| 视频一区二区三区入口| 婷婷久久综合九色综合绿巨人| 午夜av一区二区三区| 婷婷综合另类小说色区| 日韩激情一区二区| 麻豆91小视频| 韩国视频一区二区| 国产不卡在线一区| 色综合久久中文字幕综合网| 色综合色狠狠天天综合色| 欧美专区日韩专区| 欧美人狂配大交3d怪物一区| 精品美女在线观看| 中文字幕av一区 二区| 中文字幕制服丝袜成人av| 亚洲一区二区三区影院| 老司机精品视频在线| 国产麻豆视频一区二区| 91在线视频免费观看| 欧美区在线观看| 2023国产精品视频| 伊人开心综合网| 捆绑变态av一区二区三区| 国产成人精品亚洲午夜麻豆| 91蝌蚪porny| 日韩欧美黄色影院| 国产精品视频第一区| 亚洲一二三专区| 国产在线国偷精品产拍免费yy | 亚洲mv在线观看| 极品少妇一区二区三区精品视频| 国产精品456| 欧美片在线播放| 中文字幕在线观看一区| 日韩vs国产vs欧美| 972aa.com艺术欧美| 精品欧美久久久| 欧美三级电影网| 国产午夜精品一区二区三区四区 | 国产精品剧情在线亚洲|