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 + -
显示快捷键?