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

📄 os.lst

📁 adhoc信息节点程序源代码(点对多点)——for atmega128
💻 LST
📖 第 1 页 / 共 2 页
字号:
 121:os.c          **** void OSH_sleep(void)
 122:os.c          **** {
 348               	.LM56:
 349               	/* prologue: frame size=0 */
 350               	/* prologue end (size=0) */
 123:os.c          **** 	* (volatile unsigned char *)(0x35 + 0x20) |= 1 << 5;
 352               	.LM57:
 353 00b4 85B7      		in r24,85-0x20
 354 00b6 8062      		ori r24,lo8(32)
 355 00b8 85BF      		out 85-0x20,r24
 124:os.c          **** 	__asm volatile ("sleep");}
 357               	.LM58:
 358               	/* #APP */
 359 00ba 8895      		sleep
 360               	/* #NOAPP */
 361               	/* epilogue: frame size=0 */
 362 00bc 0895      		ret
 363               	/* epilogue end (size=1) */
 364               	/* function OSH_sleep size 6 (5) */
 368               	.global	AtomicEnd
 370               	AtomicEnd:
 125:os.c          **** 
 126:os.c          **** void  AtomicEnd(uint8_t oldSreg)
 127:os.c          **** {
 372               	.LM59:
 373               	/* prologue: frame size=0 */
 374               	/* prologue end (size=0) */
 128:os.c          **** 	* (volatile unsigned char *)(0x3F + 0x20) = oldSreg;
 376               	.LM60:
 377 00be 8FBF      		out 95-0x20,r24
 378               	/* epilogue: frame size=0 */
 379 00c0 0895      		ret
 380               	/* epilogue end (size=1) */
 381               	/* function AtomicEnd size 2 (1) */
 384               	.global	AtomicStart
 386               	AtomicStart:
 129:os.c          **** }
 130:os.c          **** 
 131:os.c          **** uint8_t  AtomicStart(void )
 132:os.c          **** {
 388               	.LM61:
 389               	/* prologue: frame size=0 */
 390               	/* prologue end (size=0) */
 133:os.c          **** 	uint8_t result = * (volatile unsigned char *)(0x3F + 0x20);
 392               	.LM62:
 393 00c2 8FB7      		in r24,95-0x20
 134:os.c          **** 	
 135:os.c          **** 	__asm volatile ("cli");
 395               	.LM63:
 396               	/* #APP */
 397 00c4 F894      		cli
 136:os.c          **** 	return result;
 137:os.c          **** }
 399               	.LM64:
 400               	/* #NOAPP */
 401 00c6 9927      		clr r25
 402               	/* epilogue: frame size=0 */
 403 00c8 0895      		ret
 404               	/* epilogue end (size=1) */
 405               	/* function AtomicStart size 5 (4) */
 409               	.global	OSHRunNextTask
 411               	OSHRunNextTask:
 138:os.c          **** 
 139:os.c          **** bool OSHRunNextTask(void)
 140:os.c          **** {
 413               	.LM65:
 414               	/* prologue: frame size=0 */
 415 00ca 0F93      		push r16
 416 00cc 1F93      		push r17
 417               	/* prologue end (size=2) */
 141:os.c          **** 	uint8_t fInterruptFlags;
 142:os.c          **** 	uint8_t old_full;
 143:os.c          **** 	void (*func)(void );
 144:os.c          **** 	
 145:os.c          **** 	if (OSH_sched_full == OSH_sched_free) {
 419               	.LM66:
 420 00ce 9091 0000 		lds r25,OSH_sched_full
 421 00d2 8091 0000 		lds r24,OSH_sched_free
 422 00d6 9817      		cp r25,r24
 423 00d8 19F4      		brne .L19
 146:os.c          **** 		
 147:os.c          **** 		return 0;
 425               	.LM67:
 426 00da 80E0      		ldi r24,lo8(0)
 427 00dc 90E0      		ldi r25,hi8(0)
 428 00de 1EC0      		rjmp .L18
 429               	.L19:
 148:os.c          ****     }
 149:os.c          **** 	else {
 150:os.c          **** 		fInterruptFlags = AtomicStart();
 431               	.LM68:
 432 00e0 0E94 0000 		call AtomicStart
 151:os.c          **** 		old_full = OSH_sched_full;
 434               	.LM69:
 435 00e4 2091 0000 		lds r18,OSH_sched_full
 152:os.c          **** 		OSH_sched_full++;
 437               	.LM70:
 438 00e8 9091 0000 		lds r25,OSH_sched_full
 439 00ec 9F5F      		subi r25,lo8(-(1))
 440 00ee 9093 0000 		sts OSH_sched_full,r25
 153:os.c          **** 		OSH_sched_full &= OSH_TASK_BITMASK;
 442               	.LM71:
 443 00f2 9091 0000 		lds r25,OSH_sched_full
 444 00f6 9770      		andi r25,lo8(7)
 445 00f8 9093 0000 		sts OSH_sched_full,r25
 154:os.c          **** 		func = OSH_queue[(int )old_full].tp;
 447               	.LM72:
 448 00fc E22F      		mov r30,r18
 449 00fe FF27      		clr r31
 450 0100 EE0F      		add r30,r30
 451 0102 FF1F      		adc r31,r31
 452 0104 E050      		subi r30,lo8(-(OSH_queue))
 453 0106 F040      		sbci r31,hi8(-(OSH_queue))
 454 0108 0081      		ld r16,Z
 455 010a 1181      		ldd r17,Z+1
 155:os.c          **** 		OSH_queue[(int )old_full].tp = 0;
 457               	.LM73:
 458 010c 1082      		st Z,__zero_reg__
 459 010e 1182      		std Z+1,__zero_reg__
 156:os.c          **** 		AtomicEnd(fInterruptFlags);
 461               	.LM74:
 462 0110 0E94 0000 		call AtomicEnd
 157:os.c          **** 		func();
 464               	.LM75:
 465 0114 F801      		movw r30,r16
 466 0116 0995      		icall
 158:os.c          **** 		return 1;
 468               	.LM76:
 469 0118 81E0      		ldi r24,lo8(1)
 470 011a 90E0      		ldi r25,hi8(1)
 471               	.L18:
 472               	/* epilogue: frame size=0 */
 473 011c 1F91      		pop r17
 474 011e 0F91      		pop r16
 475 0120 0895      		ret
 476               	/* epilogue end (size=3) */
 477               	/* function OSHRunNextTask size 44 (39) */
 482               	.global	OSHRunTask
 484               	OSHRunTask:
 159:os.c          ****     }
 160:os.c          **** }
 161:os.c          **** 
 162:os.c          **** void OSHRunTask(void)
 163:os.c          **** {
 486               	.LM77:
 487               	/* prologue: frame size=0 */
 488               	/* prologue end (size=0) */
 489               	.L22:
 164:os.c          **** 	while (OSHRunNextTask()) 
 491               	.LM78:
 492 0122 0E94 0000 		call OSHRunNextTask
 493 0126 8823      		tst r24
 494 0128 E1F7      		brne .L22
 165:os.c          **** 		;
 166:os.c          **** 	OSH_sleep();
 496               	.LM79:
 497 012a 0E94 0000 		call OSH_sleep
 167:os.c          **** 	OSH_wait();
 499               	.LM80:
 500 012e 0E94 0000 		call OSH_wait
 501               	/* epilogue: frame size=0 */
 502 0132 0895      		ret
 503               	/* epilogue end (size=1) */
 504               	/* function OSHRunTask size 9 (8) */
 508               	.global	OSPostTask
 510               	OSPostTask:
 168:os.c          **** }
 169:os.c          **** 
 170:os.c          **** bool  OSPostTask(void (*tp)(void))
 171:os.c          **** {
 512               	.LM81:
 513               	/* prologue: frame size=0 */
 514 0134 1F93      		push r17
 515 0136 CF93      		push r28
 516 0138 DF93      		push r29
 517               	/* prologue end (size=3) */
 518 013a EC01      		movw r28,r24
 172:os.c          **** 	uint8_t fInterruptFlags;
 173:os.c          **** 	uint8_t tmp;
 174:os.c          **** 	
 175:os.c          **** 	fInterruptFlags = AtomicStart();
 520               	.LM82:
 521 013c 0E94 0000 		call AtomicStart
 522 0140 282F      		mov r18,r24
 176:os.c          **** 	
 177:os.c          **** 	tmp = OSH_sched_free;
 524               	.LM83:
 525 0142 1091 0000 		lds r17,OSH_sched_free
 178:os.c          **** 	OSH_sched_free++;
 527               	.LM84:
 528 0146 8091 0000 		lds r24,OSH_sched_free
 529 014a 8F5F      		subi r24,lo8(-(1))
 530 014c 8093 0000 		sts OSH_sched_free,r24
 179:os.c          **** 	OSH_sched_free &= OSH_TASK_BITMASK;
 532               	.LM85:
 533 0150 8091 0000 		lds r24,OSH_sched_free
 534 0154 8770      		andi r24,lo8(7)
 535 0156 8093 0000 		sts OSH_sched_free,r24
 180:os.c          **** 	
 181:os.c          **** 	if (OSH_sched_free != OSH_sched_full) {
 537               	.LM86:
 538 015a 9091 0000 		lds r25,OSH_sched_free
 539 015e 8091 0000 		lds r24,OSH_sched_full
 540 0162 9817      		cp r25,r24
 541 0164 71F0      		breq .L26
 182:os.c          **** 		AtomicEnd(fInterruptFlags);
 543               	.LM87:
 544 0166 822F      		mov r24,r18
 545 0168 0E94 0000 		call AtomicEnd
 183:os.c          **** 		
 184:os.c          **** 		OSH_queue[tmp].tp = tp;
 547               	.LM88:
 548 016c E12F      		mov r30,r17
 549 016e FF27      		clr r31
 550 0170 EE0F      		add r30,r30
 551 0172 FF1F      		adc r31,r31
 552 0174 E050      		subi r30,lo8(-(OSH_queue))
 553 0176 F040      		sbci r31,hi8(-(OSH_queue))
 554 0178 C083      		st Z,r28
 555 017a D183      		std Z+1,r29
 185:os.c          **** 		return TRUE;
 557               	.LM89:
 558 017c 81E0      		ldi r24,lo8(1)
 559 017e 90E0      		ldi r25,hi8(1)
 560 0180 07C0      		rjmp .L25
 561               	.L26:
 186:os.c          ****     }
 187:os.c          **** 	else {
 188:os.c          **** 		OSH_sched_free = tmp;
 563               	.LM90:
 564 0182 1093 0000 		sts OSH_sched_free,r17
 189:os.c          **** 		AtomicEnd(fInterruptFlags);
 566               	.LM91:
 567 0186 822F      		mov r24,r18
 568 0188 0E94 0000 		call AtomicEnd
 190:os.c          **** 		
 191:os.c          **** 		return FALSE;
 570               	.LM92:
 571 018c 80E0      		ldi r24,lo8(0)
 572 018e 90E0      		ldi r25,hi8(0)
 573               	.L25:
 574               	/* epilogue: frame size=0 */
 575 0190 DF91      		pop r29
 576 0192 CF91      		pop r28
 577 0194 1F91      		pop r17
 578 0196 0895      		ret
 579               	/* epilogue end (size=4) */
 580               	/* function OSPostTask size 50 (43) */
 584               		.comm OSH_queue,16,1
 585               		.comm OSH_sched_full,1,1
 586               		.comm OSH_sched_free,1,1
 590               		.text
 592               	Letext:
 593               	/* File "os.c": code  217 = 0x00d9 ( 194), 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__
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:87     .text:00000000 OSH_SET_PIN_DIRECTIONS
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:178    .text:0000006a MainHardwareInit
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:198    .text:00000074 OSSchedInit
                            *COM*:00000001 OSH_sched_free
                            *COM*:00000001 OSH_sched_full
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:218    .text:0000007e OSH_uwait
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:269    .text:0000009a MainStdControlInit
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:288    .text:000000a2 MainStdControlStart
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:307    .text:000000aa EnableInterrupt
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:325    .text:000000ae OSH_wait
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:346    .text:000000b4 OSH_sleep
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:370    .text:000000be AtomicEnd
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:386    .text:000000c2 AtomicStart
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:411    .text:000000ca OSHRunNextTask
                            *COM*:00000010 OSH_queue
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:484    .text:00000122 OSHRunTask
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:510    .text:00000134 OSPostTask
C:\DOCUME~1\xiapeng\LOCALS~1\Temp/ccisbaaa.s:592    .text:00000198 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
LLCStdControlInit
LLCStdControlStart

⌨️ 快捷键说明

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