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

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

?? conf_tny.a51

?? 基于keil c51的rtos tiny源代碼(keil 7.05 version)
?? A51
?? 第 1 頁 / 共 2 頁
字號:
$NOMOD51
;------------------------------------------------------------------------------
;  This file is part of the RTX-51 TINY  Real-Time Operating System Package
;  Copyright KEIL ELEKTRONIK GmbH and Keil Software, Inc. 1991-2002
;  Version 2.01
;------------------------------------------------------------------------------
;  CONF_TNY.A51:  This code allows the configuration of the
;                 RTX-51 TINY Real-Time Operating System
;
;  Copy this file to your project folder and add the copy to your uVision2
;  project.  You can customize several parameters of RTX51 Tiny within this
;  configuration file.
;
;  If you use command line tools, translate this file with:
;
;     Ax51 CONF_TNY.A51
;
;  If you use command line tools, link the modified CONF_TNY.OBJ file to 
;  your application with:
;
;     Lx51 <your object file list>, CONF_TNY.OBJ <controls>
;
;------------------------------------------------------------------------------
;
;  RTX-51 TINY Hardware-Timer
;  ==========================
;
;  With the following EQU statements the initialization of the RTX-51 TINY
;  Hardware-Timer can be defined (RTX-51 TINY uses the 8051 Timer 0 for 
;  controlling RTX-51 software timers).
;
;  Define the register bank used for the timer interrupt.
INT_REGBANK	EQU	1	; default is Registerbank 1
;
;  Define Hardware-Timer tick time in 8051 machine cycles.
INT_CLOCK	EQU	10000	; default is 10000 cycles
;
;  Define Round-Robin Timeout in Hardware-Timer ticks.
TIMESHARING	EQU     0	; default is 5 Hardware-Timer ticks.
;		                ; 0 disables Round-Robin Task Switching
;
;  Long User Interrupt Routines: set to 1 if your application contains 
;  user interrupt functions that may take longer than a hardware timer 
;  interval for execution.
LONG_USR_INTR	EQU	0	; 0 user interrupts execute fast.
;                               ; 1 user interrupts take long execution times.
;
;
;------------------------------------------------------------------------------
;
;  USER CODE FOR 8051 HARDWARE TIMER INTERRUPT
;  ===========================================
;
;  The following macro defines the code executed on a hardware timer interrupt.
;
;  Define instructions executed on a hardware timer interrupt.
HW_TIMER_CODE	MACRO
				; Empty Macro by default
		RETI
		ENDM
;
;
;------------------------------------------------------------------------------
;
;  CODE BANKING SUPPORT
;  ====================
;
;  The following EQU statement controls the code banking support for RTX51 TINY.
;
;  Enable or disable code banking support
CODE_BANKING     EQU     0      ; 0 (default) application uses no code banking
;                               ; 1 application uses code banking
;
;------------------------------------------------------------------------------
;
;  RTX-51 TINY Stack Space
;  =======================
;
;  The following EQU statements defines the size of the internal RAM used
;  for stack area and the minimum free space on the stack.  A macro defines
;  the code executed when there is there is not enough free stack on the
;  CPU stack.
;
;  Define the highest RAM address used for CPU stack
RAMTOP		EQU	0FFH	; default is address (256-1)
;
FREE_STACK	EQU	20	; default is 20 bytes free space on stack
;                               ; the value 0 disables stack checking
;
STACK_ERROR	MACRO
		CLR	EA	; disable interrupts
		SJMP	$	; endless loop if stack space is exhausted
		ENDM
;
;
;------------------------------------------------------------------------------
;
;  8051 CPU IDLE CODE
;  ==================
;
;  Many 8051 devices provide an IDLE MODE that reduces power consumption and
;  EMC.  The following macro defines the code executed when there is no 
;  ready task in the system.  The code must set the CPU into an IDLE MODE
;  that stops instruction execution until an 8051 hardware interrupt occurs. 
;

; Disable or Enable CPU_IDLE CODE
CPU_IDLE_CODE   EQU     1       ; 0  CPU_IDLE MACRO is not inserted
                                ; 1  CPU_IDLE MACRO is executed

PCON            DATA    087H    ; Power Control SFR on most 8051 devices

; Stop CPU execution until hardware interrupt; executed when there is no 
; active task in the system. 
CPU_IDLE	MACRO
		ORL	PCON,#1	; set 8051 CPU to IDLE
		ENDM
;
;
;------------------------------------------------------------------------------
;----------------- !!! End of User Configuration Part    !!! ------------------
;----------------- !!! Do not modify code sections below !!! ------------------
;------------------------------------------------------------------------------

