📄 main.lst
字号:
1176 .LM72:
1177 /* #APP */
1178 01a6 0197 1: sbiw r24,1
1179 01a8 F1F7 brne 1b
1180 /* #NOAPP */
1181 .LBE3:
1182 .LBE2:
1184 .Ltext5:
1186 .LM73:
1187 01aa 2150 subi r18,lo8(-(-1))
1188 01ac 3040 sbci r19,hi8(-(-1))
1189 01ae C9F7 brne .L191
1190 .L193:
1191 01b0 0895 ret
1192 /* epilogue: frame size=0 */
1193 /* epilogue: noreturn */
1194 /* epilogue end (size=0) */
1195 /* function delay_ms size 15 (15) */
1202 .global set5767
1204 set5767:
29:main.c **** _delay_loop_2(250);
30:main.c **** }
31:main.c ****
32:main.c **** void set5767(void)
33:main.c **** {
1206 .LM74:
1207 /* prologue: frame size=0 */
1208 /* prologue end (size=0) */
34:main.c **** uchar i = 0;
35:main.c ****
36:main.c **** TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); // SEND START SIGNAL
1210 .LM75:
1211 01b2 84EA ldi r24,lo8(-92)
1212 01b4 86BF out 86-0x20,r24
1213 .L195:
37:main.c **** while (!(TWCR & (1<<TWINT))); // WAIT FOR START SIG
1215 .LM76:
1216 01b6 06B6 in __tmp_reg__,86-0x20
1217 01b8 07FE sbrs __tmp_reg__,7
1218 01ba FDCF rjmp .L195
38:main.c **** //if ((TWSR & 0xF8) != START) ERROR();
39:main.c ****
40:main.c **** TWDR = SLA_W; // send address
1220 .LM77:
1221 01bc 80EC ldi r24,lo8(-64)
1222 01be 83B9 out 35-0x20,r24
41:main.c **** TWCR = (1<<TWINT) | (1<<TWEN);
1224 .LM78:
1225 01c0 84E8 ldi r24,lo8(-124)
1226 01c2 86BF out 86-0x20,r24
1227 .L198:
42:main.c **** while (!(TWCR & (1<<TWINT)));
1229 .LM79:
1230 01c4 06B6 in __tmp_reg__,86-0x20
1231 01c6 07FE sbrs __tmp_reg__,7
1232 01c8 FDCF rjmp .L198
43:main.c **** //if ((TWSR & 0xF8) !=MT_SLA_ACK) ERROR();
44:main.c ****
45:main.c **** for ( i = 0; i < 5; i++ )
1234 .LM80:
1235 01ca 90E0 ldi r25,lo8(0)
1236 01cc 24E8 ldi r18,lo8(-124)
1237 .L207:
46:main.c **** {
47:main.c **** TWDR = senddata[i];
1239 .LM81:
1240 01ce E92F mov r30,r25
1241 01d0 FF27 clr r31
1242 01d2 E050 subi r30,lo8(-(senddata))
1243 01d4 F040 sbci r31,hi8(-(senddata))
1244 01d6 8081 ld r24,Z
1245 01d8 83B9 out 35-0x20,r24
48:main.c **** TWCR = (1<<TWINT) | (1<<TWEN); // send data
1247 .LM82:
1248 01da 26BF out 86-0x20,r18
1249 .L204:
49:main.c **** while (!(TWCR & (1<<TWINT)));
1251 .LM83:
1252 01dc 06B6 in __tmp_reg__,86-0x20
1253 01de 07FE sbrs __tmp_reg__,7
1254 01e0 FDCF rjmp .L204
1256 .LM84:
1257 01e2 9F5F subi r25,lo8(-(1))
1258 01e4 9530 cpi r25,lo8(5)
1259 01e6 98F3 brlo .L207
50:main.c **** // if ((TWSR & 0xF8) != MT_DATA_ACK) ERROR();
51:main.c **** }
52:main.c ****
53:main.c **** TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO); //SEND STOP SIGNAL
1261 .LM85:
1262 01e8 84E9 ldi r24,lo8(-108)
1263 01ea 86BF out 86-0x20,r24
1264 /* epilogue: frame size=0 */
1265 01ec 0895 ret
1266 /* epilogue end (size=1) */
1267 /* function set5767 size 30 (29) */
1271 .global read5767
1273 read5767:
54:main.c ****
55:main.c **** //LCD_write_english_string(60,3,"sOK");
56:main.c **** }
57:main.c ****
58:main.c ****
59:main.c **** void read5767(void)
60:main.c **** {
1275 .LM86:
1276 /* prologue: frame size=0 */
1277 /* prologue end (size=0) */
61:main.c **** uchar i = 0;
62:main.c ****
63:main.c **** TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); // SEND START SIGNAL
1279 .LM87:
1280 01ee 84EA ldi r24,lo8(-92)
1281 01f0 86BF out 86-0x20,r24
1282 .L211:
64:main.c **** while (!(TWCR & (1<<TWINT))); // WAIT FOR START SIG
1284 .LM88:
1285 01f2 06B6 in __tmp_reg__,86-0x20
1286 01f4 07FE sbrs __tmp_reg__,7
1287 01f6 FDCF rjmp .L211
65:main.c **** //if ((TWSR & 0xF8) != START) ERROR();
66:main.c ****
67:main.c **** TWDR = SLA_R; // send address
1289 .LM89:
1290 01f8 81EC ldi r24,lo8(-63)
1291 01fa 83B9 out 35-0x20,r24
68:main.c **** TWCR = (1<<TWINT) | (1<<TWEN);
1293 .LM90:
1294 01fc 84E8 ldi r24,lo8(-124)
1295 01fe 86BF out 86-0x20,r24
1296 .L214:
69:main.c **** while (!(TWCR & (1<<TWINT)));
1298 .LM91:
1299 0200 06B6 in __tmp_reg__,86-0x20
1300 0202 07FE sbrs __tmp_reg__,7
1301 0204 FDCF rjmp .L214
70:main.c **** //if ((TWSR & 0xF8) !=MT_SLA_ACK) ERROR();
71:main.c **** //TWCR = (1<<TWINT) | (1<<TWEN);
72:main.c ****
73:main.c **** for ( i = 0; i < 5; i++ )
1303 .LM92:
1304 0206 90E0 ldi r25,lo8(0)
1305 0208 24E8 ldi r18,lo8(-124)
1306 .L223:
74:main.c **** {
75:main.c **** TWCR = (1<<TWINT) | (1<<TWEN); // read data
1308 .LM93:
1309 020a 26BF out 86-0x20,r18
1310 .L220:
76:main.c **** while (!(TWCR & (1<<TWINT)));
1312 .LM94:
1313 020c 06B6 in __tmp_reg__,86-0x20
1314 020e 07FE sbrs __tmp_reg__,7
1315 0210 FDCF rjmp .L220
77:main.c **** readdata[i] = TWDR ;
1317 .LM95:
1318 0212 E92F mov r30,r25
1319 0214 FF27 clr r31
1320 0216 E050 subi r30,lo8(-(readdata))
1321 0218 F040 sbci r31,hi8(-(readdata))
1322 021a 83B1 in r24,35-0x20
1323 021c 8083 st Z,r24
1325 .LM96:
1326 021e 9F5F subi r25,lo8(-(1))
1327 0220 9530 cpi r25,lo8(5)
1328 0222 98F3 brlo .L223
78:main.c ****
79:main.c ****
80:main.c **** // if ((TWSR & 0xF8) != MT_DATA_ACK) ERROR();
81:main.c **** }
82:main.c ****
83:main.c **** TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO); //SEND STOP SIGNAL
1330 .LM97:
1331 0224 84E9 ldi r24,lo8(-108)
1332 0226 86BF out 86-0x20,r24
1333 /* epilogue: frame size=0 */
1334 0228 0895 ret
1335 /* epilogue end (size=1) */
1336 /* function read5767 size 30 (29) */
1339 .data
1340 .LC0:
1341 0228 2000 .string " "
1342 .LC1:
1343 022a 2E00 .string "."
1344 .LC2:
1345 022c 204D 487A .string " MHz"
1345 00
1346 .text
1348 .global show_frequency
1350 show_frequency:
84:main.c ****
85:main.c **** //LCD_write_english_string(10,3,"rOK");
86:main.c **** }
87:main.c ****
88:main.c **** void show_frequency(void)
89:main.c **** {
1352 .LM98:
1353 /* prologue: frame size=5 */
1354 022a EF92 push r14
1355 022c FF92 push r15
1356 022e 0F93 push r16
1357 0230 1F93 push r17
1358 0232 CF93 push r28
1359 0234 DF93 push r29
1360 0236 CDB7 in r28,__SP_L__
1361 0238 DEB7 in r29,__SP_H__
1362 023a 2597 sbiw r28,5
1363 023c 0FB6 in __tmp_reg__,__SREG__
1364 023e F894 cli
1365 0240 DEBF out __SP_H__,r29
1366 0242 0FBE out __SREG__,__tmp_reg__
1367 0244 CDBF out __SP_L__,r28
1368 /* prologue end (size=14) */
90:main.c **** uint32_t nPLL =0; //Dec
91:main.c **** uint32_t frequency = 0; //Khz
92:main.c **** uchar display_bit[5];
93:main.c ****
94:main.c **** uchar tbTmp1=readdata[1];
1370 .LM99:
1371 0246 2091 0000 lds r18,readdata+1
95:main.c **** uchar tbTmp2=readdata[0];
1373 .LM100:
1374 024a 8091 0000 lds r24,readdata
96:main.c **** tbTmp2&=0x3f;
1376 .LM101:
1377 024e 8F73 andi r24,lo8(63)
97:main.c ****
98:main.c **** nPLL=tbTmp2*256+tbTmp1;
1379 .LM102:
1380 0250 9927 clr r25
1381 0252 982F mov r25,r24
1382 0254 8827 clr r24
1383 0256 820F add r24,r18
1384 0258 911D adc r25,__zero_reg__
1385 025a 9C01 movw r18,r24
1386 025c 4427 clr r20
1387 025e 37FD sbrc r19,7
1388 0260 4095 com r20
1389 0262 542F mov r21,r20
99:main.c ****
100:main.c **** // calculate searched station frequency
101:main.c **** if(senddata[2]&0x10)
1391 .LM103:
1392 0264 8091 0000 lds r24,senddata+2
1393 0268 84FF sbrs r24,4
1394 026a 17C0 rjmp .L227
102:main.c **** frequency =(unsigned long)(nPLL*82/10-225);
1396 .LM104:
1397 026c CA01 movw r24,r20
1398 026e B901 movw r22,r18
1399 0270 22E5 ldi r18,lo8(82)
1400 0272 30E0 ldi r19,hi8(82)
1401 0274 40E0 ldi r20,hlo8(82)
1402 0276 50E0 ldi r21,hhi8(82)
1403 0278 00D0 rcall __mulsi3
1404 027a DC01 movw r26,r24
1405 027c CB01 movw r24,r22
1406 027e BC01 movw r22,r24
1407 0280 CD01 movw r24,r26
1408 0282 2AE0 ldi r18,lo8(10)
1409 0284 30E0 ldi r19,hi8(10)
1410 0286 40E0 ldi r20,hlo8(10)
1411 0288 50E0 ldi r21,hhi8(10)
1412 028a 00D0 rcall __udivmodsi4
1413 028c 7901 movw r14,r18
1414 028e 8A01 movw r16,r20
1415 0290 8FE1 ldi r24,lo8(-225)
1416 0292 9FEF ldi r25,hi8(-225)
1417 0294 AFEF ldi r26,hlo8(-225)
1418 0296 BFEF ldi r27,hhi8(-225)
1419 0298 16C0 rjmp .L231
1420 .L227:
103:main.c **** else
104:main.c **** frequency =(unsigned long)(nPLL*82/10+225);
1422 .LM105:
1423 029a CA01 movw r24,r20
1424 029c B901 movw r22,r18
1425 029e 22E5 ldi r18,lo8(82)
1426 02a0 30E0 ldi r19,hi8(82)
1427 02a2 40E0 ldi r20,hlo8(82)
1428 02a4 50E0 ldi r21,hhi8(82)
1429 02a6 00D0 rcall __mulsi3
1430 02a8 DC01 movw r26,r24
1431 02aa CB01 movw r24,r22
1432 02ac BC01 movw r22,r24
1433 02ae CD01 movw r24,r26
1434 02b0 2AE0 ldi r18,lo8(10)
1435 02b2 30E0 ldi r19,hi8(10)
1436 02b4 40E0 ldi r20,hlo8(10)
1437 02b6 50E0 ldi r21,hhi8(10)
1438 02b8 00D0 rcall __udivmodsi4
1439 02ba 7901 movw r14,r18
1440 02bc 8A01 movw r16,r20
1441 02be 81EE ldi r24,lo8(225)
1442 02c0 90E0 ldi r25,hi8(225)
1443 02c2 A0E0 ldi r26,hlo8(225)
1444 02c4 B0E0 ldi r27,hhi8(225)
1445 .L231:
1446 02c6 E80E add r14,r24
1447 02c8 F91E adc r15,r25
1448 02ca 0A1F adc r16,r26
1449 02cc 1B1F adc r17,r27
105:main.c ****
106:main.c **** display_bit[0] = frequency / 100000 ;
1451 .LM106:
1452 02ce C801 movw r24,r16
1453 02d0 B701 movw r22,r14
1454 02d2 20EA ldi r18,lo8(100000)
1455 02d4 36E8 ldi r19,hi8(100000)
1456 02d6 41E0 ldi r20,hlo8(100000)
1457 02d8 50E0 ldi r21,hhi8(100000)
1458 02da 00D0 rcall __udivmodsi4
1459 02dc DA01 movw r26,r20
1460 02de C901 movw r24,r18
1461 02e0 2983 std Y+1,r18
107:main.c **** if ( display_bit[0] == 0 ) display_bit[0]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -