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

📄 os.lst

📁 利用zigbee进行定位的程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"os.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:
  68               	.global	os_atomic_enable_interrupt
  70               	os_atomic_enable_interrupt:
   1:os.c          **** //----------------------------------------------------//
   2:os.c          **** //-------Institute Of  Computing Technology-----------//
   3:os.c          **** //------------Chinese Academic  Science---------------//
   4:os.c          **** //-----中国科学院计算技术研究所先进测试技术实验室-----//
   5:os.c          **** //----------------------------------------------------//
   6:os.c          **** 
   7:os.c          **** /**
   8:os.c          ****  * www.wsn.net.cn
   9:os.c          ****  * @copyright:nbicc_lpp
  10:os.c          ****  * @data:2005.11.22
  11:os.c          ****  * @version:0.0.1
  12:os.c          ****  * @updata:$
  13:os.c          ****  *
  14:os.c          ****  */
  15:os.c          **** #include "os.h"
  16:os.c          **** 
  17:os.c          **** //-----------------原子操作-函数---------------------------------------
  18:os.c          **** 
  19:os.c          ****   inline void os_atomic_enable_interrupt(void)
  20:os.c          **** 
  21:os.c          **** {
  72               	.LM1:
  73               	/* prologue: frame size=0 */
  74               	/* prologue end (size=0) */
  22:os.c          ****    __asm volatile ("sei");
  76               	.LM2:
  77               	/* #APP */
  78 0000 7894      		sei
  79               	/* #NOAPP */
  80               	/* epilogue: frame size=0 */
  81 0002 0895      		ret
  82               	/* epilogue end (size=1) */
  83               	/* function os_atomic_enable_interrupt size 3 (2) */
  87               	.global	os_atomic_end
  89               	os_atomic_end:
  23:os.c          ****    
  24:os.c          ****  }
  25:os.c          **** 
  26:os.c          ****   inline void  os_atomic_end(os_atomic_t oldSreg)
  27:os.c          **** {
  91               	.LM3:
  92               	/* prologue: frame size=0 */
  93               	/* prologue end (size=0) */
  28:os.c          ****   * (volatile unsigned char *)(unsigned int )& * (volatile unsigned char *)(0x3F + 0x20) = oldSreg;
  95               	.LM4:
  96 0004 8FBF      		out 95-0x20,r24
  97               	/* epilogue: frame size=0 */
  98 0006 0895      		ret
  99               	/* epilogue end (size=1) */
 100               	/* function os_atomic_end size 2 (1) */
 103               	.global	os_atomic_start
 105               	os_atomic_start:
  29:os.c          **** }
  30:os.c          **** 
  31:os.c          **** 
  32:os.c          ****  inline os_atomic_t  os_atomic_start(void )
  33:os.c          **** {
 107               	.LM5:
 108               	/* prologue: frame size=0 */
 109               	/* prologue end (size=0) */
  34:os.c          ****   os_atomic_t  result = * (volatile unsigned char *)(unsigned int )& * (volatile unsigned char *)(0
 111               	.LM6:
 112 0008 8FB7      		in r24,95-0x20
  35:os.c          ****    __asm volatile ("cli");
 114               	.LM7:
 115               	/* #APP */
 116 000a F894      		cli
  36:os.c          ****   return result;
  37:os.c          **** }
 118               	.LM8:
 119               	/* #NOAPP */
 120 000c 9927      		clr r25
 121               	/* epilogue: frame size=0 */
 122 000e 0895      		ret
 123               	/* epilogue end (size=1) */
 124               	/* function os_atomic_start size 5 (4) */
 128               	.global	OS_wait
 130               	OS_wait:
  38:os.c          **** 
  39:os.c          **** 
  40:os.c          **** //-----------------系统休眠函数--------------------------------------
  41:os.c          ****  inline void OS_wait(void)
  42:os.c          **** {
 132               	.LM9:
 133               	/* prologue: frame size=0 */
 134               	/* prologue end (size=0) */
  43:os.c          ****    __asm volatile ("nop");
 136               	.LM10:
 137               	/* #APP */
 138 0010 0000      		nop
  44:os.c          ****    __asm volatile ("nop");}
 140               	.LM11:
 141 0012 0000      		nop
 142               	/* #NOAPP */
 143               	/* epilogue: frame size=0 */
 144 0014 0895      		ret
 145               	/* epilogue end (size=1) */
 146               	/* function OS_wait size 5 (4) */
 149               	.global	OS_sleep
 151               	OS_sleep:
  45:os.c          **** 
  46:os.c          ****  inline void OS_sleep(void)
  47:os.c          **** {
 153               	.LM12:
 154               	/* prologue: frame size=0 */
 155               	/* prologue end (size=0) */
  48:os.c          **** 
  49:os.c          ****   * (volatile unsigned char *)(unsigned int )& * (volatile unsigned char *)(0x35 + 0x20) |= 1 << 5;
 157               	.LM13:
 158 0016 85B7      		in r24,85-0x20
 159 0018 8062      		ori r24,lo8(32)
 160 001a 85BF      		out 85-0x20,r24
  50:os.c          ****    __asm volatile ("sleep");}
 162               	.LM14:
 163               	/* #APP */
 164 001c 8895      		sleep
 165               	/* #NOAPP */
 166               	/* epilogue: frame size=0 */
 167 001e 0895      		ret
 168               	/* epilogue end (size=1) */
 169               	/* function OS_sleep size 6 (5) */
 172               	.global	OS_sched_init
 174               	OS_sched_init:
  51:os.c          ****    
  52:os.c          **** //-----------------任务调度初始化----------------------------------------
  53:os.c          **** 
  54:os.c          ****  inline void OS_sched_init(void )
  55:os.c          **** {
 176               	.LM15:
 177               	/* prologue: frame size=0 */
 178               	/* prologue end (size=0) */
  56:os.c          ****   OS_sched_free = 0;
 180               	.LM16:
 181 0020 1092 0000 		sts OS_sched_free,__zero_reg__
  57:os.c          ****   OS_sched_full = 0;
 183               	.LM17:
 184 0024 1092 0000 		sts OS_sched_full,__zero_reg__
 185               	/* epilogue: frame size=0 */
 186 0028 0895      		ret
 187               	/* epilogue end (size=1) */
 188               	/* function OS_sched_init size 5 (4) */
 192               	.global	OS_post
 194               	OS_post:
  58:os.c          **** }
  59:os.c          **** 
  60:os.c          **** //-----------------任务提交函数----------------------------------------
  61:os.c          **** 
  62:os.c          **** bool  OS_post(void (*tp)(void))
  63:os.c          **** {
 196               	.LM18:
 197               	/* prologue: frame size=0 */
 198               	/* prologue end (size=0) */
 199 002a BC01      		movw r22,r24
 200               	.LBB2:
 201               	.LBB3:
 203               	.LM19:
 204 002c 8FB7      		in r24,95-0x20
 206               	.LM20:
 207               	/* #APP */
 208 002e F894      		cli
 209               	/* #NOAPP */
 210 0030 482F      		mov r20,r24
 211 0032 5527      		clr r21
 212               	.LBE3:
 213               	.LBE2:
  64:os.c          ****   os_atomic_t fInterruptFlags;
  65:os.c          ****   uint8_t tmp;
  66:os.c          ****   fInterruptFlags = os_atomic_start();
  67:os.c          ****   tmp = OS_sched_free;
 215               	.LM21:
 216 0034 2091 0000 		lds r18,OS_sched_free
  68:os.c          ****   if (OS_queue[tmp].tp == (void *)0) {
 218               	.LM22:
 219 0038 E22F      		mov r30,r18
 220 003a FF27      		clr r31
 221 003c EE0F      		add r30,r30
 222 003e FF1F      		adc r31,r31
 223 0040 E050      		subi r30,lo8(-(OS_queue))
 224 0042 F040      		sbci r31,hi8(-(OS_queue))
 225 0044 8081      		ld r24,Z
 226 0046 9181      		ldd r25,Z+1
 227 0048 892B      		or r24,r25
 228 004a 51F4      		brne .L9
  69:os.c          ****       OS_sched_free = (tmp + 1) & OS_TASK_BITMASK;
 230               	.LM23:
 231 004c 2F5F      		subi r18,lo8(-(1))
 232 004e 2770      		andi r18,lo8(7)
 233 0050 2093 0000 		sts OS_sched_free,r18
  70:os.c          ****       OS_queue[tmp].tp = tp;
 235               	.LM24:
 236 0054 6083      		st Z,r22
 237 0056 7183      		std Z+1,r23
 238               	.LBB4:
 239               	.LBB5:
 241               	.LM25:
 242 0058 4FBF      		out 95-0x20,r20
 243               	.LBE5:
 244               	.LBE4:
  71:os.c          ****       os_atomic_end(fInterruptFlags);
  72:os.c          **** 
  73:os.c          ****       return TRUE;
 246               	.LM26:
 247 005a 81E0      		ldi r24,lo8(1)
 248 005c 90E0      		ldi r25,hi8(1)
 249 005e 0895      		ret
 250               	.L9:
 251               	.LBB6:
 252               	.LBB7:
 254               	.LM27:
 255 0060 4FBF      		out 95-0x20,r20
 256               	.LBE7:
 257               	.LBE6:
  74:os.c          ****     }
  75:os.c          ****   else {
  76:os.c          ****       os_atomic_end(fInterruptFlags);
  77:os.c          **** 
  78:os.c          ****       return FALSE;
 259               	.LM28:
 260 0062 80E0      		ldi r24,lo8(0)
 261 0064 90E0      		ldi r25,hi8(0)
  79:os.c          ****     }
  80:os.c          **** }

⌨️ 快捷键说明

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