cc2420db_library.lst
来自「MatLab图像传感器网络仿真平台WiSNAP」· LST 代码 · 共 1,465 行 · 第 1/5 页
LST
1,465 行
1036 0574 CF91 pop r28
1037 0576 1F91 pop r17
1038 0578 0F91 pop r16
1039 057a FF90 pop r15
1040 057c EF90 pop r14
1041 057e 0895 ret
1042 /* epilogue end (size=7) */
1043 /* function recv_cc_packet size 169 (156) */
1047 .Lscope7:
1049 .data
1050 .LC11:
1051 0074 2534 6858 .string "%4hX%4hX%2X"
1051 2534 6858
1051 2532 5800
1052 .LC12:
1053 0080 3A25 6325 .string ":%c%04X%04X%02X"
1053 3034 5825
1053 3034 5825
1053 3032 5800
1054 .LC13:
1055 0090 2530 3258 .string "%02X\r\n"
1055 0D0A 00
1056 .LC14:
1057 0097 3A25 6325 .string ":%c%02X\r\n"
1057 3032 580D
1057 0A00
1058 .text
1062 .global send_cc_packet
1064 send_cc_packet:
315:cc2420db_library.c ****
316:cc2420db_library.c **** /* return status */
317:cc2420db_library.c **** return status;
318:cc2420db_library.c **** }
319:cc2420db_library.c ****
320:cc2420db_library.c **** /*******************************************************************************
321:cc2420db_library.c **** * Function: Send CC2420 packet. *
322:cc2420db_library.c **** *******************************************************************************/
323:cc2420db_library.c **** int send_cc_packet(char *command, char *response)
324:cc2420db_library.c **** {
1066 .LM61:
1067 /* prologue: frame size=2 */
1068 0580 8F92 push r8
1069 0582 9F92 push r9
1070 0584 AF92 push r10
1071 0586 BF92 push r11
1072 0588 CF92 push r12
1073 058a DF92 push r13
1074 058c EF92 push r14
1075 058e FF92 push r15
1076 0590 0F93 push r16
1077 0592 1F93 push r17
1078 0594 CF93 push r28
1079 0596 DF93 push r29
1080 0598 CDB7 in r28,__SP_L__
1081 059a DEB7 in r29,__SP_H__
1082 059c 2297 sbiw r28,2
1083 059e 0FB6 in __tmp_reg__,__SREG__
1084 05a0 F894 cli
1085 05a2 DEBF out __SP_H__,r29
1086 05a4 0FBE out __SREG__,__tmp_reg__
1087 05a6 CDBF out __SP_L__,r28
1088 /* prologue end (size=20) */
1089 05a8 6C01 movw r12,r24
1090 05aa 5B01 movw r10,r22
325:cc2420db_library.c **** int i, status;
326:cc2420db_library.c **** unsigned int dummy = 0;
1092 .LM62:
1093 05ac 1982 std Y+1,__zero_reg__
1094 05ae 1A82 std Y+2,__zero_reg__
327:cc2420db_library.c ****
328:cc2420db_library.c **** /* parse packet header */
329:cc2420db_library.c **** status = sscanf(&command[1], "%4hX%4hX%2X",
1096 .LM63:
1097 05b0 4E01 movw r8,r28
1098 05b2 0894 sec
1099 05b4 811C adc r8,__zero_reg__
1100 05b6 911C adc r9,__zero_reg__
1101 05b8 9F92 push r9
1102 05ba 8F92 push r8
1103 05bc 80E0 ldi r24,lo8(rfTxInfo+2)
1104 05be 90E0 ldi r25,hi8(rfTxInfo+2)
1105 05c0 9F93 push r25
1106 05c2 8F93 push r24
1107 05c4 0297 sbiw r24,2
1108 05c6 9F93 push r25
1109 05c8 8F93 push r24
1110 05ca 80E0 ldi r24,lo8(.LC11)
1111 05cc 90E0 ldi r25,hi8(.LC11)
1112 05ce 9F93 push r25
1113 05d0 8F93 push r24
1114 05d2 0894 sec
1115 05d4 C11C adc r12,__zero_reg__
1116 05d6 D11C adc r13,__zero_reg__
1117 05d8 DF92 push r13
1118 05da CF92 push r12
1119 05dc 0894 sec
1120 05de C108 sbc r12,__zero_reg__
1121 05e0 D108 sbc r13,__zero_reg__
1122 05e2 0E94 0000 call sscanf
330:cc2420db_library.c **** &rfTxInfo.destPanId, &rfTxInfo.destAddr, &dummy);
331:cc2420db_library.c **** rfTxInfo.destPanId = (command[1] != '0' ?
1124 .LM64:
1125 05e6 2DB7 in r18,__SP_L__
1126 05e8 3EB7 in r19,__SP_H__
1127 05ea 265F subi r18,lo8(-(10))
1128 05ec 3F4F sbci r19,hi8(-(10))
1129 05ee 0FB6 in __tmp_reg__,__SREG__
1130 05f0 F894 cli
1131 05f2 3EBF out __SP_H__,r19
1132 05f4 0FBE out __SREG__,__tmp_reg__
1133 05f6 2DBF out __SP_L__,r18
1134 05f8 F601 movw r30,r12
1135 05fa 8181 ldd r24,Z+1
1136 05fc 2091 0000 lds r18,rfTxInfo
1137 0600 3091 0000 lds r19,(rfTxInfo)+1
1138 0604 8033 cpi r24,lo8(48)
1139 0606 11F0 breq .L52
1141 .LM65:
1142 0608 C901 movw r24,r18
1143 060a 06C0 rjmp .L53
1144 .L52:
1145 060c C901 movw r24,r18
1146 060e 74E0 ldi r23,4
1147 0610 9695 1: lsr r25
1148 0612 8795 ror r24
1149 0614 7A95 dec r23
1150 0616 E1F7 brne 1b
1151 .L53:
1152 0618 9093 0000 sts (rfTxInfo)+1,r25
1153 061c 8093 0000 sts rfTxInfo,r24
332:cc2420db_library.c **** rfTxInfo.destPanId : rfTxInfo.destPanId >> 4);
333:cc2420db_library.c **** rfTxInfo.destAddr = (command[5] != '0' ?
1155 .LM66:
1156 0620 F601 movw r30,r12
1157 0622 8581 ldd r24,Z+5
1158 0624 2091 0000 lds r18,rfTxInfo+2
1159 0628 3091 0000 lds r19,(rfTxInfo+2)+1
1160 062c 4981 ldd r20,Y+1
1161 062e 5A81 ldd r21,Y+2
1162 0630 8033 cpi r24,lo8(48)
1163 0632 11F0 breq .L54
1164 0634 C901 movw r24,r18
1165 0636 06C0 rjmp .L55
1166 .L54:
1167 0638 C901 movw r24,r18
1168 063a 64E0 ldi r22,4
1169 063c 9695 1: lsr r25
1170 063e 8795 ror r24
1171 0640 6A95 dec r22
1172 0642 E1F7 brne 1b
1173 .L55:
1174 0644 9093 0000 sts (rfTxInfo+2)+1,r25
1175 0648 8093 0000 sts rfTxInfo+2,r24
334:cc2420db_library.c **** rfTxInfo.destAddr : rfTxInfo.destAddr >> 4);
335:cc2420db_library.c **** rfTxInfo.length = (INT8) (command[9] != '0' ? dummy : dummy >> 4);
1177 .LM67:
1178 064c 9A01 movw r18,r20
1179 064e F601 movw r30,r12
1180 0650 8185 ldd r24,Z+9
1181 0652 8033 cpi r24,lo8(48)
1182 0654 29F4 brne .L56
1183 0656 54E0 ldi r21,4
1184 0658 3695 1: lsr r19
1185 065a 2795 ror r18
1186 065c 5A95 dec r21
1187 065e E1F7 brne 1b
1188 .L56:
1189 0660 2093 0000 sts rfTxInfo+4,r18
336:cc2420db_library.c ****
337:cc2420db_library.c **** /* parse packet payload */
338:cc2420db_library.c **** for (i = 0; i < rfTxInfo.length; i++)
1191 .LM68:
1192 0664 EE24 clr r14
1193 0666 FF24 clr r15
1194 0668 1216 cp __zero_reg__,r18
1195 066a BCF5 brge .L67
1196 066c 8601 movw r16,r12
1197 .L61:
339:cc2420db_library.c **** {
340:cc2420db_library.c **** status = sscanf(&command[11+2*i], "%2X", &dummy);
1199 .LM69:
1200 066e 9F92 push r9
1201 0670 8F92 push r8
1202 0672 80E0 ldi r24,lo8(.LC0)
1203 0674 90E0 ldi r25,hi8(.LC0)
1204 0676 9F93 push r25
1205 0678 8F93 push r24
1206 067a 055F subi r16,lo8(-(11))
1207 067c 1F4F sbci r17,hi8(-(11))
1208 067e 1F93 push r17
1209 0680 0F93 push r16
1210 0682 0B50 subi r16,lo8(-(-11))
1211 0684 1040 sbci r17,hi8(-(-11))
1212 0686 0E94 0000 call sscanf
341:cc2420db_library.c **** rfTxInfo.pPayload[i] = (BYTE) (command[11+2*i] != '0' ?
1214 .LM70:
1215 068a A091 0000 lds r26,rfTxInfo+5
1216 068e B091 0000 lds r27,(rfTxInfo+5)+1
1217 0692 AE0D add r26,r14
1218 0694 BF1D adc r27,r15
1219 0696 2DB7 in r18,__SP_L__
1220 0698 3EB7 in r19,__SP_H__
1221 069a 2A5F subi r18,lo8(-(6))
1222 069c 3F4F sbci r19,hi8(-(6))
1223 069e 0FB6 in __tmp_reg__,__SREG__
1224 06a0 F894 cli
1225 06a2 3EBF out __SP_H__,r19
1226 06a4 0FBE out __SREG__,__tmp_reg__
1227 06a6 2DBF out __SP_L__,r18
1228 06a8 2981 ldd r18,Y+1
1229 06aa 3A81 ldd r19,Y+2
1230 06ac F801 movw r30,r16
1231 06ae 8385 ldd r24,Z+11
1232 06b0 8033 cpi r24,lo8(48)
1233 06b2 29F4 brne .L60
1234 06b4 44E0 ldi r20,4
1235 06b6 3695 1: lsr r19
1236 06b8 2795 ror r18
1237 06ba 4A95 dec r20
1238 06bc E1F7 brne 1b
1239 .L60:
1240 06be 2C93 st X,r18
1242 .LM71:
1243 06c0 0894 sec
1244 06c2 E11C adc r14,__zero_reg__
1245 06c4 F11C adc r15,__zero_reg__
1246 06c6 0E5F subi r16,lo8(-(2))
1247 06c8 1F4F sbci r17,hi8(-(2))
1248 06ca 8091 0000 lds r24,rfTxInfo+4
1249 06ce 9927 clr r25
1250 06d0 87FD sbrc r24,7
1251 06d2 9095 com r25
1252 06d4 E816 cp r14,r24
1253 06d6 F906 cpc r15,r25
1254 06d8 54F2 brlt .L61
1255 .L67:
342:cc2420db_library.c **** dummy : dummy >> 4);;
343:cc2420db_library.c **** }
344:cc2420db_library.c ****
345:cc2420db_library.c **** /* parse packet footer */
346:cc2420db_library.c **** status = sscanf(&command[11+2*rfTxInfo.length], "%2X",
1257 .LM72:
1258 06da CE01 movw r24,r28
1259 06dc 0196 adiw r24,1
1260 06de 9F93 push r25
1261 06e0 8F93 push r24
1262 06e2 80E0 ldi r24,lo8(.LC0)
1263 06e4 90E0 ldi r25,hi8(.LC0)
1264 06e6 9F93 push r25
1265 06e8 8F93 push r24
1266 06ea 8091 0000 lds r24,rfTxInfo+4
1267 06ee 9927 clr r25
1268 06f0 87FD sbrc r24,7
1269 06f2 9095 com r25
1270 06f4 880F add r24,r24
1271 06f6 991F adc r25,r25
1272 06f8 8C0D add r24,r12
1273 06fa 9D1D adc r25,r13
1274 06fc 0B96 adiw r24,11
1275 06fe 9F93 push r25
1276 0700 8F93 push r24
1277 0702 0E94 0000 call sscanf
347:cc2420db_library.c **** &dummy);
348:cc2420db_library.c **** rfTxInfo.ackRequest = (BOOL) dummy & 0x01;
1279 .LM73:
1280 0706 8981 ldd r24,Y+1
1281 0708 8170 andi r24,lo8(1)
1282 070a 8093 0000 sts rfTxInfo+7,r24
349:cc2420db_library.c ****
350:cc2420db_library.c **** /* add packet header */
351:cc2420db_library.c **** status = sprintf(&response[0], ":%c%04X%04X%02X", command[0],
1284 .LM74:
1285 070e 8091 0000 lds r24,rfTxInfo+4
1286 0712 9927 clr r25
1287 0714 87FD sbrc r24,7
1288 0716 9095 com r25
1289 0718 9F93 push r25
1290 071a 8F93 push r24
1291 071c 8091 0000 lds r24,rfTxInfo+2
1292 0720 9091 0000 lds r25,(rfTxInfo+2)+1
1293 0724 9F93 push r25
1294 0726 8F93 push r24
1295 0728 8091 0000 lds r24,rfTxInfo
1296 072c 9091 0000 lds r25,(rfTxInfo)+1
1297 0730 9F93 push r25
1298 0732 8F93 push r24
1299 0734 F601 movw r30,r12
1300 0736 8081 ld r24,Z
1301 0738 9927 clr r25
1302 073a 9F93 push r25
1303 073c 8F93 push r24
1304 073e 80E0 ldi r24,lo8(.LC12)
1305 0740 90E0 ldi r25,hi8(.LC12)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?