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

📄 interupter.lst

📁 无线传感器星型网络的节点的基站程序,采用802.15.4协议
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"interupter.c"
   2               		.arch atmega128
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
 223               	.global	__vector_7
 225               	__vector_7:
   1:interupter.c  **** //----------------------------------------------------//
   2:interupter.c  **** //-------Institute Of  Computing Technology-----------//
   3:interupter.c  **** //------------Chinese Academic  Science---------------//
   4:interupter.c  **** //-----中国科学院计算技术研究所先进测试技术实验室-----//
   5:interupter.c  **** //----------------------------------------------------//
   6:interupter.c  **** #include "interupter.h"
   7:interupter.c  **** 
   8:interupter.c  **** //---------------------------------------------------------fifop中断(pe6)
   9:interupter.c  **** void __attribute((signal))   __vector_7(void)
  10:interupter.c  **** {
 227               	.LM1:
 228               	/* prologue: frame size=0 */
 229 0000 1F92      		push __zero_reg__
 230 0002 0F92      		push __tmp_reg__
 231 0004 0FB6      		in __tmp_reg__,__SREG__
 232 0006 0F92      		push __tmp_reg__
 233 0008 1124      		clr __zero_reg__
 234 000a 2F93      		push r18
 235 000c 3F93      		push r19
 236 000e 4F93      		push r20
 237 0010 5F93      		push r21
 238 0012 6F93      		push r22
 239 0014 7F93      		push r23
 240 0016 8F93      		push r24
 241 0018 9F93      		push r25
 242 001a AF93      		push r26
 243 001c BF93      		push r27
 244 001e EF93      		push r30
 245 0020 FF93      		push r31
 246               	/* prologue end (size=17) */
  11:interupter.c  **** 	
  12:interupter.c  ****                cc2420_fifopintr();
 248               	.LM2:
 249 0022 0E94 0000 		call cc2420_fifopintr
 250               	/* epilogue: frame size=0 */
 251 0026 FF91      		pop r31
 252 0028 EF91      		pop r30
 253 002a BF91      		pop r27
 254 002c AF91      		pop r26
 255 002e 9F91      		pop r25
 256 0030 8F91      		pop r24
 257 0032 7F91      		pop r23
 258 0034 6F91      		pop r22
 259 0036 5F91      		pop r21
 260 0038 4F91      		pop r20
 261 003a 3F91      		pop r19
 262 003c 2F91      		pop r18
 263 003e 0F90      		pop __tmp_reg__
 264 0040 0FBE      		out __SREG__,__tmp_reg__
 265 0042 0F90      		pop __tmp_reg__
 266 0044 1F90      		pop __zero_reg__
 267 0046 1895      		reti
 268               	/* epilogue end (size=17) */
 269               	/* function __vector_7 size 36 (2) */
 272               	.global	__vector_12
 274               	__vector_12:
  13:interupter.c  **** 	
  14:interupter.c  **** }
  15:interupter.c  **** 
  16:interupter.c  **** //----------------------------------------------------------定时器1 比较a 中断
  17:interupter.c  **** void __attribute((interrupt))   __vector_12(void)
  18:interupter.c  **** {
 276               	.LM3:
 277               	/* prologue: frame size=0 */
 278 0048 7894      		sei
 279 004a 1F92      		push __zero_reg__
 280 004c 0F92      		push __tmp_reg__
 281 004e 0FB6      		in __tmp_reg__,__SREG__
 282 0050 0F92      		push __tmp_reg__
 283 0052 1124      		clr __zero_reg__
 284 0054 EF92      		push r14
 285 0056 FF92      		push r15
 286 0058 0F93      		push r16
 287 005a 1F93      		push r17
 288 005c 2F93      		push r18
 289 005e 3F93      		push r19
 290 0060 4F93      		push r20
 291 0062 5F93      		push r21
 292 0064 6F93      		push r22
 293 0066 7F93      		push r23
 294 0068 8F93      		push r24
 295 006a 9F93      		push r25
 296 006c AF93      		push r26
 297 006e BF93      		push r27
 298 0070 CF93      		push r28
 299 0072 DF93      		push r29
 300 0074 EF93      		push r30
 301 0076 FF93      		push r31
 302               	/* prologue end (size=24) */
  19:interupter.c  ****    uint16_t  temp_interval;
  20:interupter.c  ****    uint8_t fire_reason;
  21:interupter.c  ****    systimer_queue_pointer temp;
  22:interupter.c  ****    uint32_t test;
  23:interupter.c  ****    test=systime32();
 304               	.LM4:
 305 0078 0E94 0000 		call systime32
 306 007c DC01      		movw r26,r24
 307 007e CB01      		movw r24,r22
  24:interupter.c  ****    if(((head_of_systimer_queue->ticksLeft)&(0xffff0000))==(test&(0xffff0000)))
 309               	.LM5:
 310 0080 E091 0000 		lds r30,head_of_systimer_queue
 311 0084 F091 0000 		lds r31,(head_of_systimer_queue)+1
 312 0088 2381      		ldd r18,Z+3
 313 008a 3481      		ldd r19,Z+4
 314 008c 4581      		ldd r20,Z+5
 315 008e 5681      		ldd r21,Z+6
 316 0090 2070      		andi r18,lo8(-65536)
 317 0092 3070      		andi r19,hi8(-65536)
 318 0094 8070      		andi r24,lo8(-65536)
 319 0096 9070      		andi r25,hi8(-65536)
 320 0098 2817      		cp r18,r24
 321 009a 3907      		cpc r19,r25
 322 009c 4A07      		cpc r20,r26
 323 009e 5B07      		cpc r21,r27
 324 00a0 31F5      		brne .L2
 325               	.LBB2:
  25:interupter.c  ****    	{
  26:interupter.c  ****   { os_atomic_t _nesc_atomic = os_atomic_start();
 327               	.LM6:
 328 00a2 0E94 0000 		call os_atomic_start
 329 00a6 E82E      		mov r14,r24
 330               	.LBB3:
  27:interupter.c  ****     {
  28:interupter.c  **** 	   //if(((head_of_systimer_queue->ticksLeft)&&(0xffff0000))==((systime32())&&(0xffff0000)))	
  29:interupter.c  ****   	   fire_reason=head_of_systimer_queue->timer_reason;
 332               	.LM7:
 333 00a8 0091 0000 		lds r16,head_of_systimer_queue
 334 00ac 1091 0000 		lds r17,(head_of_systimer_queue)+1
 335 00b0 F801      		movw r30,r16
 336 00b2 F080      		ld r15,Z
  30:interupter.c  **** 	   temp=head_of_systimer_queue;
  31:interupter.c  **** 	   //test=systime32();
  32:interupter.c  **** 	   //printf("\nthe current timer is %08x",test);
  33:interupter.c  ****           temp_interval=Timer1_getnextInterval();
 338               	.LM8:
 339 00b4 0E94 0000 		call Timer1_getnextInterval
 340 00b8 EC01      		movw r28,r24
  34:interupter.c  **** 	   head_of_systimer_queue=head_of_systimer_queue->next;
 342               	.LM9:
 343 00ba E091 0000 		lds r30,head_of_systimer_queue
 344 00be F091 0000 		lds r31,(head_of_systimer_queue)+1
 345 00c2 8785      		ldd r24,Z+15
 346 00c4 9089      		ldd r25,Z+16
 347 00c6 9093 0000 		sts (head_of_systimer_queue)+1,r25
 348 00ca 8093 0000 		sts head_of_systimer_queue,r24
  35:interupter.c  **** 	   //temp_interval=TCNT1+100;
  36:interupter.c  **** 	   free(temp);
 350               	.LM10:
 351 00ce C801      		movw r24,r16
 352 00d0 0E94 0000 		call free
  37:interupter.c  ****           if(temp_interval!=0)
 354               	.LM11:
 355 00d4 2097      		sbiw r28,0
 356 00d6 19F0      		breq .L4
  38:interupter.c  **** 	      OCR1A=temp_interval;
 358               	.LM12:
 359 00d8 DBBD      		out (74)+1-0x20,r29
 360 00da CABD      		out 74-0x20,r28
 361 00dc 02C0      		rjmp .L5
 362               	.L4:
 363               	.LBB4:
  39:interupter.c  **** 	   else
  40:interupter.c  **** 	   	{    
  41:interupter.c  **** 	   	     //printf("\ntimer1 disable");
  42:interupter.c  **** 	            Timer1_OCR_intDisable();
 365               	.LM13:
 366 00de 0E94 0000 		call Timer1_OCR_intDisable
 367               	.L5:
 368               	.LBE4:
 369               	.LBE3:
  43:interupter.c  **** 	   	}
  44:interupter.c  **** 	    
  45:interupter.c  ****       }
  46:interupter.c  ****     os_atomic_end(_nesc_atomic); }
 371               	.LM14:
 372 00e2 8E2D      		mov r24,r14
 373 00e4 0E94 0000 		call os_atomic_end
 374               	.LBE2:
  47:interupter.c  ****     	
  48:interupter.c  ****     systimer_task_fire(fire_reason);
 376               	.LM15:
 377 00e8 8F2D      		mov r24,r15
 378 00ea 0E94 0000 		call systimer_task_fire
 379               	.L2:
 380               	/* epilogue: frame size=0 */
 381 00ee FF91      		pop r31
 382 00f0 EF91      		pop r30
 383 00f2 DF91      		pop r29
 384 00f4 CF91      		pop r28
 385 00f6 BF91      		pop r27
 386 00f8 AF91      		pop r26
 387 00fa 9F91      		pop r25
 388 00fc 8F91      		pop r24
 389 00fe 7F91      		pop r23
 390 0100 6F91      		pop r22
 391 0102 5F91      		pop r21
 392 0104 4F91      		pop r20
 393 0106 3F91      		pop r19
 394 0108 2F91      		pop r18
 395 010a 1F91      		pop r17
 396 010c 0F91      		pop r16
 397 010e FF90      		pop r15
 398 0110 EF90      		pop r14
 399 0112 0F90      		pop __tmp_reg__
 400 0114 0FBE      		out __SREG__,__tmp_reg__
 401 0116 0F90      		pop __tmp_reg__
 402 0118 1F90      		pop __zero_reg__
 403 011a 1895      		reti
 404               	/* epilogue end (size=23) */
 405               	/* function __vector_12 size 106 (59) */
 414               	.global	__vector_11
 416               	__vector_11:
  49:interupter.c  ****    	}
  50:interupter.c  ****    /*
  51:interupter.c  ****    else
  52:interupter.c  ****    	{ 
  53:interupter.c  ****    	if(((head_of_systimer_queue->ticksLeft)&(0x3fff0000))==(test&(0x3fff0000)))
  54:interupter.c  ****    	      head_of_systimer_queue->high_left=head_of_systimer_queue->high_left-0x40000000;
  55:interupter.c  ****    	OCR1A=head_of_systimer_queue->ticks;
  56:interupter.c  ****    	}
  57:interupter.c  ****    	*/
  58:interupter.c  **** }
  59:interupter.c  **** void __attribute((interrupt))   __vector_11(void)//定时器1-- input capture interrupt
  60:interupter.c  **** {
 418               	.LM16:
 419               	/* prologue: frame size=0 */
 420 011c 7894      		sei
 421 011e 1F92      		push __zero_reg__
 422 0120 0F92      		push __tmp_reg__
 423 0122 0FB6      		in __tmp_reg__,__SREG__
 424 0124 0F92      		push __tmp_reg__
 425 0126 1124      		clr __zero_reg__
 426 0128 1F93      		push r17
 427 012a 2F93      		push r18
 428 012c 3F93      		push r19
 429 012e 4F93      		push r20
 430 0130 5F93      		push r21
 431 0132 6F93      		push r22
 432 0134 7F93      		push r23
 433 0136 8F93      		push r24
 434 0138 9F93      		push r25
 435 013a AF93      		push r26
 436 013c BF93      		push r27
 437 013e EF93      		push r30
 438 0140 FF93      		push r31
 439               	/* prologue end (size=19) */
 440               	.LBB5:
  61:interupter.c  ****    
  62:interupter.c  ****   { os_atomic_t _nesc_atomic = os_atomic_start();
 442               	.LM17:
 443 0142 0E94 0000 		call os_atomic_start
 444 0146 182F      		mov r17,r24
  63:interupter.c  ****       {      
  64:interupter.c  ****           timestamp_H=systime16H();
 446               	.LM18:
 447 0148 0E94 0000 		call systime16H
 448 014c 9093 0000 		sts (timestamp_H)+1,r25
 449 0150 8093 0000 		sts timestamp_H,r24
  65:interupter.c  ****       }
  66:interupter.c  ****     os_atomic_end(_nesc_atomic); }
 451               	.LM19:
 452 0154 812F      		mov r24,r17
 453 0156 0E94 0000 		call os_atomic_end
 454               	.LBE5:
 455               	/* epilogue: frame size=0 */
 456 015a FF91      		pop r31
 457 015c EF91      		pop r30
 458 015e BF91      		pop r27
 459 0160 AF91      		pop r26
 460 0162 9F91      		pop r25
 461 0164 8F91      		pop r24
 462 0166 7F91      		pop r23
 463 0168 6F91      		pop r22
 464 016a 5F91      		pop r21
 465 016c 4F91      		pop r20
 466 016e 3F91      		pop r19
 467 0170 2F91      		pop r18
 468 0172 1F91      		pop r17
 469 0174 0F90      		pop __tmp_reg__
 470 0176 0FBE      		out __SREG__,__tmp_reg__
 471 0178 0F90      		pop __tmp_reg__
 472 017a 1F90      		pop __zero_reg__
 473 017c 1895      		reti
 474               	/* epilogue end (size=18) */
 475               	/* function __vector_11 size 49 (12) */
 481               	.global	__vector_14
 483               	__vector_14:
  67:interupter.c  ****     
  68:interupter.c  **** }
  69:interupter.c  **** 
  70:interupter.c  **** void __attribute((interrupt))   __vector_14(void)//定时器1-- overflow interrupt
  71:interupter.c  **** {
 485               	.LM20:
 486               	/* prologue: frame size=0 */
 487 017e 7894      		sei
 488 0180 1F92      		push __zero_reg__
 489 0182 0F92      		push __tmp_reg__
 490 0184 0FB6      		in __tmp_reg__,__SREG__
 491 0186 0F92      		push __tmp_reg__
 492 0188 1124      		clr __zero_reg__
 493 018a 2F93      		push r18
 494 018c 3F93      		push r19
 495 018e 4F93      		push r20
 496 0190 5F93      		push r21
 497 0192 6F93      		push r22
 498 0194 7F93      		push r23
 499 0196 8F93      		push r24
 500 0198 9F93      		push r25
 501 019a AF93      		push r26
 502 019c BF93      		push r27
 503 019e EF93      		push r30
 504 01a0 FF93      		push r31
 505               	/* prologue end (size=18) */
 506               	.LBB6:
  72:interupter.c  ****    
  73:interupter.c  ****   { os_atomic_t _nesc_atomic = os_atomic_start();

⌨️ 快捷键说明

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