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

📄 os.lst

📁 一个WSN的树状路由,对于那些学WSN路由方面的朋友应该有说帮助.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 120:os.c          **** void OSH_sleep(void)
 121:os.c          **** {
 347               	.LM56:
 348               	/* prologue: frame size=0 */
 349               	/* prologue end (size=0) */
 122:os.c          **** 	* (volatile unsigned char *)(0x35 + 0x20) |= 1 << 5;
 351               	.LM57:
 352 00b4 85B7      		in r24,85-0x20
 353 00b6 8062      		ori r24,lo8(32)
 354 00b8 85BF      		out 85-0x20,r24
 123:os.c          **** 	__asm volatile ("sleep");}
 356               	.LM58:
 357               	/* #APP */
 358 00ba 8895      		sleep
 359               	/* #NOAPP */
 360               	/* epilogue: frame size=0 */
 361 00bc 0895      		ret
 362               	/* epilogue end (size=1) */
 363               	/* function OSH_sleep size 6 (5) */
 367               	.global	AtomicEnd
 369               	AtomicEnd:
 124:os.c          **** 
 125:os.c          **** void  AtomicEnd(uint8_t oldSreg)
 126:os.c          **** {
 371               	.LM59:
 372               	/* prologue: frame size=0 */
 373               	/* prologue end (size=0) */
 127:os.c          **** 	* (volatile unsigned char *)(0x3F + 0x20) = oldSreg;
 375               	.LM60:
 376 00be 8FBF      		out 95-0x20,r24
 377               	/* epilogue: frame size=0 */
 378 00c0 0895      		ret
 379               	/* epilogue end (size=1) */
 380               	/* function AtomicEnd size 2 (1) */
 383               	.global	AtomicStart
 385               	AtomicStart:
 128:os.c          **** }
 129:os.c          **** 
 130:os.c          **** uint8_t  AtomicStart(void )
 131:os.c          **** {
 387               	.LM61:
 388               	/* prologue: frame size=0 */
 389               	/* prologue end (size=0) */
 132:os.c          **** 	uint8_t result = * (volatile unsigned char *)(0x3F + 0x20);
 391               	.LM62:
 392 00c2 8FB7      		in r24,95-0x20
 133:os.c          **** 	
 134:os.c          **** 	__asm volatile ("cli");
 394               	.LM63:
 395               	/* #APP */
 396 00c4 F894      		cli
 135:os.c          **** 	return result;
 136:os.c          **** }
 398               	.LM64:
 399               	/* #NOAPP */
 400 00c6 9927      		clr r25
 401               	/* epilogue: frame size=0 */
 402 00c8 0895      		ret
 403               	/* epilogue end (size=1) */
 404               	/* function AtomicStart size 5 (4) */
 408               	.global	OSHRunNextTask
 410               	OSHRunNextTask:
 137:os.c          **** 
 138:os.c          **** bool OSHRunNextTask(void)
 139:os.c          **** {
 412               	.LM65:
 413               	/* prologue: frame size=0 */
 414 00ca 0F93      		push r16
 415 00cc 1F93      		push r17
 416               	/* prologue end (size=2) */
 140:os.c          **** 	uint8_t fInterruptFlags;
 141:os.c          **** 	uint8_t old_full;
 142:os.c          **** 	void (*func)(void );
 143:os.c          **** 	
 144:os.c          **** 	if (OSH_sched_full == OSH_sched_free) {
 418               	.LM66:
 419 00ce 9091 0000 		lds r25,OSH_sched_full
 420 00d2 8091 0000 		lds r24,OSH_sched_free
 421 00d6 9817      		cp r25,r24
 422 00d8 19F4      		brne .L19
 145:os.c          **** 		
 146:os.c          **** 		return 0;
 424               	.LM67:
 425 00da 80E0      		ldi r24,lo8(0)
 426 00dc 90E0      		ldi r25,hi8(0)
 427 00de 19C0      		rjmp .L18
 428               	.L19:
 147:os.c          ****     }
 148:os.c          **** 	else {
 149:os.c          **** 		fInterruptFlags = AtomicStart();
 430               	.LM68:
 431 00e0 0E94 0000 		call AtomicStart
 150:os.c          **** 		old_full = OSH_sched_full;
 433               	.LM69:
 434 00e4 2091 0000 		lds r18,OSH_sched_full
 151:os.c          **** 		OSH_sched_full++;
 436               	.LM70:
 437 00e8 922F      		mov r25,r18
 438 00ea 9F5F      		subi r25,lo8(-(1))
 152:os.c          **** 		OSH_sched_full &= OSH_TASK_BITMASK;
 440               	.LM71:
 441 00ec 9F70      		andi r25,lo8(15)
 442 00ee 9093 0000 		sts OSH_sched_full,r25
 153:os.c          **** 		func = OSH_queue[(int )old_full].tp;
 444               	.LM72:
 445 00f2 E22F      		mov r30,r18
 446 00f4 FF27      		clr r31
 447 00f6 EE0F      		add r30,r30
 448 00f8 FF1F      		adc r31,r31
 449 00fa E050      		subi r30,lo8(-(OSH_queue))
 450 00fc F040      		sbci r31,hi8(-(OSH_queue))
 451 00fe 0081      		ld r16,Z
 452 0100 1181      		ldd r17,Z+1
 154:os.c          **** 		OSH_queue[(int )old_full].tp = 0;
 454               	.LM73:
 455 0102 1082      		st Z,__zero_reg__
 456 0104 1182      		std Z+1,__zero_reg__
 155:os.c          **** 		AtomicEnd(fInterruptFlags);
 458               	.LM74:
 459 0106 0E94 0000 		call AtomicEnd
 156:os.c          **** 		func();
 461               	.LM75:
 462 010a F801      		movw r30,r16
 463 010c 0995      		icall
 157:os.c          **** 		return 1;
 465               	.LM76:
 466 010e 81E0      		ldi r24,lo8(1)
 467 0110 90E0      		ldi r25,hi8(1)
 468               	.L18:
 469               	/* epilogue: frame size=0 */
 470 0112 1F91      		pop r17
 471 0114 0F91      		pop r16
 472 0116 0895      		ret
 473               	/* epilogue end (size=3) */
 474               	/* function OSHRunNextTask size 39 (34) */
 479               	.global	OSHRunTask
 481               	OSHRunTask:
 158:os.c          ****     }
 159:os.c          **** }
 160:os.c          **** 
 161:os.c          **** void OSHRunTask(void)
 162:os.c          **** {
 483               	.LM77:
 484               	/* prologue: frame size=0 */
 485               	/* prologue end (size=0) */
 486               	.L22:
 163:os.c          **** 	while (OSHRunNextTask()) 
 488               	.LM78:
 489 0118 0E94 0000 		call OSHRunNextTask
 490 011c 8823      		tst r24
 491 011e E1F7      		brne .L22
 164:os.c          **** 		;
 165:os.c          **** 	OSH_sleep();
 493               	.LM79:
 494 0120 0E94 0000 		call OSH_sleep
 166:os.c          **** 	OSH_wait();
 496               	.LM80:
 497 0124 0E94 0000 		call OSH_wait
 498               	/* epilogue: frame size=0 */
 499 0128 0895      		ret
 500               	/* epilogue end (size=1) */
 501               	/* function OSHRunTask size 9 (8) */
 505               	.global	OSPostTask
 507               	OSPostTask:
 167:os.c          **** }
 168:os.c          **** 
 169:os.c          **** bool  OSPostTask(void (*tp)(void))
 170:os.c          **** {
 509               	.LM81:
 510               	/* prologue: frame size=0 */
 511 012a 0F93      		push r16
 512 012c 1F93      		push r17
 513 012e CF93      		push r28
 514               	/* prologue end (size=3) */
 515 0130 8C01      		movw r16,r24
 171:os.c          **** 	uint8_t fInterruptFlags;
 172:os.c          **** 	uint8_t tmp;
 173:os.c          **** 	
 174:os.c          **** 	fInterruptFlags = AtomicStart();
 517               	.LM82:
 518 0132 0E94 0000 		call AtomicStart
 519 0136 282F      		mov r18,r24
 175:os.c          **** 	
 176:os.c          **** 	tmp = OSH_sched_free;
 521               	.LM83:
 522 0138 C091 0000 		lds r28,OSH_sched_free
 177:os.c          **** 	OSH_sched_free++;
 524               	.LM84:
 525 013c CF5F      		subi r28,lo8(-(1))
 178:os.c          **** 	OSH_sched_free &= OSH_TASK_BITMASK;
 527               	.LM85:
 528 013e 9C2F      		mov r25,r28
 529 0140 9F70      		andi r25,lo8(15)
 530 0142 C150      		subi r28,lo8(-(-1))
 531 0144 9093 0000 		sts OSH_sched_free,r25
 179:os.c          **** 	
 180:os.c          **** 	if (OSH_sched_free != OSH_sched_full) {
 533               	.LM86:
 534 0148 8091 0000 		lds r24,OSH_sched_full
 535 014c 9817      		cp r25,r24
 536 014e 71F0      		breq .L26
 181:os.c          **** 		AtomicEnd(fInterruptFlags);
 538               	.LM87:
 539 0150 822F      		mov r24,r18
 540 0152 0E94 0000 		call AtomicEnd
 182:os.c          **** 		
 183:os.c          **** 		OSH_queue[tmp].tp = tp;
 542               	.LM88:
 543 0156 EC2F      		mov r30,r28
 544 0158 FF27      		clr r31
 545 015a EE0F      		add r30,r30
 546 015c FF1F      		adc r31,r31
 547 015e E050      		subi r30,lo8(-(OSH_queue))
 548 0160 F040      		sbci r31,hi8(-(OSH_queue))
 549 0162 0083      		st Z,r16
 550 0164 1183      		std Z+1,r17
 184:os.c          **** 		return TRUE;
 552               	.LM89:
 553 0166 81E0      		ldi r24,lo8(1)
 554 0168 90E0      		ldi r25,hi8(1)
 555 016a 07C0      		rjmp .L25
 556               	.L26:
 185:os.c          ****     }
 186:os.c          **** 	else {
 187:os.c          **** 		OSH_sched_free = tmp;
 558               	.LM90:
 559 016c C093 0000 		sts OSH_sched_free,r28
 188:os.c          **** 		AtomicEnd(fInterruptFlags);
 561               	.LM91:
 562 0170 822F      		mov r24,r18
 563 0172 0E94 0000 		call AtomicEnd
 189:os.c          **** 		
 190:os.c          **** 		return FALSE;
 565               	.LM92:
 566 0176 80E0      		ldi r24,lo8(0)
 567 0178 90E0      		ldi r25,hi8(0)
 568               	.L25:
 569               	/* epilogue: frame size=0 */
 570 017a CF91      		pop r28
 571 017c 1F91      		pop r17
 572 017e 0F91      		pop r16
 573 0180 0895      		ret
 574               	/* epilogue end (size=4) */
 575               	/* function OSPostTask size 44 (37) */
 579               		.comm RecordPassed,30,1
 580               		.comm OSH_queue,32,1
 581               		.lcomm OSH_sched_full,1
 582               		.lcomm OSH_sched_free,1
 587               		.text
 589               	Letext:
 590               	/* File "os.c": code  206 = 0x00ce ( 183), prologues   5, epilogues  18 */
DEFINED SYMBOLS
                            *ABS*:00000000 os.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:86     .text:00000000 OSH_SET_PIN_DIRECTIONS
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:177    .text:0000006a MainHardwareInit
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:197    .text:00000074 OSSchedInit
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:581    .bss:00000001 OSH_sched_free
                             .bss:00000000 OSH_sched_full
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:217    .text:0000007e OSH_uwait
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:268    .text:0000009a MainStdControlInit
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:287    .text:000000a2 MainStdControlStart
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:306    .text:000000aa EnableInterrupt
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:324    .text:000000ae OSH_wait
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:345    .text:000000b4 OSH_sleep
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:369    .text:000000be AtomicEnd
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:385    .text:000000c2 AtomicStart
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:410    .text:000000ca OSHRunNextTask
                            *COM*:00000020 OSH_queue
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:481    .text:00000118 OSHRunTask
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:507    .text:0000012a OSPostTask
                            *COM*:0000001e RecordPassed
D:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccyYaaaa.s:589    .text:00000182 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
OSH_MAKE_RED_LED_OUTPUT
OSH_MAKE_YELLOW_LED_OUTPUT
OSH_MAKE_GREEN_LED_OUTPUT
OSH_MAKE_CC_CHP_OUT_INPUT
OSH_MAKE_PW7_OUTPUT
OSH_MAKE_PW6_OUTPUT
OSH_MAKE_PW5_OUTPUT
OSH_MAKE_PW4_OUTPUT
OSH_MAKE_PW3_OUTPUT
OSH_MAKE_PW2_OUTPUT
OSH_MAKE_PW1_OUTPUT
OSH_MAKE_PW0_OUTPUT
OSH_MAKE_CC_PALE_OUTPUT
OSH_MAKE_CC_PDATA_OUTPUT
OSH_MAKE_CC_PCLK_OUTPUT
OSH_MAKE_MISO_INPUT
OSH_MAKE_SPI_OC1C_INPUT
OSH_MAKE_SERIAL_ID_INPUT
OSH_CLR_SERIAL_ID_PIN
OSH_MAKE_FLASH_SELECT_OUTPUT
OSH_MAKE_FLASH_OUT_OUTPUT
OSH_MAKE_FLASH_CLK_OUTPUT
OSH_SET_FLASH_SELECT_PIN
OSH_SET_RED_LED_PIN
OSH_SET_YELLOW_LED_PIN
OSH_SET_GREEN_LED_PIN
Init
Start

⌨️ 快捷键说明

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