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

📄 os_cpu.lst

📁 给出一个简单操作系统在AVR中应用实例
💻 LST
📖 第 1 页 / 共 2 页
字号:
 188               	.LM21:
 189 006c 3F92      		PUSH R3
  63:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("PUSH R4");
 191               	.LM22:
 192 006e 4F92      		PUSH R4
  64:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("PUSH R5");	
 194               	.LM23:
 195 0070 5F92      		PUSH R5
  65:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 
  66:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("IN R31,0x3d");
 197               	.LM24:
 198 0072 FDB7      		IN R31,0x3d
  67:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("STS SaveSP,R31");
 200               	.LM25:
 201 0074 F093 0000 		STS SaveSP,R31
  68:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("IN R31,0x3e");	
 203               	.LM26:
 204 0078 FEB7      		IN R31,0x3e
  69:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("STS SaveSP+1,R31");	
 206               	.LM27:
 207 007a F093 0000 		STS SaveSP+1,R31
  70:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 
  71:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	OSTCB[OS_TASK_CrtPrio].OSStkTop = SaveSP; //Save the current task top.
 209               	.LM28:
 210               	/* #NOAPP */
 211 007e 8091 0000 		lds r24,OS_TASK_CrtPrio
 212 0082 9927      		clr r25
 213 0084 20E0      		ldi r18,lo8(OSTCB)
 214 0086 30E0      		ldi r19,hi8(OSTCB)
 215 0088 F92F      		mov r31,r25
 216 008a E82F      		mov r30,r24
 217 008c EE0F      		lsl r30
 218 008e FF1F      		rol r31
 219 0090 EE0F      		lsl r30
 220 0092 FF1F      		rol r31
 221 0094 E80F      		add r30,r24
 222 0096 F91F      		adc r31,r25
 223 0098 E20F      		add r30,r18
 224 009a F31F      		adc r31,r19
 225 009c 8091 0000 		lds r24,SaveSP
 226 00a0 9091 0000 		lds r25,(SaveSP)+1
 227 00a4 8083      		st Z,r24
 228 00a6 9183      		std Z+1,r25
  72:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 
  73:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	OS_TASK_CrtPrio=OS_TASK_HighPri;
 230               	.LM29:
 231 00a8 8091 0000 		lds r24,OS_TASK_HighPri
 232 00ac 8093 0000 		sts OS_TASK_CrtPrio,r24
  74:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 
  75:C:/WinAVR/minOS_WinAVR/os_cpu.c **** // Load context from the stack
  76:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     SaveSP = OSTCB[OS_TASK_CrtPrio].OSStkTop;	//load the high priority task task top.
 234               	.LM30:
 235 00b0 9927      		clr r25
 236 00b2 F92F      		mov r31,r25
 237 00b4 E82F      		mov r30,r24
 238 00b6 EE0F      		lsl r30
 239 00b8 FF1F      		rol r31
 240 00ba EE0F      		lsl r30
 241 00bc FF1F      		rol r31
 242 00be E80F      		add r30,r24
 243 00c0 F91F      		adc r31,r25
 244 00c2 E20F      		add r30,r18
 245 00c4 F31F      		adc r31,r19
 246 00c6 8081      		ld r24,Z
 247 00c8 9181      		ldd r25,Z+1
 248 00ca 9093 0000 		sts (SaveSP)+1,r25
 249 00ce 8093 0000 		sts SaveSP,r24
  77:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 
  78:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("CLI");					
 251               	.LM31:
 252               	/* #APP */
 253 00d2 F894      		CLI
  79:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("LDS R31,SaveSP"); 
 255               	.LM32:
 256 00d4 F091 0000 		LDS R31,SaveSP
  80:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("OUT 0x3d,R31");
 258               	.LM33:
 259 00d8 FDBF      		OUT 0x3d,R31
  81:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("LDS R31,SaveSP+1"); 
 261               	.LM34:
 262 00da F091 0000 		LDS R31,SaveSP+1
  82:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("OUT 0x3e,R31");
 264               	.LM35:
 265 00de FEBF      		OUT 0x3e,R31
  83:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("SEI");
 267               	.LM36:
 268 00e0 7894      		SEI
  84:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	
  85:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     asm("POP R5");
 270               	.LM37:
 271 00e2 5F90      		POP R5
  86:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     asm("POP R4");
 273               	.LM38:
 274 00e4 4F90      		POP R4
  87:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     asm("POP R3");
 276               	.LM39:
 277 00e6 3F90      		POP R3
  88:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     asm("POP R2");
 279               	.LM40:
 280 00e8 2F90      		POP R2
  89:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     asm("POP R1");
 282               	.LM41:
 283 00ea 1F90      		POP R1
  90:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     asm("POP R0");
 285               	.LM42:
 286 00ec 0F90      		POP R0
  91:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 		
  92:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("POP R26");
 288               	.LM43:
 289 00ee AF91      		POP R26
  93:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 	asm("POP R27");
 291               	.LM44:
 292 00f0 BF91      		POP R27
  94:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     asm("POP R28");
 294               	.LM45:
 295 00f2 CF91      		POP R28
  95:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     asm("POP R29");
 297               	.LM46:
 298 00f4 DF91      		POP R29
  96:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     asm("POP R30");
 300               	.LM47:
 301 00f6 EF91      		POP R30
  97:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     asm("POP R31");
 303               	.LM48:
 304 00f8 FF91      		POP R31
 305               	/* #NOAPP */
 306               	/* epilogue: frame size=0 */
 307 00fa 0895      		ret
 308               	/* epilogue end (size=1) */
 309               	/* function OSCtxSw size 111 (110) */
 312               	.global	__vector_7
 314               	__vector_7:
  98:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 
  99:C:/WinAVR/minOS_WinAVR/os_cpu.c **** }
 100:C:/WinAVR/minOS_WinAVR/os_cpu.c **** 
 101:C:/WinAVR/minOS_WinAVR/os_cpu.c **** //OS Time Tick Interrupt,OS 时钟节拍中断.
 102:C:/WinAVR/minOS_WinAVR/os_cpu.c **** INTERRUPT(SIG_OVERFLOW0)
 103:C:/WinAVR/minOS_WinAVR/os_cpu.c **** {
 316               	.LM49:
 317               	/* prologue: frame size=0 */
 318 00fc 7894      		sei
 319 00fe 1F92      		push __zero_reg__
 320 0100 0F92      		push __tmp_reg__
 321 0102 0FB6      		in __tmp_reg__,__SREG__
 322 0104 0F92      		push __tmp_reg__
 323 0106 1124      		clr __zero_reg__
 324 0108 2F93      		push r18
 325 010a 3F93      		push r19
 326 010c 4F93      		push r20
 327 010e 5F93      		push r21
 328 0110 6F93      		push r22
 329 0112 7F93      		push r23
 330 0114 8F93      		push r24
 331 0116 9F93      		push r25
 332 0118 AF93      		push r26
 333 011a BF93      		push r27
 334 011c EF93      		push r30
 335 011e FF93      		push r31
 336               	/* prologue end (size=18) */
 104:C:/WinAVR/minOS_WinAVR/os_cpu.c ****     TCNT0  = T0_TCNT0;   // (256 - (T0_RELOAD & 0xff))
 338               	.LM50:
 339 0120 8AE7      		ldi r24,lo8(122)
 340 0122 82BF      		out 82-0x20,r24
 105:C:/WinAVR/minOS_WinAVR/os_cpu.c **** #if OS_TICK_HOOK_EN>0
 106:C:/WinAVR/minOS_WinAVR/os_cpu.c **** //	AppTickHook();     //Hook file for a time tick --- 用户每个时间节拍的钩子函数

⌨️ 快捷键说明

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