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

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

?? kernel.s

?? AVR單片機(jī)C語言程序設(shè)計(jì)實(shí)例精粹
?? S
字號:
	.module Kernel.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任務(wù)模擬系統(tǒng)設(shè)計(jì)\Kernel.c
	.dbfunc e OS_Event_Pend _OS_Event_Pend fi
;     wTaskEvent -> R20,R21
;      bTaskPrio -> R16
	.even
_OS_Event_Pend::
	xcall push_gset1
	.dbline -1
	.dbline 29
; //******************************************************************************
; // File Name : main.c
; // Author    : Steaven
; // Created   : 2008-06-09
; // Modified  : 
; // Revision  : V0.0
; //******************************************************************************
; 
; #include "App.h"
; 
; //Task Control Block structure
; typedef struct
; {
; 	INT16U wTimerPeriod;
; 	INT16U wTimerCount;
; 	INT16U wEvent;
; }OS_TCB;
; 
; //structure array definition
; OS_TCB OSTCB[cMaxTask];
; 
; //******************************************************************************
; // Function    : OS_Event_Pend
; // Input       : wTaskPrio - priority of task
; // Output      : event of task
; // Description : Inquiry event of task indexed by priority and then clear it
; //******************************************************************************
; INT16U OS_Event_Pend(INT8U bTaskPrio)
; {
	.dbline 31
; 	INT16U wTaskEvent;
; 	wTaskEvent = OSTCB[bTaskPrio].wEvent;
	ldi R24,6
	mul R24,R16
	movw R30,R0
	ldi R24,<_OSTCB+4
	ldi R25,>_OSTCB+4
	add R30,R24
	adc R31,R25
	ldd R20,z+0
	ldd R21,z+1
	.dbline 32
; 	OSTCB[bTaskPrio].wEvent &= ~wTaskEvent;
	ldi R24,6
	mul R24,R16
	movw R2,R0
	ldi R24,<_OSTCB+4
	ldi R25,>_OSTCB+4
	add R2,R24
	adc R3,R25
	movw R4,R20
	com R4
	com R5
	movw R30,R2
	ldd R6,z+0
	ldd R7,z+1
	and R6,R4
	and R7,R5
	std z+1,R7
	std z+0,R6
	.dbline 33
; 	return(wTaskEvent);
	movw R16,R20
	.dbline -2
L2:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r wTaskEvent 20 i
	.dbsym r bTaskPrio 16 c
	.dbend
	.dbfunc e OS_Event_Post _OS_Event_Post fV
;     wTaskEvent -> R20,R21
;      bTaskPrio -> R22
	.even
_OS_Event_Post::
	xcall push_gset2
	movw R20,R18
	mov R22,R16
	.dbline -1
	.dbline 44
; }
; 
; //******************************************************************************
; // Function    : OSEventSend
; // Input       : wTaskPrio - priority of task
; //               wTaskEvent - event to be sent                 
; // Output      : none
; // Description : Send an event to task indexed by priority
; //******************************************************************************
; void OS_Event_Post(INT8U bTaskPrio,INT16U wTaskEvent)
; {
	.dbline 45
; 	OSTCB[bTaskPrio].wEvent |= (1 << wTaskEvent);
	ldi R24,6
	mul R24,R22
	movw R2,R0
	ldi R24,<_OSTCB+4
	ldi R25,>_OSTCB+4
	add R2,R24
	adc R3,R25
	ldi R16,1
	ldi R17,0
	movw R18,R20
	xcall lsl16
	movw R30,R2
	ldd R4,z+0
	ldd R5,z+1
	or R4,R16
	or R5,R17
	std z+1,R5
	std z+0,R4
	.dbline -2
	.dbline 46
; }
L5:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r wTaskEvent 20 i
	.dbsym r bTaskPrio 22 c
	.dbend
	.dbfunc e OS_Task_Create _OS_Task_Create fV
