⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_core.lst

📁 给出一个简单操作系统在AVR中应用实例
💻 LST
📖 第 1 页 / 共 2 页
字号:
 236 00a0 8093 0000 		sts OS_TASK_HighPri,r24
 237               	/* epilogue: frame size=0 */
 238 00a4 0895      		ret
 239               	/* epilogue end (size=1) */
 240               	/* function OSTimeTick size 22 (21) */
 245               	.global	OSSched
 247               	OSSched:
  67:C:/WinAVR/minOS_WinAVR/OS_Core.c **** }
  68:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 
  69:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #if OS_TIME_DLY_EN
  70:C:/WinAVR/minOS_WinAVR/OS_Core.c **** //OS Time Delay --- 使任务延时Tdly个时间节拍
  71:C:/WinAVR/minOS_WinAVR/OS_Core.c **** void OSTimeDly(INT16U Tdly)               /* Delay Tdly clock tick */
  72:C:/WinAVR/minOS_WinAVR/OS_Core.c **** {
  73:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	OSTCB[OS_TASK_CrtPrio].OSTimeDly=Tdly+OS_TASK_TimeOut;
  74:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	OSTCB[OS_TASK_CrtPrio].OSTaskStatus=OS_TASK_WaitTicks;
  75:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	OSSched();
  76:C:/WinAVR/minOS_WinAVR/OS_Core.c **** }
  77:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #endif
  78:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 
  79:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #if OS_TASK_SUSPEND_EN>0
  80:C:/WinAVR/minOS_WinAVR/OS_Core.c **** //把正在运行的任务挂起(Suspend a task)。
  81:C:/WinAVR/minOS_WinAVR/OS_Core.c **** void OSTaskSuspend(INT8U TaskPrio) 
  82:C:/WinAVR/minOS_WinAVR/OS_Core.c **** {
  83:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	OSTCB[OS_TASK_CrtPrio].OSTaskStatus=OS_TASK_Rdy;
  84:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	OSTCB[TaskPrio].OSTaskStatus=OS_TASK_Suspend;
  85:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	OSTCB[TaskPrio].OSTimeDly=OS_TASK_TimeOut;
  86:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	OSSched();
  87:C:/WinAVR/minOS_WinAVR/OS_Core.c **** }
  88:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #endif
  89:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 
  90:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #if OS_TASK_Resume_EN>0
  91:C:/WinAVR/minOS_WinAVR/OS_Core.c **** // 恢复被挂起的任务(resume a task)。
  92:C:/WinAVR/minOS_WinAVR/OS_Core.c **** void OSTaskResume(INT8U TaskPrio) 
  93:C:/WinAVR/minOS_WinAVR/OS_Core.c **** {
  94:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	OSTCB[TaskPrio].OSTaskStatus=OS_TASK_Rdy;
  95:C:/WinAVR/minOS_WinAVR/OS_Core.c **** }
  96:C:/WinAVR/minOS_WinAVR/OS_Core.c **** #endif
  97:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 
  98:C:/WinAVR/minOS_WinAVR/OS_Core.c **** //任务调度,把CPU控制权转到优先级最高的处于就绪态的任务。如果没有处于就绪态的任务,就地等待,
  99:C:/WinAVR/minOS_WinAVR/OS_Core.c **** void OSSched(void) 
 100:C:/WinAVR/minOS_WinAVR/OS_Core.c **** {
 249               	.LM26:
 250               	/* prologue: frame size=0 */
 251               	/* prologue end (size=0) */
 252               	.L29:
 101:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	do
 102:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	{
 103:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 		OS_TASK_HighPri=OSPrioHighRdy();
 254               	.LM27:
 255 00a6 C4DF      		rcall OSPrioHighRdy
 256 00a8 8093 0000 		sts OS_TASK_HighPri,r24
 104:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	} while (OS_TASK_HighPri==no_TASK_Rdy);
 258               	.LM28:
 259 00ac 8F3F      		cpi r24,lo8(-1)
 260 00ae D9F3      		breq .L29
 105:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	OSTCB[OS_TASK_HighPri].OSTaskStatus=OS_TASK_Run;
 262               	.LM29:
 263 00b0 9927      		clr r25
 264 00b2 F92F      		mov r31,r25
 265 00b4 E82F      		mov r30,r24
 266 00b6 EE0F      		lsl r30
 267 00b8 FF1F      		rol r31
 268 00ba EE0F      		lsl r30
 269 00bc FF1F      		rol r31
 270 00be E80F      		add r30,r24
 271 00c0 F91F      		adc r31,r25
 272 00c2 E050      		subi r30,lo8(-(OSTCB))
 273 00c4 F040      		sbci r31,hi8(-(OSTCB))
 274 00c6 8BEF      		ldi r24,lo8(-5)
 275 00c8 8283      		std Z+2,r24
 106:C:/WinAVR/minOS_WinAVR/OS_Core.c **** 	OS_TASK_INT();
 277               	.LM30:
 278 00ca 00D0      		rcall OSCtxSw
 279               	/* epilogue: frame size=0 */
 280 00cc 0895      		ret
 281               	/* epilogue end (size=1) */
 282               	/* function OSSched size 20 (19) */
 286               	.global	OSTimeDly
 288               	OSTimeDly:
 290               	.LM31:
 291               	/* prologue: frame size=0 */
 292               	/* prologue end (size=0) */
 294               	.LM32:
 295 00ce 2091 0000 		lds r18,OS_TASK_CrtPrio
 296 00d2 3327      		clr r19
 297 00d4 F32F      		mov r31,r19
 298 00d6 E22F      		mov r30,r18
 299 00d8 EE0F      		lsl r30
 300 00da FF1F      		rol r31
 301 00dc EE0F      		lsl r30
 302 00de FF1F      		rol r31
 303 00e0 E20F      		add r30,r18
 304 00e2 F31F      		adc r31,r19
 305 00e4 E050      		subi r30,lo8(-(OSTCB))
 306 00e6 F040      		sbci r31,hi8(-(OSTCB))
 307 00e8 8383      		std Z+3,r24
 308 00ea 9483      		std Z+4,r25
 310               	.LM33:
 311 00ec 8AEF      		ldi r24,lo8(-6)
 312 00ee 8283      		std Z+2,r24
 314               	.LM34:
 315 00f0 DADF      		rcall OSSched
 316               	/* epilogue: frame size=0 */
 317 00f2 0895      		ret
 318               	/* epilogue end (size=1) */
 319               	/* function OSTimeDly size 19 (18) */
 323               	.global	OSTaskSuspend
 325               	OSTaskSuspend:
 327               	.LM35:
 328               	/* prologue: frame size=0 */
 329               	/* prologue end (size=0) */
 331               	.LM36:
 332 00f4 9091 0000 		lds r25,OS_TASK_CrtPrio
 333 00f8 292F      		mov r18,r25
 334 00fa 3327      		clr r19
 335 00fc 40E0      		ldi r20,lo8(OSTCB)
 336 00fe 50E0      		ldi r21,hi8(OSTCB)
 337 0100 F32F      		mov r31,r19
 338 0102 E22F      		mov r30,r18
 339 0104 EE0F      		lsl r30
 340 0106 FF1F      		rol r31
 341 0108 EE0F      		lsl r30
 342 010a FF1F      		rol r31
 343 010c E20F      		add r30,r18
 344 010e F31F      		adc r31,r19
 345 0110 E40F      		add r30,r20
 346 0112 F51F      		adc r31,r21
 347 0114 9CEF      		ldi r25,lo8(-4)
 348 0116 9283      		std Z+2,r25
 350               	.LM37:
 351 0118 9927      		clr r25
 352 011a F92F      		mov r31,r25
 353 011c E82F      		mov r30,r24
 354 011e EE0F      		lsl r30
 355 0120 FF1F      		rol r31
 356 0122 EE0F      		lsl r30
 357 0124 FF1F      		rol r31
 358 0126 E80F      		add r30,r24
 359 0128 F91F      		adc r31,r25
 360 012a E40F      		add r30,r20
 361 012c F51F      		adc r31,r21
 362 012e 8DEF      		ldi r24,lo8(-3)
 363 0130 8283      		std Z+2,r24
 365               	.LM38:
 366 0132 1382      		std Z+3,__zero_reg__
 367 0134 1482      		std Z+4,__zero_reg__
 369               	.LM39:
 370 0136 B7DF      		rcall OSSched
 371               	/* epilogue: frame size=0 */
 372 0138 0895      		ret
 373               	/* epilogue end (size=1) */
 374               	/* function OSTaskSuspend size 35 (34) */
 378               	.global	OSTaskResume
 380               	OSTaskResume:
 382               	.LM40:
 383               	/* prologue: frame size=0 */
 384               	/* prologue end (size=0) */
 386               	.LM41:
 387 013a 9927      		clr r25
 388 013c F92F      		mov r31,r25
 389 013e E82F      		mov r30,r24
 390 0140 EE0F      		lsl r30
 391 0142 FF1F      		rol r31
 392 0144 EE0F      		lsl r30
 393 0146 FF1F      		rol r31
 394 0148 E80F      		add r30,r24
 395 014a F91F      		adc r31,r25
 396 014c E050      		subi r30,lo8(-(OSTCB))
 397 014e F040      		sbci r31,hi8(-(OSTCB))
 398 0150 8CEF      		ldi r24,lo8(-4)
 399 0152 8283      		std Z+2,r24
 400               	/* epilogue: frame size=0 */
 401 0154 0895      		ret
 402               	/* epilogue end (size=1) */
 403               	/* function OSTaskResume size 14 (13) */
 405               		.comm OS_TASK_CrtPrio,1,1
 406               		.comm OS_TASK_HighPri,1,1
 407               		.comm OSTCB,25,1
 408               		.comm TASK_main_PrioStk,64,1
 413               		.text
 415               	Letext:
 416               	/* File "C:/WinAVR/minOS_WinAVR/OS_Core.c": code  171 = 0x00ab ( 163), prologues   0, epilogues   8
DEFINED SYMBOLS
                            *ABS*:00000000 OS_Core.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
C:\WINDOWS\TEMP/ccx8Tigb.s:66     .text:00000000 OSInit
                            *COM*:00000019 OSTCB
C:\WINDOWS\TEMP/ccx8Tigb.s:105    .text:0000001c OSStart
                            *COM*:00000001 OS_TASK_CrtPrio
                            *COM*:00000001 OS_TASK_HighPri
C:\WINDOWS\TEMP/ccx8Tigb.s:133    .text:00000030 OSPrioHighRdy
C:\WINDOWS\TEMP/ccx8Tigb.s:200    .text:0000007a OSTimeTick
C:\WINDOWS\TEMP/ccx8Tigb.s:247    .text:000000a6 OSSched
C:\WINDOWS\TEMP/ccx8Tigb.s:288    .text:000000ce OSTimeDly
C:\WINDOWS\TEMP/ccx8Tigb.s:325    .text:000000f4 OSTaskSuspend
C:\WINDOWS\TEMP/ccx8Tigb.s:380    .text:0000013a OSTaskResume
                            *COM*:00000040 TASK_main_PrioStk
C:\WINDOWS\TEMP/ccx8Tigb.s:415    .text:00000156 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
InitOSTimer
OSCtxSw

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -