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

📄 os_cpu_c.lst

📁 一个基于MEGA16的GUI
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"OS_CPU_C.c"
   2               		.arch atmega16
   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:
 124               	.global	pdata_end
 125               		.data
 128               	pdata_end:
 129 0000 0000      		.word	__heap_start
 130               	.global	Alarm
 131               	.global	Alarm
 132               		.section .bss
 135               	Alarm:
 136 0000 00        		.skip 1,0
 137               	.global	TaskFuction
 138               		.data
 141               	TaskFuction:
 142 0002 0000      		.word	pm(task0)
 143 0004 0000      		.word	pm(task1)
 144 0006 0000      		.word	pm(task2)
 145 0008 0000      		.word	pm(task3)
 146               		.text
 148               	.global	OSIdle
 150               	OSIdle:
   1:OS_CPU_C.c    **** /**************************************************************************************************
   2:OS_CPU_C.c    **** **
   3:OS_CPU_C.c    **** **-------------------------------------------------------------------------------------------------
   4:OS_CPU_C.c    **** ***************************************************************************************************
   5:OS_CPU_C.c    **** #define  IN_OS_CPU_C
   6:OS_CPU_C.c    **** #include "CONFIG.h"
   7:OS_CPU_C.c    **** 
   8:OS_CPU_C.c    **** volatile uint8 Alarm=0;
   9:OS_CPU_C.c    **** 
  10:OS_CPU_C.c    **** void* OSTaskStackBottom[OS_MAX_TASKS + 2];		/* 任务栈底位置            */
  11:OS_CPU_C.c    **** 
  12:OS_CPU_C.c    **** 
  13:OS_CPU_C.c    **** /**************************************************************************************************
  14:OS_CPU_C.c    **** ** 函数名称: OSIdle
  15:OS_CPU_C.c    **** ** 功能描述: 优先级最低的任务
  16:OS_CPU_C.c    **** ** 输   入: 无
  17:OS_CPU_C.c    **** ** 输   出: 无
  18:OS_CPU_C.c    **** ** 全局变量: 无
  19:OS_CPU_C.c    **** ** 调用模块: 无
  20:OS_CPU_C.c    **** ** 
  21:OS_CPU_C.c    **** ** 作 者: 徐宝田
  22:OS_CPU_C.c    **** ** 日 期: 2002年12月2日
  23:OS_CPU_C.c    **** **-------------------------------------------------------------------------------------------------
  24:OS_CPU_C.c    **** ** 修改人:
  25:OS_CPU_C.c    **** ** 日 期:
  26:OS_CPU_C.c    **** **-------------------------------------------------------------------------------------------------
  27:OS_CPU_C.c    **** ***************************************************************************************************
  28:OS_CPU_C.c    ****         void OSIdle(void)
  29:OS_CPU_C.c    **** {
 152               	.LM1:
 153               	/* prologue: frame size=0 */
 154               	/* prologue end (size=0) */
 155               	.L2:
  30:OS_CPU_C.c    ****     while(1)
 157               	.LM2:
 158 0000 FFCF      		rjmp .L2
 159               	/* epilogue: frame size=0 */
 160               	/* epilogue: noreturn */
 161               	/* epilogue end (size=0) */
 162               	/* function OSIdle size 1 (1) */
 164               	.Lscope0:
 166               	.global	OSInitHook
 168               	OSInitHook:
  31:OS_CPU_C.c    ****     {
  32:OS_CPU_C.c    **** 		#if EN_OS_IDLE > 0						/* CPU进入休眠状态 */
  33:OS_CPU_C.c    **** 								                   
  34:OS_CPU_C.c    **** 		#endif 
  35:OS_CPU_C.c    ****     }
  36:OS_CPU_C.c    **** }
  37:OS_CPU_C.c    **** 
  38:OS_CPU_C.c    **** /**************************************************************************************************
  39:OS_CPU_C.c    **** ** 函数名称: OSInitHook
  40:OS_CPU_C.c    **** ** 功能描述: 在开始多任务调度之前系统初始钩挂函数 
  41:OS_CPU_C.c    **** ** 输   入: 无
  42:OS_CPU_C.c    **** ** 输   出: 无
  43:OS_CPU_C.c    **** ** 全局变量: 无
  44:OS_CPU_C.c    **** ** 调用模块: 无
  45:OS_CPU_C.c    **** ** 
  46:OS_CPU_C.c    **** ** 作 者: 徐宝田
  47:OS_CPU_C.c    **** ** 日 期: 2002年12月2日
  48:OS_CPU_C.c    **** **-------------------------------------------------------------------------------------------------
  49:OS_CPU_C.c    **** ** 修改人:
  50:OS_CPU_C.c    **** ** 日 期:
  51:OS_CPU_C.c    **** **-------------------------------------------------------------------------------------------------
  52:OS_CPU_C.c    **** ***************************************************************************************************
  53:OS_CPU_C.c    **** 		void OSInitHook(void)
  54:OS_CPU_C.c    **** {
 170               	.LM3:
 171               	/* prologue: frame size=0 */
 172               	/* prologue end (size=0) */
 173               	/* epilogue: frame size=0 */
 174 0002 0895      		ret
 175               	/* epilogue end (size=1) */
 176               	/* function OSInitHook size 1 (0) */
 178               	.Lscope1:
 180               	.global	OSStart
 182               	OSStart:
  55:OS_CPU_C.c    **** 	//OSCCAL = 0xff ;								//内部RC震荡校正字
  56:OS_CPU_C.c    **** }
  57:OS_CPU_C.c    **** 
  58:OS_CPU_C.c    **** /**************************************************************************************************
  59:OS_CPU_C.c    **** ** 函数名称: OSStart
  60:OS_CPU_C.c    **** ** 功能描述: Small RTOS 初始化函数,调用此函数后多任务开始运行,首先执ID为0的任务
  61:OS_CPU_C.c    **** ** 输 入: 无
  62:OS_CPU_C.c    **** ** 输 出 : 无
  63:OS_CPU_C.c    **** ** 全局变量: OSTsakStackBotton,SP
  64:OS_CPU_C.c    **** ** 调用模块: 无
  65:OS_CPU_C.c    **** ** 
  66:OS_CPU_C.c    **** ** 作 者: 徐宝田
  67:OS_CPU_C.c    **** ** 日 期: 2005年5月22日
  68:OS_CPU_C.c    **** **-------------------------------------------------------------------------------------------------
  69:OS_CPU_C.c    **** ** 修改人: 徐宝田
  70:OS_CPU_C.c    **** ** 日 期: 2002年6月2日
  71:OS_CPU_C.c    **** **-------------------------------------------------------------------------------------------------
  72:OS_CPU_C.c    **** ** 修改人: 徐宝田
  73:OS_CPU_C.c    **** ** 日 期: 2002年6月9日
  74:OS_CPU_C.c    **** **-------------------------------------------------------------------------------------------------
  75:OS_CPU_C.c    **** ** 修改人:
  76:OS_CPU_C.c    **** ** 日 期:
  77:OS_CPU_C.c    **** **-------------------------------------------------------------------------------------------------
  78:OS_CPU_C.c    **** ***************************************************************************************************
  79:OS_CPU_C.c    **** extern uint8 __heap_start;              /*  连接器定义的堆起始  */
  80:OS_CPU_C.c    **** uint8 * pdata_end = &__heap_start;
  81:OS_CPU_C.c    **** 
  82:OS_CPU_C.c    ****         void OSStart(void)        
  83:OS_CPU_C.c    **** {
 184               	.LM4:
 185               	/* prologue: frame size=0 */
 186 0004 CF93      		push r28
 187 0006 DF93      		push r29
 188               	/* prologue end (size=2) */
  84:OS_CPU_C.c    **** 	uint8 * cp = (uint8*)RAMEND;
 190               	.LM5:
 191 0008 CFE5      		ldi r28,lo8(1119)
 192 000a D4E0      		ldi r29,hi8(1119)
  85:OS_CPU_C.c    ****     uint8 i,j;
  86:OS_CPU_C.c    **** 
  87:OS_CPU_C.c    **** 	OSTaskStackBottom[0] = (void*)RAMEND;
 194               	.LM6:
 195 000c D093 0000 		sts (OSTaskStackBottom)+1,r29
 196 0010 C093 0000 		sts OSTaskStackBottom,r28
  88:OS_CPU_C.c    ****      
  89:OS_CPU_C.c    ****     /* 初始化优先级最高的任务堆栈,使返回地址为任务开始地址 */
  90:OS_CPU_C.c    ****     *cp-- = ((uint8*)(&TaskFuction[0]))[HIGH_BYTE];
 198               	.LM7:
 199 0014 8091 0000 		lds r24,TaskFuction
 200 0018 8093 5F04 		sts 1119,r24
  91:OS_CPU_C.c    **** 	*cp-- = ((uint8*)(&TaskFuction[0]))[LOW_BYTE];
 202               	.LM8:
 203 001c 8091 0000 		lds r24,TaskFuction+1
 204 0020 8093 5E04 		sts 1118,r24
  92:OS_CPU_C.c    **** 
  93:OS_CPU_C.c    **** 	cp = pdata_end ;
 206               	.LM9:
 207 0024 C091 0000 		lds r28,pdata_end
 208 0028 D091 0000 		lds r29,(pdata_end)+1
  94:OS_CPU_C.c    ****     cp += 2 ;
 210               	.LM10:
 211 002c 2296      		adiw r28,2
  95:OS_CPU_C.c    ****     /* 初始化优先级最低的任务堆栈 */
  96:OS_CPU_C.c    **** 	OSTaskStackBottom[OS_MAX_TASKS+1] = cp-1 ;
 213               	.LM11:
 214 002e 2197      		sbiw r28,1
 215 0030 D093 0000 		sts (OSTaskStackBottom+10)+1,r29
 216 0034 C093 0000 		sts OSTaskStackBottom+10,r28
 217 0038 2196      		adiw r28,1
  97:OS_CPU_C.c    **** 
  98:OS_CPU_C.c    **** 	for(j=0;j<1;j++)
  99:OS_CPU_C.c    **** 	{ 
 100:OS_CPU_C.c    ****  		*cp++ = 0;
 219               	.LM12:
 220 003a 1992      		st Y+,__zero_reg__
 101:OS_CPU_C.c    **** 	}	
 102:OS_CPU_C.c    **** 
 103:OS_CPU_C.c    **** 	*cp++ = (uint8)((uint16)OSIdle/256) ;
 222               	.LM13:
 223 003c 20E0      		ldi r18,lo8(pm(OSIdle))
 224 003e 30E0      		ldi r19,hi8(pm(OSIdle))
 225 0040 832F      		mov r24,r19
 226 0042 9927      		clr r25
 227 0044 8993      		st Y+,r24
 104:OS_CPU_C.c    **** 	OSTaskStackBottom[OS_MAX_TASKS] = cp;
 229               	.LM14:
 230 0046 D093 0000 		sts (OSTaskStackBottom+8)+1,r29
 231 004a C093 0000 		sts OSTaskStackBottom+8,r28
 105:OS_CPU_C.c    **** 	*cp++ = (uint8)(uint16)OSIdle ;
 233               	.LM15:
 234 004e 2993      		st Y+,r18
 106:OS_CPU_C.c    **** 
 107:OS_CPU_C.c    ****     /* 初始化其它优先级的任务堆栈 */
 108:OS_CPU_C.c    ****     for(i = OS_MAX_TASKS - 1; i > 0; i--)
 236               	.LM16:
 237 0050 93E0      		ldi r25,lo8(3)
 238               	.L17:
 109:OS_CPU_C.c    ****     { 
 110:OS_CPU_C.c    ****         OSTaskStackBottom[i] = cp;
 240               	.LM17:
 241 0052 A92F      		mov r26,r25
 242 0054 BB27      		clr r27
 243 0056 FD01      		movw r30,r26
 244 0058 EA0F      		add r30,r26
 245 005a FB1F      		adc r31,r27
 246 005c E050      		subi r30,lo8(-(OSTaskStackBottom))
 247 005e F040      		sbci r31,hi8(-(OSTaskStackBottom))
 248 0060 D183      		std Z+1,r29
 249 0062 C083      		st Z,r28
 250 0064 81E2      		ldi r24,lo8(33)
 251               	.L16:
 111:OS_CPU_C.c    **** 
 112:OS_CPU_C.c    **** 		for(j=0;j<34;j++)
 113:OS_CPU_C.c    **** 		{ 
 114:OS_CPU_C.c    ****  			*cp++ = 0;
 253               	.LM18:
 254 0066 1992      		st Y+,__zero_reg__
 256               	.LM19:
 257 0068 8150      		subi r24,lo8(-(-1))
 258 006a 87FF      		sbrs r24,7
 259 006c FCCF      		rjmp .L16
 115:OS_CPU_C.c    **** 		}	
 116:OS_CPU_C.c    **** 
 117:OS_CPU_C.c    **** 		*cp++ = ((uint8*)(&TaskFuction[i]))[LOW_BYTE];
 261               	.LM20:
 262 006e AA0F      		add r26,r26
 263 0070 BB1F      		adc r27,r27
 264 0072 FD01      		movw r30,r26
 265 0074 E050      		subi r30,lo8(-(TaskFuction+1))
 266 0076 F040      		sbci r31,hi8(-(TaskFuction+1))

⌨️ 快捷键说明

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