;   wTimerPeriod -> R18,R19
;      bTaskPrio -> R16
	.even
_OS_Task_Create::
	.dbline -1
	.dbline 56
; 
; //******************************************************************************
; // Function    : OS_Task_Create
; // Input       : wTaskPrio - priority of task
; //               wTimerPeriod - period of task
; // Output      : none
; // Description : Set time period of a task to create it
; //******************************************************************************
; void OS_Task_Create(INT8U bTaskPrio,INT16U wTimerPeriod)
; {
	.dbline 57
; 	OSTCB[bTaskPrio].wTimerPeriod = wTimerPeriod;
	ldi R24,6
	mul R24,R16
	movw R30,R0
	ldi R24,<_OSTCB
	ldi R25,>_OSTCB
	add R30,R24
	adc R31,R25
	std z+1,R19
	std z+0,R18
	.dbline -2
	.dbline 58
; }
L7:
	.dbline 0 ; func end
	ret
	.dbsym r wTimerPeriod 18 i
	.dbsym r bTaskPrio 16 c
	.dbend
	.dbfunc e OS_Task_Init _OS_Task_Init fV
;    wTimerCount -> R18,R19
;      bTaskPrio -> R16
	.even
_OS_Task_Init::
	.dbline -1
	.dbline 68
; 
; //******************************************************************************
; // Function    : OS_Task_Start
; // Input       : wTaskPrio - priority of task
; //               wTimerCount - Initial time count of a task
; // Output      : none
; // Description : Set initial time count of a task
; //******************************************************************************
; void OS_Task_Init(INT8U bTaskPrio,INT16U wTimerCount)
; {
	.dbline 69
; 	OSTCB[bTaskPrio].wTimerCount = wTimerCount;
	ldi R24,6
	mul R24,R16
	movw R30,R0
	ldi R24,<_OSTCB+2
	ldi R25,>_OSTCB+2
	add R30,R24
	adc R31,R25
	std z+1,R19
	std z+0,R18
	.dbline -2
	.dbline 70
; }
L8:
	.dbline 0 ; func end
	ret
	.dbsym r wTimerCount 18 i
	.dbsym r bTaskPrio 16 c
	.dbend
	.dbfunc e OS_Task_Switch _OS_Task_Switch fi
;          bTemp -> R20
;      bTaskPrio -> R16
	.even
_OS_Task_Switch::
	xcall push_gset1
	.dbline -1
	.dbline 80
