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

📄 main.lst

📁 给出一个简单操作系统在AVR中应用实例
💻 LST
字号:
   1               		.file	"main.c"
   2               		.arch at90s8515
   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:
  64               	.global	main
  66               	main:
   1:main.c        **** #include "OS_Includes.h"
   2:main.c        **** 
   3:main.c        **** //PORTB bit4-bit7 for to drive LED1-LED4.
   4:main.c        **** #define LED1_ON() (PORTB |= (0x1<<4))
   5:main.c        **** #define LED1_OFF() (PORTB &= ~(0x1<<4))
   6:main.c        **** #define LED2_ON() (PORTB |= (0x1<<5))
   7:main.c        **** #define LED2_OFF() (PORTB &= ~(0x1<<5))
   8:main.c        **** #define LED3_ON() (PORTB |= (0x1<<6))
   9:main.c        **** #define LED3_OFF() (PORTB &= ~(0x1<<6))
  10:main.c        **** #define LED4_ON() (PORTB |= (0x1<<7))
  11:main.c        **** #define LED4_OFF() (PORTB &= ~(0x1<<7))
  12:main.c        **** 
  13:main.c        **** #define INIT_LED_Drv() (DDRB |= 0xf0)   //PORTB bit4-bit7 used to LED1-LED4
  14:main.c        **** 
  15:main.c        **** void TaskA(void);
  16:main.c        **** #define TaskAPrio	 1                        //声明任务TaskA(void)的优先级。
  17:main.c        **** OS_STK TaskAStk[MAX_STK_SIZE];   //声明任务TaskA(void)的堆栈空间。
  18:main.c        **** void TaskB(void);
  19:main.c        **** #define TaskBPrio	 2                        //声明任务TaskB(void)的优先级。
  20:main.c        **** OS_STK TaskBStk[MAX_STK_SIZE];   //声明任务TaskB(void)的堆栈空间。
  21:main.c        **** void TaskC(void);
  22:main.c        **** #define TaskCPrio	 3                        //声明任务TaskC(void)的优先级。
  23:main.c        **** OS_STK TaskCStk[MAX_STK_SIZE];   //声明任务TaskC(void)的堆栈空间。
  24:main.c        **** 
  25:main.c        **** int main(void)
  26:main.c        **** {
  68               	.LM1:
  69               	/* prologue: frame size=0 */
  70 0000 C0E0      		ldi r28,lo8(__stack - 0)
  71 0002 D0E0      		ldi r29,hi8(__stack - 0)
  72 0004 DEBF      		out __SP_H__,r29
  73 0006 CDBF      		out __SP_L__,r28
  74               	/* prologue end (size=4) */
  27:main.c        **** 	wdt_disable();
  76               	.LM2:
  77 0008 88E1      		ldi r24,lo8(24)
  78 000a 90E0      		ldi r25,hi8(24)
  79 000c 20E0      		ldi r18,lo8(0)
  80               	/* #APP */
  81 000e 0FB6      		in __tmp_reg__,__SREG__
  82 0010 F894      		cli
  83 0012 A895      		wdr
  84 0014 81BD      		out 33,r24
  85 0016 0FBE      		out __SREG__,__tmp_reg__
  86 0018 21BD      		out 33,r18
  28:main.c        **** 	OSInit();               //初始化OS任务控制块(initialization OSTCB)。
  88               	.LM3:
  89               	/* #NOAPP */
  90 001a 00D0      		rcall OSInit
  29:main.c        **** 	OSTaskCreate(TaskA,&TaskAStk[MAX_STK_SIZE-1],TaskAPrio); //建立任务TaskA(void)。
  92               	.LM4:
  93 001c 41E0      		ldi r20,lo8(1)
  94 001e 60E0      		ldi r22,lo8(TaskAStk+63)
  95 0020 70E0      		ldi r23,hi8(TaskAStk+63)
  96 0022 80E0      		ldi r24,lo8(pm(TaskA))
  97 0024 90E0      		ldi r25,hi8(pm(TaskA))
  98 0026 00D0      		rcall OSTaskCreate
  30:main.c        **** 	OSTaskCreate(TaskB,&TaskBStk[MAX_STK_SIZE-1],TaskBPrio); //建立任务TaskB(void)。
 100               	.LM5:
 101 0028 42E0      		ldi r20,lo8(2)
 102 002a 60E0      		ldi r22,lo8(TaskBStk+63)
 103 002c 70E0      		ldi r23,hi8(TaskBStk+63)
 104 002e 80E0      		ldi r24,lo8(pm(TaskB))
 105 0030 90E0      		ldi r25,hi8(pm(TaskB))
 106 0032 00D0      		rcall OSTaskCreate
  31:main.c        **** 	OSTaskCreate(TaskC,&TaskCStk[MAX_STK_SIZE-1],TaskCPrio); //建立任务TaskC(void)。
 108               	.LM6:
 109 0034 43E0      		ldi r20,lo8(3)
 110 0036 60E0      		ldi r22,lo8(TaskCStk+63)
 111 0038 70E0      		ldi r23,hi8(TaskCStk+63)
 112 003a 80E0      		ldi r24,lo8(pm(TaskC))
 113 003c 90E0      		ldi r25,hi8(pm(TaskC))
 114 003e 00D0      		rcall OSTaskCreate
  32:main.c        **** 
  33:main.c        **** 	INIT_LED_Drv();
 116               	.LM7:
 117 0040 87B3      		in r24,55-0x20
 118 0042 806F      		ori r24,lo8(-16)
 119 0044 87BB      		out 55-0x20,r24
  34:main.c        **** 	
  35:main.c        **** 	OSStart();                              //起动OS。
 121               	.LM8:
 122 0046 00D0      		rcall OSStart
 123               	.L2:
  36:main.c        **** 	
  37:main.c        **** 	while (1)
  38:main.c        **** 	{
  39:main.c        **** 		LED1_ON();
 125               	.LM9:
 126 0048 C49A      		sbi 56-0x20,4
  40:main.c        **** 		OSTaskResume(TaskAPrio);	
 128               	.LM10:
 129 004a 81E0      		ldi r24,lo8(1)
 130 004c 00D0      		rcall OSTaskResume
  41:main.c        **** //		OSTaskSuspend(OS_TASK_Me);
  42:main.c        **** 		OSTimeDly(1);
 132               	.LM11:
 133 004e 81E0      		ldi r24,lo8(1)
 134 0050 90E0      		ldi r25,hi8(1)
 135 0052 00D0      		rcall OSTimeDly
  43:main.c        **** 		LED1_OFF();	
 137               	.LM12:
 138 0054 C498      		cbi 56-0x20,4
  44:main.c        **** 		OSTimeDly(1);
 140               	.LM13:
 141 0056 81E0      		ldi r24,lo8(1)
 142 0058 90E0      		ldi r25,hi8(1)
 143 005a 00D0      		rcall OSTimeDly
 144 005c F5CF      		rjmp .L2
 145               	/* epilogue: frame size=0 */
 146               	/* epilogue: noreturn */
 147               	/* epilogue end (size=0) */
 148               	/* function main size 53 (49) */
 151               	.global	TaskA
 153               	TaskA:
  45:main.c        **** 	}	
  46:main.c        **** }
  47:main.c        **** 
  48:main.c        **** 
  49:main.c        **** void TaskA(void)
  50:main.c        **** {
 155               	.LM14:
 156               	/* prologue: frame size=0 */
 157               	/* prologue end (size=0) */
 158               	.L5:
  51:main.c        **** 	while (1)
  52:main.c        **** 	{
  53:main.c        **** 		OSTaskResume(Task_main_Prio);	
 160               	.LM15:
 161 005e 80E0      		ldi r24,lo8(0)
 162 0060 00D0      		rcall OSTaskResume
  54:main.c        **** 		LED2_ON();	
 164               	.LM16:
 165 0062 C59A      		sbi 56-0x20,5
  55:main.c        **** 		OSTimeDly(2);
 167               	.LM17:
 168 0064 82E0      		ldi r24,lo8(2)
 169 0066 90E0      		ldi r25,hi8(2)
 170 0068 00D0      		rcall OSTimeDly
  56:main.c        **** 		LED2_OFF();	
 172               	.LM18:
 173 006a C598      		cbi 56-0x20,5
  57:main.c        **** 		OSTimeDly(2);
 175               	.LM19:
 176 006c 82E0      		ldi r24,lo8(2)
 177 006e 90E0      		ldi r25,hi8(2)
 178 0070 00D0      		rcall OSTimeDly
 179 0072 F5CF      		rjmp .L5
 180               	/* epilogue: frame size=0 */
 181               	/* epilogue: noreturn */
 182               	/* epilogue end (size=0) */
 183               	/* function TaskA size 11 (11) */
 186               	.global	TaskB
 188               	TaskB:
  58:main.c        **** 	}
  59:main.c        **** }
  60:main.c        **** 
  61:main.c        **** void TaskB(void)
  62:main.c        **** {
 190               	.LM20:
 191               	/* prologue: frame size=0 */
 192               	/* prologue end (size=0) */
 193               	.L8:
  63:main.c        **** 	while (1)
  64:main.c        **** 	{
  65:main.c        **** 		LED3_ON();	
 195               	.LM21:
 196 0074 C69A      		sbi 56-0x20,6
  66:main.c        **** 		OSTimeDly(3);
 198               	.LM22:
 199 0076 83E0      		ldi r24,lo8(3)
 200 0078 90E0      		ldi r25,hi8(3)
 201 007a 00D0      		rcall OSTimeDly
  67:main.c        **** 		LED3_OFF();	
 203               	.LM23:
 204 007c C698      		cbi 56-0x20,6
  68:main.c        **** 		OSTimeDly(3);
 206               	.LM24:
 207 007e 83E0      		ldi r24,lo8(3)
 208 0080 90E0      		ldi r25,hi8(3)
 209 0082 00D0      		rcall OSTimeDly
 210 0084 F7CF      		rjmp .L8
 211               	/* epilogue: frame size=0 */
 212               	/* epilogue: noreturn */
 213               	/* epilogue end (size=0) */
 214               	/* function TaskB size 9 (9) */
 217               	.global	TaskC
 219               	TaskC:
  69:main.c        **** 	}
  70:main.c        **** }
  71:main.c        **** 
  72:main.c        **** void TaskC(void)
  73:main.c        **** {
 221               	.LM25:
 222               	/* prologue: frame size=0 */
 223               	/* prologue end (size=0) */
 224               	.L11:
  74:main.c        **** 	while (1)
  75:main.c        **** 	{
  76:main.c        **** 		LED4_ON();	
 226               	.LM26:
 227 0086 C79A      		sbi 56-0x20,7
  77:main.c        **** 		OSTimeDly(5);
 229               	.LM27:
 230 0088 85E0      		ldi r24,lo8(5)
 231 008a 90E0      		ldi r25,hi8(5)
 232 008c 00D0      		rcall OSTimeDly
  78:main.c        **** 		LED4_OFF();	
 234               	.LM28:
 235 008e C798      		cbi 56-0x20,7
  79:main.c        **** 		OSTimeDly(5);
 237               	.LM29:
 238 0090 85E0      		ldi r24,lo8(5)
 239 0092 90E0      		ldi r25,hi8(5)
 240 0094 00D0      		rcall OSTimeDly
 241 0096 F7CF      		rjmp .L11
 242               	/* epilogue: frame size=0 */
 243               	/* epilogue: noreturn */
 244               	/* epilogue end (size=0) */
 245               	/* function TaskC size 9 (9) */
 247               		.comm TaskAStk,64,1
 248               		.comm TaskBStk,64,1
 249               		.comm TaskCStk,64,1
 253               		.text
 255               	Letext:
 256               	/* File "main.c": code   82 = 0x0052 (  78), prologues   4, epilogues   0 */
DEFINED SYMBOLS
                            *ABS*:00000000 main.c
                            *ABS*:0000003f __SREG__
                            *ABS*:0000003e __SP_H__
                            *ABS*:0000003d __SP_L__
                            *ABS*:00000000 __tmp_reg__
                            *ABS*:00000001 __zero_reg__
C:\WINDOWS\TEMP/ccvhyhgb.s:66     .text:00000000 main
                            *COM*:00000040 TaskAStk
C:\WINDOWS\TEMP/ccvhyhgb.s:153    .text:0000005e TaskA
                            *COM*:00000040 TaskBStk
C:\WINDOWS\TEMP/ccvhyhgb.s:188    .text:00000074 TaskB
                            *COM*:00000040 TaskCStk
C:\WINDOWS\TEMP/ccvhyhgb.s:219    .text:00000086 TaskC
C:\WINDOWS\TEMP/ccvhyhgb.s:255    .text:00000098 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
__stack
OSInit
OSTaskCreate
OSStart
OSTaskResume
OSTimeDly

⌨️ 快捷键说明

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