; SFR Symbols
PSW     DATA    0D0H
ACC     DATA    0E0H
B       DATA    0F0H
SP      DATA    81H
DPL     DATA    82H
DPH     DATA    83H
TCON    DATA    88H
TMOD    DATA    89H
TL0     DATA    8AH
TL1     DATA    8BH
TH0     DATA    8CH
TH1     DATA    8DH
IE      DATA    0A8H

; TCON
TF1     BIT     8FH
TR1     BIT     8EH
TF0     BIT     8DH
TR0     BIT     8CH
IE1     BIT     8BH
IT1     BIT     8AH
IE0     BIT     89H
IT0     BIT     88H
; IE 
EA      BIT     0AFH
ES      BIT     0ACH
ET1     BIT     0ABH
EX1     BIT     0AAH
ET0     BIT     0A9H
EX0     BIT     0A8H

; Check Configuration Values


		NAME	?RTX51_TINY_KERNAL

PUBLIC	?RTX_CURRENTTASK 
PUBLIC	?RTX_RAMTOP
PUBLIC  os_switch_task
PUBLIC  ?RTX?SET_ISR

EXTRN	NUMBER (?RTX_MAXTASKN)		; max Task Number

?RTX_RAMTOP       EQU   RAMTOP
?RTX_CLOCK	  EQU	-INT_CLOCK

?RTX_REGISTERBANK EQU	INT_REGBANK * 8
		  DSEG	AT    ?RTX_REGISTERBANK
		  DS	2     ; temporary space
?RTX_SAVEACC:     DS	1
saveacc		  EQU	R2    ; for access in interrupt service routine
?RTX_SAVEPSW:     DS	1
savepsw		  EQU	R3    ; for access in interrupt service routine
?RTX_CURRENTTASK: DS	1
currenttask       EQU	R4    ; for access in interrupt service routine

IF (TIMESHARING <> 0)
?RTX_ROBINTIME:   DS	1
robintime	  EQU	R5    ; for access in interrupt service routine
ENDIF

IF (CODE_BANKING <> 0)
EXTRN	DATA	(?B_CURRENTBANK)
EXTRN   CODE    (?B_RESTORE_BANK)
ENDIF


;------------------------------------------------
; Table of Task Entry Pointers
;------------------------------------------------
PUBLIC	?RTX_TASKENTRY

?RTX?TASKENT?S  SEGMENT CODE
		RSEG	?RTX?TASKENT?S
?RTX_TASKENTRY:	DS	2

;------------------------------------------------
; Table of Stack Pointers for each task
;------------------------------------------------
PUBLIC	?RTX_TASKSP

?RTX?TASKSP?S   SEGMENT	IDATA
		RSEG	?RTX?TASKSP?S
?RTX_TASKSP:	DS	1

;------------------------------------------------
; Table of Task Timer/State Pointers
;------------------------------------------------
PUBLIC	?RTX_TASKSTATUS

?RTX?TASKSTATE?S  SEGMENT IDATA
		  RSEG	  ?RTX?TASKSTATE?S
?RTX_TASKSTATUS:
TimerVal:	DS	1	; Task Timer (Software Timer for each task)
TaskState:	DS	1       ; Task Status (state of each Task)

; Definitions for Bits in Task State
;  TaskState.0  = Wait for Signal
;  TaskState.1  = Wait for TimeOut
;  TaskState.2  = Signal Flag
;  TaskState.3  = TimeOut Flag
;  TaskState.4  = Task Ready (Wait for Running)
;  TaskState.5  = Task Active (enabled with os_create)
;  TaskState.6  = Round Robin Time Out
;  TaskState.7  = Run Flag

; byte mask definitions
K_SIG	        EQU	1
K_TMO	        EQU	2
SIG_EVENT	EQU	4
TMO_EVENT	EQU	8
K_READY		EQU	16
K_ACTIVE	EQU	32
K_ROBIN		EQU	64
K_IVL           EQU     128  ; not a task state bit; only used in os_wait
RDY_EVENT       EQU     128  ; READY status flag
K_RDY           EQU     128  ; READY status flag

; bit position definitions
B_WAITSIG	EQU	0
B_WAITTIM	EQU	1
B_SIGNAL	EQU	2
B_TIMEOUT	EQU	3
B_READY		EQU	4
B_ACTIVE	EQU	5
B_ROBIN		EQU	6
B_IVL           EQU     7    ; not a task state bit; only used in os_wait
B_RDY           EQU     7


IF (TIMESHARING OR CPU_IDLE_CODE)
?RTX?BITS	SEGMENT	BIT
		RSEG	?RTX?BITS
ENDIF

IF (TIMESHARING)
?RTX_TS_DELAY:	DBIT	1       ; Status bit set when task switch in progress
ENDIF