; 
; //******************************************************************************
; // Function    : OS_Task_Switch
; // Input       : wTaskPrio - priority of task
; // Output      : none
; // Description : inquiry the task in ready status.if there's no ready task with
; //               priority higher than current one,the task would run
; //******************************************************************************
; INT16U OS_Task_Switch(INT8U bTaskPrio)
; {
	.dbline 82
; 	INT8U bTemp;
; 	for(bTemp = 0;bTemp < bTaskPrio;bTemp++)
	clr R20
	xjmp L14
L11:
	.dbline 83
; 	{
	.dbline 84
; 		if(OSTCB[bTemp].wEvent != 0)
	ldi R24,6
	mul R24,R20
	movw R30,R0
	ldi R24,<_OSTCB+4
	ldi R25,>_OSTCB+4
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	tst R2
	brne X0
	tst R3
	breq L15
X0:
	.dbline 85
; 		{
	.dbline 86
; 			return(true);
	ldi R16,1
	ldi R17,0
	xjmp L10
L15:
	.dbline 88
L12:
	.dbline 82
	inc R20
L14:
	.dbline 82
	cp R20,R16
	brlo L11
	.dbline 89
; 		}
; 	}
; 	return(false);
	clr R16
	clr R17
	.dbline -2
L10:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r bTemp 20 c
	.dbsym r bTaskPrio 16 c
	.dbend
	.dbfunc e OS_Task_Update _OS_Task_Update fV
;          bTemp -> R20
	.even
_OS_Task_Update::
	xcall push_gset1
	.dbline -1
	.dbline 100
; }
; 
; //******************************************************************************
; // Function    : OS_Task_Update
; // Input       : none
; // Output      : none
; // Description : increase timercount of all tasks in each SYS clock ISR.if task
; //               is timeout,Kernel send a timer event to the task
; //******************************************************************************
; void OS_Task_Update(void)
; {
	.dbline 102
; 	INT8U bTemp;
; 	for(bTemp = 0;bTemp < cMaxTask;bTemp++)
	clr R20
	xjmp L22
L19:
	.dbline 103
; 	{
	.dbline 104
; 		OSTCB[bTemp].wTimerCount++;
	ldi R24,6
	mul R24,R20
	movw R2,R0
	ldi R24,<_OSTCB+2
	ldi R25,>_OSTCB+2
	add R2,R24
	adc R3,R25
	movw R30,R2
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,1
	std z+1,R25
	std z+0,R24
	.dbline 105
; 		if(OSTCB[bTemp].wTimerCount == OSTCB[bTemp].wTimerPeriod)
	ldi R24,6
	mul R24,R20
	ldi R24,<_OSTCB
	ldi R25,>_OSTCB
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	ldi R24,<_OSTCB+2
	ldi R25,>_OSTCB+2
	movw R30,R0
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	ldd R5,z+1
	cp R4,R2
	cpc R5,R3
	brne L24
	.dbline 106
; 		{
	.dbline 107
; 			OSTCB[bTemp].wTimerCount = 0;
	ldi R24,6
	mul R24,R20
	movw R30,R0
	ldi R24,<_OSTCB+2
	ldi R25,>_OSTCB+2
	add R30,R24
	adc R31,R25
	clr R2
	clr R3
	std z+1,R3
	std z+0,R2
	.dbline 108
; 			OS_Event_Post(bTemp,0);
	clr R18
	clr R19
	mov R16,R20
	xcall _OS_Event_Post
	.dbline 109
; 		}
L24:
	.dbline 110
L20:
	.dbline 102
	inc R20
L22:
	.dbline 102
	cpi R20,4
	brsh X1
	xjmp L19
X1:
	.dbline -2
	.dbline 111
; 	}
; }
L18:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r bTemp 20 c
	.dbend
	.dbfunc e OS_Init _OS_Init fV
;          bTemp -> R16
	.even
_OS_Init::
	.dbline -1
	.dbline 120
; 
; //******************************************************************************
; // Function    : OS_Init
; // Input       : none
; // Output      : none
; // Description : Initlization of TCBs
; //******************************************************************************
; void OS_Init(void)
; {
	.dbline 122
; 	INT8U bTemp;
; 	for(bTemp = 0;bTemp < cMaxTask;bTemp++)
	clr R16
	xjmp L32
L29:
	.dbline 123
	.dbline 124
	ldi R24,6
	mul R24,R16
	movw R30,R0
	ldi R24,<_OSTCB
	ldi R25,>_OSTCB
	add R30,R24
	adc R31,R25
	clr R2
	clr R3
	std z+1,R3
	std z+0,R2
	.dbline 125
	ldi R24,6
	mul R24,R16
	movw R30,R0
	ldi R24,<_OSTCB+2
	ldi R25,>_OSTCB+2
	add R30,R24
	adc R31,R25
	std z+1,R3
	std z+0,R2
	.dbline 126
	ldi R24,6
	mul R24,R16
	movw R30,R0
	ldi R24,<_OSTCB+4
	ldi R25,>_OSTCB+4
	add R30,R24
	adc R31,R25
	std z+1,R3
	std z+0,R2
	.dbline 127
L30:
	.dbline 122
	inc R16
L32:
	.dbline 122
	cpi R16,4
	brlo L29
	.dbline -2
	.dbline 128
; 	{
; 		OSTCB[bTemp].wTimerPeriod = 0;
; 		OSTCB[bTemp].wTimerCount = 0;
; 		OSTCB[bTemp].wEvent = 0;
; 	}
; }
L28:
	.dbline 0 ; func end
	ret
	.dbsym r bTemp 16 c
	.dbend
	.dbfunc e OS_Start _OS_Start fV
	.even
