📄 user_code.lst
字号:
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 + -