IF (CPU_IDLE_CODE)
?RTX_ISR_SIG:	DBIT	1	; Status bit set when interrupt or os_set_signal
ENDIF


		CSEG	AT	0BH
                JMP	TIMERINT

?RTX?CODE       SEGMENT CODE
                RSEG	?RTX?CODE
		USING	0		; Registerbank 0 for following code

IF (FREE_STACK <> 0)
?RTX_STACKERROR:
                STACK_ERROR             ; User defined Stack Error Code
ENDIF

HW_TIMER:	HW_TIMER_CODE

TIMERINT:

IF (LONG_USR_INTR)
		PUSH	ACC
		MOV	A,PSW
		ANL	A,#018H
		XRL	A,#?RTX_REGISTERBANK
		JNZ	CONT_TIMINT
; avoid recursive timer interrupt
		POP	ACC
		RETI		; Return from Recursive Timer Interrupt
CONT_TIMINT:    POP	ACC

ENDIF

		CALL	HW_TIMER	; Enable Interrupts again.

		MOV	?RTX_SAVEPSW,PSW
		MOV	PSW,#?RTX_REGISTERBANK
		MOV	saveacc,A
; Update 8051 Interrupt Timer
		CLR	TR0
		MOV	A,TL0
		ADD	A,#LOW (?RTX_CLOCK + 7)
		MOV	TL0,A
		MOV	A,TH0
		ADDC	A,#HIGH (?RTX_CLOCK + 7)
		MOV	TH0,A
		SETB	TR0

IF (FREE_STACK <> 0)
; Check if enough free stack is available
		MOV	A,currenttask
		ADD	A,#?RTX?TASKSP?S+1
		MOV	R0,A
		MOV	A,@R0
		CJNE	currenttask,#?RTX_MAXTASKN,checkstack
		MOV	A,#RAMTOP
checkstack:	CLR	C
		SUBB	A,SP
		CJNE	A,#FREE_STACK,$+3
		JC	?RTX_STACKERROR
ENDIF

; Update & Check Task Timers
		MOV	R1,#?RTX_MAXTASKN+1
		MOV	R0,#?RTX?TASKSTATE?S
TIMERLOOP:	DEC	@R0          ; Decrement timer
		MOV	A,@R0
		INC	R0           ; advance to TaskState
		JNZ	NoTimeout
		CLR	EA
		MOV	A,@R0
		JNB	ACC.B_WAITTIM,NoWaitTimeout
		ORL	A,#(K_READY+TMO_EVENT)
		MOV	@R0,A
