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

📄 main.lst

📁 光电鼠标IC资料
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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 + -