_OS_Start::
	.dbline -1
	.dbline 137
; 
; //******************************************************************************
; // Function    : OS_Start
; // Input       : none
; // Output      : none
; // Description : Initlization of tasks and Start Kernel
; //******************************************************************************
; void OS_Start(void)
; {
	.dbline 138
; 	Task_Init();
	xcall _Task_Init
	.dbline 139
; 	Task_Start();
	.dbline -2
	.dbline 140
; }
L35:
	.dbline 0 ; func end
	xjmp _Task_Start
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\多任務(wù)模擬系統(tǒng)設(shè)計(jì)\Kernel.c
_OSTCB::
	.blkb 24
	.dbsym e OSTCB _OSTCB A[24:4]X

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕成人av| 久久亚洲私人国产精品va媚药| 亚洲国产aⅴ成人精品无吗| 色综合久久综合网| 亚洲欧美日韩电影| 欧洲精品视频在线观看| 亚洲国产日韩av| 这里只有精品99re| 久久99精品久久久| 久久嫩草精品久久久精品一| 粉嫩av一区二区三区| 亚洲视频网在线直播| 在线观看成人小视频| 婷婷六月综合网| 2024国产精品| 99r精品视频| 视频一区二区三区中文字幕| 欧美videossexotv100| 成人免费视频caoporn| 一区二区三区在线视频播放| 欧美日韩欧美一区二区| 国产一本一道久久香蕉| 亚洲欧洲日韩av| 91精品国产一区二区三区| 国产一区二区91| 亚洲精品久久久蜜桃| 精品三级av在线| 日本韩国一区二区| 精品一区二区三区免费毛片爱 | 欧美一a一片一级一片| 免费欧美日韩国产三级电影| 国产免费成人在线视频| 欧美少妇xxx| 国产麻豆成人传媒免费观看| 亚洲影院理伦片| 亚洲精品一区在线观看| 色综合久久久网| 韩国欧美一区二区| 一区二区三区鲁丝不卡| 久久久五月婷婷| 91精选在线观看| 99视频有精品| 激情伊人五月天久久综合| 亚洲一区二区三区四区在线免费观看 | 欧美日韩国产天堂| 国产成a人无v码亚洲福利| 日本欧美在线看| 一区二区成人在线视频| 欧美极品少妇xxxxⅹ高跟鞋 | 在线成人小视频| 成人精品视频一区二区三区| 日本不卡中文字幕| 亚洲自拍偷拍av| 中文字幕制服丝袜成人av| 精品乱码亚洲一区二区不卡| 精品视频一区三区九区| 一本大道综合伊人精品热热| 国产精品一卡二卡| 麻豆精品视频在线观看视频| 午夜激情久久久| 一区二区高清视频在线观看| 国产精品久久久一区麻豆最新章节| 欧美sm美女调教| 91精品国产免费| 91福利精品视频| 色综合天天综合在线视频| 成人精品小蝌蚪| 国产精品白丝jk白祙喷水网站| 蓝色福利精品导航| 喷水一区二区三区| 捆绑调教一区二区三区| 日韩专区欧美专区| 天涯成人国产亚洲精品一区av| 一个色综合av| 亚洲精品国产高清久久伦理二区| 中文字幕视频一区| 亚洲天堂2016| 一区二区三区不卡视频在线观看| 亚洲欧洲综合另类| 一区二区欧美精品| 亚洲一区二区视频在线观看| 亚洲成人你懂的| 日本亚洲视频在线| 久久精品国产在热久久| 精品亚洲成av人在线观看| 狠狠色丁香婷婷综合| 狠狠色综合色综合网络| 国产精品一卡二卡在线观看| 成人蜜臀av电影| 91啪在线观看| 欧美年轻男男videosbes| 国产欧美日韩综合| 国产欧美精品国产国产专区| 国产精品高潮呻吟久久| 亚洲午夜电影网| 亚洲一级在线观看| 日本aⅴ免费视频一区二区三区| 日韩成人伦理电影在线观看| 精品无码三级在线观看视频| 国产一区二区中文字幕| 成人福利电影精品一区二区在线观看| av一二三不卡影片| 欧美午夜电影网| 欧美电影免费观看高清完整版| 久久久国产午夜精品| 亚洲欧洲日产国产综合网| 亚洲成人综合网站| 国产永久精品大片wwwapp | 91猫先生在线| 欧美精品久久一区二区三区| 久久夜色精品国产噜噜av| 国产精品看片你懂得| 午夜精品视频在线观看| 国模套图日韩精品一区二区| 成人动漫一区二区在线| 91精品国产综合久久福利| 国产精品视频第一区| 亚洲成人免费观看| 风间由美中文字幕在线看视频国产欧美| 91视频国产资源| 亚洲国产成人高清精品| 国内精品免费**视频| 91久久免费观看| 久久亚洲一级片| 亚洲777理论| proumb性欧美在线观看| 欧美一区三区四区| 日韩一区日韩二区| 老司机一区二区| 91久久精品日日躁夜夜躁欧美| 精品久久久久久久一区二区蜜臀| 中文字幕在线不卡一区| 国产麻豆精品在线观看| 欧美日韩一区精品| 中文字幕一区视频| 精品午夜久久福利影院| 精品视频免费在线| 亚洲日本青草视频在线怡红院| 蜜桃av噜噜一区| 欧美中文字幕一区| 国产精品色婷婷| 久久精品99国产精品日本| 欧美在线观看视频一区二区三区| 国产网红主播福利一区二区| 日本在线不卡视频一二三区| 91麻豆免费在线观看| 国产午夜精品美女毛片视频| 免费成人av在线| 欧美三级在线视频| 亚洲精品久久嫩草网站秘色| 成人性视频免费网站| 精品国产污污免费网站入口 | 精品伦理精品一区| 免费成人av在线| 欧美福利电影网| 亚洲国产精品一区二区久久恐怖片| 国产成人午夜精品5599| 欧美成人伊人久久综合网| 日本三级亚洲精品| 8x8x8国产精品| 视频一区欧美精品| 欧美一区二区视频网站| 亚洲成a人v欧美综合天堂| 91成人在线精品| 一卡二卡欧美日韩| 一本一道综合狠狠老| 亚洲免费观看高清完整版在线观看| 成人国产精品免费| 中文字幕中文字幕一区二区| 高清免费成人av| 国产精品大尺度| 色综合视频在线观看| 亚洲一区二区三区影院| 777奇米成人网| 久久精品久久综合| 久久久久久久久久久久久女国产乱| 国产精品自拍网站| 国产精品网站在线观看| 91在线播放网址| 亚洲国产日产av| 精品久久人人做人人爰| 国产不卡在线播放| 亚洲激情五月婷婷| 欧美伦理电影网| 麻豆91免费观看| 久久久久久久久久久久久久久99 | 99re66热这里只有精品3直播| 国产精品久久久久三级| 欧洲av一区二区嗯嗯嗯啊| 午夜伊人狠狠久久| 日韩欧美国产精品一区| 久久99精品国产麻豆不卡| 国产精品毛片久久久久久久| www.爱久久.com| 丝袜美腿高跟呻吟高潮一区| 精品毛片乱码1区2区3区| 99久久国产综合精品麻豆| 日韩中文字幕区一区有砖一区| 精品国产91亚洲一区二区三区婷婷 | 日韩影视精彩在线|