NoWaitTimeout:  SETB	EA
NoTimeout:	INC	R0           ; advance to TaskTimer
		DJNZ	R1,TIMERLOOP

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
7777精品久久久大香线蕉| 中文字幕不卡一区| 国产精品久久久久国产精品日日| 亚洲色图欧美激情| 久久99精品网久久| 欧美在线观看视频在线| 久久久www免费人成精品| 亚洲第一成年网| 成人福利视频网站| 久久你懂得1024| 另类综合日韩欧美亚洲| 777欧美精品| 亚洲一区二区视频在线观看| 成人黄色免费短视频| 欧美精品一区二区三区在线播放| 亚洲自拍欧美精品| 91在线国内视频| 国产精品短视频| 成人激情视频网站| 国产网红主播福利一区二区| 美国欧美日韩国产在线播放| 欧美日韩亚洲综合在线| 亚洲蜜臀av乱码久久精品蜜桃| 国产激情视频一区二区在线观看| 欧美电视剧免费全集观看| 亚洲成人中文在线| 欧美日韩免费观看一区二区三区| 亚洲欧洲综合另类| 91丝袜国产在线播放| 国产精品国产三级国产有无不卡| 国产成人av影院| 久久精品在这里| 成人小视频免费在线观看| 久久久国产精品午夜一区ai换脸| 国产精品影视在线观看| 国产清纯白嫩初高生在线观看91 | 国产综合一区二区| 精品国产一区二区三区久久久蜜月 | 白白色亚洲国产精品| 国产欧美日韩视频在线观看| 国产一区高清在线| 久久久国产午夜精品 | 色综合天天综合网天天狠天天| 亚洲天堂成人网| 色诱亚洲精品久久久久久| 一区二区三区四区不卡在线| 欧美在线观看视频一区二区三区| 亚洲五月六月丁香激情| 欧美精品第1页| 久久99九九99精品| 欧美激情艳妇裸体舞| 在线中文字幕一区二区| 日本在线不卡视频| 久久亚洲一区二区三区四区| 成人va在线观看| 亚洲国产成人va在线观看天堂| 91精品欧美福利在线观看| 国产麻豆精品theporn| 国产精品久久久久久久久搜平片| 91激情五月电影| 日本最新不卡在线| 国产欧美综合在线观看第十页| 一本色道久久综合狠狠躁的推荐| 日韩av一区二| 国产精品系列在线| 欧美精品在线一区二区三区| 国产精品一区二区三区99| 亚洲精品成a人| 日韩精品一区二区三区四区视频| 99在线精品一区二区三区| 午夜国产精品一区| 亚洲一区日韩精品中文字幕| 久久一日本道色综合| 欧美在线free| 国产成人精品免费网站| 日韩中文字幕区一区有砖一区 | 成人av在线资源网站| 亚洲大片免费看| 欧美激情一区二区在线| 91精品国产色综合久久ai换脸 | 国产精品一区二区黑丝| 亚洲一区二区三区四区在线观看 | 一本色道综合亚洲| 国产在线精品一区二区| 亚洲福利电影网| 国产精品剧情在线亚洲| 精品久久久久久久久久久院品网| 在线中文字幕一区二区| 成人爱爱电影网址| 国产自产视频一区二区三区| 亚洲成年人影院| 亚洲美女免费视频| 中文字幕+乱码+中文字幕一区| 欧美成人一区二区三区在线观看| 欧美综合亚洲图片综合区| 成人免费看的视频| 韩国v欧美v日本v亚洲v| 蜜桃视频免费观看一区| 视频一区二区欧美| 一区二区不卡在线视频 午夜欧美不卡在 | 国产一区二区三区四区五区美女| 日韩精品欧美精品| 亚洲第一激情av| 亚洲成人av中文| 亚洲永久精品国产| 亚洲最大成人网4388xx| 亚洲九九爱视频| 一区二区三区电影在线播| 亚洲男人天堂一区| 一区二区三区丝袜| 夜夜嗨av一区二区三区网页| 自拍偷拍亚洲激情| 成人免费一区二区三区在线观看| 国产精品久久三区| 日韩毛片视频在线看| 亚洲欧洲性图库| 亚洲色欲色欲www在线观看| 国产精品欧美一区二区三区| 国产精品入口麻豆原神| 国产精品超碰97尤物18| 中文字幕在线不卡视频| 亚洲人123区| 亚洲午夜免费电影| 日韩精品1区2区3区| 精一区二区三区| 国产jizzjizz一区二区| 7777女厕盗摄久久久| 欧美日韩国产小视频在线观看| 欧美日韩在线不卡| 欧美一区二区三区精品| 精品粉嫩超白一线天av| 国产亚洲va综合人人澡精品| 中文av一区二区| 亚洲另类色综合网站| 日韩影院精彩在线| 精品影视av免费| 成人精品一区二区三区中文字幕| av一区二区久久| 欧美午夜精品久久久久久超碰| 91精品国产欧美一区二区18| 国产午夜精品福利| 一区二区三区在线高清| 麻豆精品视频在线| 成人午夜视频免费看| 欧美怡红院视频| 久久综合九色综合97婷婷女人| 国产精品色哟哟网站| 天使萌一区二区三区免费观看| 激情综合色综合久久综合| a亚洲天堂av| 日韩一级视频免费观看在线| 中文字幕永久在线不卡| 午夜视黄欧洲亚洲| 国产91精品一区二区麻豆网站| 欧美在线短视频| 国产午夜精品久久| 日韩高清一区在线| 99久久er热在这里只有精品15| 51精品久久久久久久蜜臀| 国产精品久久久久久福利一牛影视| 午夜电影一区二区三区| 99国产精品久久久| 精品福利av导航| 视频一区二区中文字幕| 成人免费观看视频| 日韩欧美国产麻豆| 亚洲主播在线观看| 成人免费av在线| 精品国产伦一区二区三区免费 | 中文字幕亚洲在| 国产成人精品www牛牛影视| 欧美嫩在线观看| 亚洲精品视频在线| 福利一区在线观看| 日韩美女视频一区二区在线观看| 又紧又大又爽精品一区二区| 国产成人精品影视| 精品国产乱码久久| 秋霞电影网一区二区| 欧美日韩在线观看一区二区 | 欧美无砖砖区免费| 亚洲三级在线播放| 大尺度一区二区| 久久久夜色精品亚洲| 久久国产精品99久久久久久老狼 | 丝袜美腿亚洲一区| 在线看国产日韩| 亚洲四区在线观看| 成人av先锋影音| 中文字幕乱码久久午夜不卡| 国产乱色国产精品免费视频| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 精品久久久久香蕉网| 日韩国产高清影视| 7777女厕盗摄久久久| 秋霞av亚洲一区二区三| 日韩精品一区二区三区四区视频 | 精品国产精品一区二区夜夜嗨| 日本成人中文字幕在线视频| 在线电影一区二区三区|