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

📄 user_code.lst

📁 一个小的操作系统包括应用程序很有参考价值
💻 LST
📖 第 1 页 / 共 5 页
字号:
 947 053a 991F      		rol r25
 948 053c 880F      		lsl r24
 949 053e 991F      		rol r25
 950 0540 880F      		lsl r24
 951 0542 991F      		rol r25
 952 0544 FC01      		movw r30,r24
 953 0546 E050      		subi r30,lo8(-(OS_TASK_ARRY+6))
 954 0548 F040      		sbci r31,hi8(-(OS_TASK_ARRY+6))
 955 054a 8081      		ld r24,Z
 956 054c 8823      		tst r24
 957 054e C9F0      		breq .L17
 232:mxavr.c       **** 	       {
 233:mxavr.c       **** 			   OS_TASK_ARRY[loop_i].task_wait_clock--;
 958               		.stabn 68,0,233,.LM75-OS_DLY_TIME_DEC
 959               	.LM75:
 960 0550 8981      		ldd r24,Y+1
 961 0552 9927      		clr r25
 962 0554 880F      		lsl r24
 963 0556 991F      		rol r25
 964 0558 880F      		lsl r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 22


 965 055a 991F      		rol r25
 966 055c 880F      		lsl r24
 967 055e 991F      		rol r25
 968 0560 DC01      		movw r26,r24
 969 0562 A050      		subi r26,lo8(-(OS_TASK_ARRY+6))
 970 0564 B040      		sbci r27,hi8(-(OS_TASK_ARRY+6))
 971 0566 8981      		ldd r24,Y+1
 972 0568 9927      		clr r25
 973 056a 880F      		lsl r24
 974 056c 991F      		rol r25
 975 056e 880F      		lsl r24
 976 0570 991F      		rol r25
 977 0572 880F      		lsl r24
 978 0574 991F      		rol r25
 979 0576 FC01      		movw r30,r24
 980 0578 E050      		subi r30,lo8(-(OS_TASK_ARRY+6))
 981 057a F040      		sbci r31,hi8(-(OS_TASK_ARRY+6))
 982 057c 8081      		ld r24,Z
 983 057e 8150      		subi r24,lo8(-(-1))
 984 0580 8C93      		st X,r24
 985               		.stabn 68,0,229,.LM76-OS_DLY_TIME_DEC
 986               	.LM76:
 987               	.L17:
 988 0582 8981      		ldd r24,Y+1
 989 0584 8F5F      		subi r24,lo8(-(1))
 990 0586 8983      		std Y+1,r24
 991 0588 D1CF      		rjmp .L15
 234:mxavr.c       **** 	       }
 235:mxavr.c       **** 	  }
 236:mxavr.c       **** }
 992               		.stabn 68,0,236,.LM77-OS_DLY_TIME_DEC
 993               	.LM77:
 994               	.L14:
 995               	.LBE6:
 996               	/* epilogue: frame size=1 */
 997 058a 2196      		adiw r28,1
 998 058c 0FB6      		in __tmp_reg__,__SREG__
 999 058e F894      		cli
 1000 0590 DEBF      		out __SP_H__,r29
 1001 0592 0FBE      		out __SREG__,__tmp_reg__
 1002 0594 CDBF      		out __SP_L__,r28
 1003 0596 DF91      		pop r29
 1004 0598 CF91      		pop r28
 1005 059a 0895      		ret
 1006               	/* epilogue end (size=9) */
 1007               	/* function OS_DLY_TIME_DEC size 67 (48) */
 1008               		.size	OS_DLY_TIME_DEC, .-OS_DLY_TIME_DEC
 1009               		.stabs	"loop_i:(0,11)",128,0,228,1
 1010               		.stabn	192,0,0,.LBB6-OS_DLY_TIME_DEC
 1011               		.stabn	224,0,0,.LBE6-OS_DLY_TIME_DEC
 1012               	.Lscope5:
 1013               		.stabs	"",36,0,0,.Lscope5-OS_DLY_TIME_DEC
 1014               		.stabs	"OS_TASK_DLY:F(0,20)",36,0,240,OS_TASK_DLY
 1015               		.stabs	"disp_time:p(0,11)",160,0,239,1
 1016               	.global	OS_TASK_DLY
 1017               		.type	OS_TASK_DLY, @function
 1018               	OS_TASK_DLY:
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 23


 237:mxavr.c       **** 
 238:mxavr.c       **** //线程延时函数
 239:mxavr.c       **** void OS_TASK_DLY(unsigned char disp_time)
 240:mxavr.c       **** {
 1019               		.stabn 68,0,240,.LM78-OS_TASK_DLY
 1020               	.LM78:
 1021               	/* prologue: frame size=1 */
 1022 059c CF93      		push r28
 1023 059e DF93      		push r29
 1024 05a0 CDB7      		in r28,__SP_L__
 1025 05a2 DEB7      		in r29,__SP_H__
 1026 05a4 2197      		sbiw r28,1
 1027 05a6 0FB6      		in __tmp_reg__,__SREG__
 1028 05a8 F894      		cli
 1029 05aa DEBF      		out __SP_H__,r29
 1030 05ac 0FBE      		out __SREG__,__tmp_reg__
 1031 05ae CDBF      		out __SP_L__,r28
 1032               	/* prologue end (size=10) */
 1033 05b0 8983      		std Y+1,r24
 241:mxavr.c       ****  OS_TASK_ARRY[os_now_task].task_wait_clock=disp_time;//设置当前线程等待时钟节拍数
 1034               		.stabn 68,0,241,.LM79-OS_TASK_DLY
 1035               	.LM79:
 1036 05b2 8091 0000 		lds r24,os_now_task
 1037 05b6 9927      		clr r25
 1038 05b8 880F      		lsl r24
 1039 05ba 991F      		rol r25
 1040 05bc 880F      		lsl r24
 1041 05be 991F      		rol r25
 1042 05c0 880F      		lsl r24
 1043 05c2 991F      		rol r25
 1044 05c4 FC01      		movw r30,r24
 1045 05c6 E050      		subi r30,lo8(-(OS_TASK_ARRY+6))
 1046 05c8 F040      		sbci r31,hi8(-(OS_TASK_ARRY+6))
 1047 05ca 8981      		ldd r24,Y+1
 1048 05cc 8083      		st Z,r24
 242:mxavr.c       ****  OS_DISP_TIME_P();                                    //进入汇编线程等待处理过程
 1049               		.stabn 68,0,242,.LM80-OS_TASK_DLY
 1050               	.LM80:
 1051 05ce 00D0      		rcall OS_DISP_TIME_P
 243:mxavr.c       **** }
 1052               		.stabn 68,0,243,.LM81-OS_TASK_DLY
 1053               	.LM81:
 1054               	/* epilogue: frame size=1 */
 1055 05d0 2196      		adiw r28,1
 1056 05d2 0FB6      		in __tmp_reg__,__SREG__
 1057 05d4 F894      		cli
 1058 05d6 DEBF      		out __SP_H__,r29
 1059 05d8 0FBE      		out __SREG__,__tmp_reg__
 1060 05da CDBF      		out __SP_L__,r28
 1061 05dc DF91      		pop r29
 1062 05de CF91      		pop r28
 1063 05e0 0895      		ret
 1064               	/* epilogue end (size=9) */
 1065               	/* function OS_TASK_DLY size 35 (16) */
 1066               		.size	OS_TASK_DLY, .-OS_TASK_DLY
 1067               	.Lscope6:
 1068               		.stabs	"",36,0,0,.Lscope6-OS_TASK_DLY
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 24


 1069               		.stabs	"OS_GET_TASK_ID:F(0,11)",36,0,247,OS_GET_TASK_ID
 1070               		.stabs	"task:p(5,2)",160,0,246,1
 1071               	.global	OS_GET_TASK_ID
 1072               		.type	OS_GET_TASK_ID, @function
 1073               	OS_GET_TASK_ID:
 244:mxavr.c       **** 
 245:mxavr.c       **** //获取线程ID
 246:mxavr.c       **** unsigned char OS_GET_TASK_ID(void *task)
 247:mxavr.c       **** {
 1074               		.stabn 68,0,247,.LM82-OS_GET_TASK_ID
 1075               	.LM82:
 1076               	/* prologue: frame size=5 */
 1077 05e2 CF93      		push r28
 1078 05e4 DF93      		push r29
 1079 05e6 CDB7      		in r28,__SP_L__
 1080 05e8 DEB7      		in r29,__SP_H__
 1081 05ea 2597      		sbiw r28,5
 1082 05ec 0FB6      		in __tmp_reg__,__SREG__
 1083 05ee F894      		cli
 1084 05f0 DEBF      		out __SP_H__,r29
 1085 05f2 0FBE      		out __SREG__,__tmp_reg__
 1086 05f4 CDBF      		out __SP_L__,r28
 1087               	/* prologue end (size=10) */
 1088 05f6 8983      		std Y+1,r24
 1089 05f8 9A83      		std Y+2,r25
 248:mxavr.c       ****  unsigned char loop_i;
 249:mxavr.c       ****  for (loop_i=0;loop_i<TASK_NUMBER;loop_i++)
 1090               		.stabn 68,0,249,.LM83-OS_GET_TASK_ID
 1091               	.LM83:
 1092               	.LBB7:
 1093 05fa 1B82      		std Y+3,__zero_reg__
 1094               	.L22:
 1095 05fc 8B81      		ldd r24,Y+3
 1096 05fe 8430      		cpi r24,lo8(4)
 1097 0600 08F0      		brlo .L25
 1098 0602 1BC0      		rjmp .L23
 1099               	.L25:
 250:mxavr.c       ****      {
 251:mxavr.c       **** 	  if (OS_TASK_ARRY[loop_i].task_address==(unsigned int)task)
 1100               		.stabn 68,0,251,.LM84-OS_GET_TASK_ID
 1101               	.LM84:
 1102 0604 8B81      		ldd r24,Y+3
 1103 0606 9927      		clr r25
 1104 0608 880F      		lsl r24
 1105 060a 991F      		rol r25
 1106 060c 880F      		lsl r24
 1107 060e 991F      		rol r25
 1108 0610 880F      		lsl r24
 1109 0612 991F      		rol r25
 1110 0614 FC01      		movw r30,r24
 1111 0616 E050      		subi r30,lo8(-(OS_TASK_ARRY))
 1112 0618 F040      		sbci r31,hi8(-(OS_TASK_ARRY))
 1113 061a 2081      		ld r18,Z
 1114 061c 3181      		ldd r19,Z+1
 1115 061e 8981      		ldd r24,Y+1
 1116 0620 9A81      		ldd r25,Y+2
 1117 0622 2817      		cp r18,r24
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 25


 1118 0624 3907      		cpc r19,r25
 1119 0626 29F4      		brne .L24
 252:mxavr.c       **** 	      {
 253:mxavr.c       **** 		    return loop_i;
 1120               		.stabn 68,0,253,.LM85-OS_GET_TASK_ID
 1121               	.LM85:
 1122 0628 8B81      		ldd r24,Y+3
 1123 062a 9927      		clr r25
 1124 062c 8C83      		std Y+4,r24
 1125 062e 9D83      		std Y+5,r25
 1126 0630 04C0      		rjmp .L21
 1127               		.stabn 68,0,249,.LM86-OS_GET_TASK_ID
 1128               	.LM86:
 1129               	.L24:
 1130 0632 8B81      		ldd r24,Y+3
 1131 0634 8F5F      		subi r24,lo8(-(1))
 1132 0636 8B83      		std Y+3,r24
 1133 0638 E1CF      		rjmp .L22
 1134               	.L23:
 254:mxavr.c       **** 		  }
 255:mxavr.c       **** 	 }
 256:mxavr.c       **** }
 1135               		.stabn 68,0,256,.LM87-OS_GET_TASK_ID
 1136               	.LM87:
 1137               	.L21:
 1138               	.LBE7:
 1139 063a 8C81      		ldd r24,Y+4
 1140 063c 9D81      		ldd r25,Y+5
 1141               	/* epilogue: frame size=5 */
 1142 063e 2596      		adiw r28,5
 1143 0640 0FB6      		in __tmp_reg__,__SREG__
 1144 0642 F894      		cli
 1145 0644 DEBF      		out __SP_H__,r29
 1146 0646 0FBE      		out __SREG__,__tmp_reg__
 1147 0648 CDBF      		out __SP_L__,r28
 1148 064a DF91      		pop r29
 1149 064c CF91      		pop r28
 1150 064e 0895      		ret
 1151               	/* epilogue end (size=9) */
 1152               	/* function OS_GET_TASK_ID size 55 (36) */
 1153               		.size	OS_GET_TASK_ID, .-OS_GET_TASK_ID
 1154               		.stabs	"loop_i:(0,11)",128,0,248,3
 1155               		.stabn	192,0,0,.LBB7-OS_GET_TASK_ID
 1156               		.stabn	224,0,0,.LBE7-OS_GET_TASK_ID
 1157               	.Lscope7:
 1158               		.stabs	"",36,0,0,.Lscope7-OS_GET_TASK_ID
 1159               		.stabs	"OS_START_TICK:F(0,20)",36,0,267,OS_START_TICK
 1160               	.global	OS_START_TICK
 1161               		.type	OS_START_TICK, @function
 1162               	OS_START_TICK:
 257:mxavr.c       **** 
 258:mxavr.c       **** 
 259:mxavr.c       **** //************************************************
 260:mxavr.c       **** //
 261:mxavr.c       **** //   以下是用户使用时需要修改的代码部分
 262:mxavr.c       **** //     (主要用来确定时钟节拍)
 263:mxavr.c       **** //************************************************
GAS LISTING C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/ccykaaaa.s 			page 26


 264:mxavr.c       **** 
 265:mxavr.c       **** //启动RTOS
 266:mxavr.c       **** inline void OS_START_TICK(void)
 267:mxavr.c       **** {
 1163               		.stabn 68,0,267,.LM88-OS_START_TICK
 1164               	.LM88:
 1165               	/* prologue: frame size=2 */
 1166 0650 CF93      		push r28
 1167 0652 DF93      		push r29
 1168 0654 CDB7      		in r28,__SP_L__
 1169 0656 DEB7      		in r29,__SP_H__
 1170 0658 2297      		sbiw r28,2
 1171 065a 0FB6      		in __tmp_reg__,__SREG__
 1172 065c F894      		cli
 1173 065e DEBF      		out __SP_H__,r29
 1174 0660 0FBE      		out __SREG__,__tmp_reg__
 1175 0662 CDBF      		out __SP_L__,r28
 1176               	/* prologue end (size=10) */
 268:mxavr.c       ****  void *p;             //获取汇编函数第一次启动时跳入调度入口点的地址临时指针(用户不必理会)
 269:mxavr.c       ****  
 270:mxavr.c       ****  SREG=SREG|0X80;      //开总中断       (用户可能需要修改部分)
 1177               		.stabn 68,0,270,.LM89-OS_START_TICK
 1178               	.LM89:
 1179               	.LBB8:
 1180 0664 8091 5F00 		lds r24,95
 1181 0668 8068      		ori r24,lo8(-128)
 1182 066a 8093 5F00 		sts 95,r24
 271:mxavr.c       ****  TIMSK=TIMSK|0X01;    //开时钟0中断    (用户可能需要修改部分)
 1183               		.stabn 68,0,271,.LM90-OS_START_TICK
 1184               	.LM90:
 1185 066e 8091 5900 		lds r24,89
 1186 0672 8160      		ori r24,lo8(1)
 1187 0674 8093 5900 		sts 89,r24
 272:mxavr.c       ****  TCNT0=0X80;          //设置时钟初值    (用户可能需要修改部分)
 1188               		.stabn 68,0,272,.LM91-OS_START_TICK
 1189               	.LM91:
 1190 0678 80E8      		ldi r24,lo8(-128)
 1191 067a 8093 5200 		sts 82,r24
 273:mxavr.c       ****  TCCR0=TCCR0|0X03;    //启动时钟0      (用户可能需要修改部分)
 1192               		.stabn 68,0,273,.LM92-OS_START_TICK
 1193               	.LM92:
 1194 067e 8091 5300 		lds r24,83
 1195 0682 8360      		ori r24,lo8(3)
 1196 0684 8093 5300 		sts 83,r24
 274:mxavr.c       ****  
 275:mxavr.c       ****  p=&START_TICK_POINT; //获取汇编函数第一次启动时跳入调度入口点地址   (用户不必理

⌨️ 快捷键说明

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