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

📄 main.lss

📁 用AVR单片机mega16控制TEA5756收音机芯片的程序。
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 204:	f1 f7       	brne	.-4      	; 0x202
 206:	21 50       	subi	r18, 0x01	; 1
 208:	30 40       	sbci	r19, 0x00	; 0
 20a:	c9 f7       	brne	.-14     	; 0x1fe
 20c:	08 95       	ret

0000020e <set5767>:
		_delay_loop_2(250);
}

void set5767(void)
{
	uchar i = 0;
	
	TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); // SEND START SIGNAL
 20e:	84 ea       	ldi	r24, 0xA4	; 164
 210:	86 bf       	out	0x36, r24	; 54
	while (!(TWCR & (1<<TWINT)));           // WAIT FOR START SIG
 212:	06 b6       	in	r0, 0x36	; 54
 214:	07 fe       	sbrs	r0, 7
 216:	fd cf       	rjmp	.-6      	; 0x212
	//if ((TWSR & 0xF8) != START)  ERROR();
	
	TWDR = SLA_W;                            // send address
 218:	80 ec       	ldi	r24, 0xC0	; 192
 21a:	83 b9       	out	0x03, r24	; 3
	TWCR = (1<<TWINT) | (1<<TWEN);
 21c:	84 e8       	ldi	r24, 0x84	; 132
 21e:	86 bf       	out	0x36, r24	; 54
	while (!(TWCR & (1<<TWINT)));
 220:	06 b6       	in	r0, 0x36	; 54
 222:	07 fe       	sbrs	r0, 7
 224:	fd cf       	rjmp	.-6      	; 0x220
	//if ((TWSR & 0xF8) !=MT_SLA_ACK) ERROR();
	
	for ( i = 0; i < 5; i++ )
 226:	90 e0       	ldi	r25, 0x00	; 0
 228:	24 e8       	ldi	r18, 0x84	; 132
	{
		TWDR = senddata[i];
 22a:	e9 2f       	mov	r30, r25
 22c:	ff 27       	eor	r31, r31
 22e:	e6 51       	subi	r30, 0x16	; 22
 230:	fd 4f       	sbci	r31, 0xFD	; 253
 232:	80 81       	ld	r24, Z
 234:	83 b9       	out	0x03, r24	; 3
		TWCR = (1<<TWINT) | (1<<TWEN);      // send data
 236:	26 bf       	out	0x36, r18	; 54
		while (!(TWCR & (1<<TWINT)));
 238:	06 b6       	in	r0, 0x36	; 54
 23a:	07 fe       	sbrs	r0, 7
 23c:	fd cf       	rjmp	.-6      	; 0x238
 23e:	9f 5f       	subi	r25, 0xFF	; 255
 240:	95 30       	cpi	r25, 0x05	; 5
 242:	98 f3       	brcs	.-26     	; 0x22a
	//	if ((TWSR & 0xF8) != MT_DATA_ACK) ERROR();
	}
	
	TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO); //SEND STOP SIGNAL
 244:	84 e9       	ldi	r24, 0x94	; 148
 246:	86 bf       	out	0x36, r24	; 54
 248:	08 95       	ret

0000024a <read5767>:
	
	//LCD_write_english_string(60,3,"sOK");
}
 
 
void read5767(void)
{
	uchar i = 0;
	
	TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); // SEND START SIGNAL
 24a:	84 ea       	ldi	r24, 0xA4	; 164
 24c:	86 bf       	out	0x36, r24	; 54
	while (!(TWCR & (1<<TWINT)));           // WAIT FOR START SIG
 24e:	06 b6       	in	r0, 0x36	; 54
 250:	07 fe       	sbrs	r0, 7
 252:	fd cf       	rjmp	.-6      	; 0x24e
	//if ((TWSR & 0xF8) != START)  ERROR();
	
	TWDR = SLA_R;                            // send address
 254:	81 ec       	ldi	r24, 0xC1	; 193
 256:	83 b9       	out	0x03, r24	; 3
	TWCR = (1<<TWINT) | (1<<TWEN);
 258:	84 e8       	ldi	r24, 0x84	; 132
 25a:	86 bf       	out	0x36, r24	; 54
	while (!(TWCR & (1<<TWINT)));
 25c:	06 b6       	in	r0, 0x36	; 54
 25e:	07 fe       	sbrs	r0, 7
 260:	fd cf       	rjmp	.-6      	; 0x25c
	//if ((TWSR & 0xF8) !=MT_SLA_ACK) ERROR();
	//TWCR = (1<<TWINT) | (1<<TWEN);
	
	for ( i = 0; i < 5; i++ )
 262:	90 e0       	ldi	r25, 0x00	; 0
 264:	24 e8       	ldi	r18, 0x84	; 132
	{
		TWCR = (1<<TWINT) | (1<<TWEN);      // read data
 266:	26 bf       	out	0x36, r18	; 54
		while (!(TWCR & (1<<TWINT)));
 268:	06 b6       	in	r0, 0x36	; 54
 26a:	07 fe       	sbrs	r0, 7
 26c:	fd cf       	rjmp	.-6      	; 0x268
		readdata[i] = TWDR ;
 26e:	e9 2f       	mov	r30, r25
 270:	ff 27       	eor	r31, r31
 272:	e1 51       	subi	r30, 0x11	; 17
 274:	fd 4f       	sbci	r31, 0xFD	; 253
 276:	83 b1       	in	r24, 0x03	; 3
 278:	80 83       	st	Z, r24
 27a:	9f 5f       	subi	r25, 0xFF	; 255
 27c:	95 30       	cpi	r25, 0x05	; 5
 27e:	98 f3       	brcs	.-26     	; 0x266
		
		
	//	if ((TWSR & 0xF8) != MT_DATA_ACK) ERROR();
	}
	
	TWCR = (1<<TWINT)|(1<<TWEN)|(1<<TWSTO); //SEND STOP SIGNAL
 280:	84 e9       	ldi	r24, 0x94	; 148
 282:	86 bf       	out	0x36, r24	; 54
 284:	08 95       	ret

00000286 <show_frequency>:

	//LCD_write_english_string(10,3,"rOK");
}

void show_frequency(void)		
{
 286:	ef 92       	push	r14
 288:	ff 92       	push	r15
 28a:	0f 93       	push	r16
 28c:	1f 93       	push	r17
 28e:	cf 93       	push	r28
 290:	df 93       	push	r29
 292:	cd b7       	in	r28, 0x3d	; 61
 294:	de b7       	in	r29, 0x3e	; 62
 296:	25 97       	sbiw	r28, 0x05	; 5
 298:	0f b6       	in	r0, 0x3f	; 63
 29a:	f8 94       	cli
 29c:	de bf       	out	0x3e, r29	; 62
 29e:	0f be       	out	0x3f, r0	; 63
 2a0:	cd bf       	out	0x3d, r28	; 61
	uint32_t nPLL =0;			    //Dec 
	uint32_t frequency = 0;	        //Khz
	uchar display_bit[5];
	
	uchar tbTmp1=readdata[1];
 2a2:	20 91 f0 02 	lds	r18, 0x02F0
	uchar tbTmp2=readdata[0];
 2a6:	80 91 ef 02 	lds	r24, 0x02EF
	tbTmp2&=0x3f;
 2aa:	8f 73       	andi	r24, 0x3F	; 63

	nPLL=tbTmp2*256+tbTmp1;
 2ac:	99 27       	eor	r25, r25
 2ae:	98 2f       	mov	r25, r24
 2b0:	88 27       	eor	r24, r24
 2b2:	82 0f       	add	r24, r18
 2b4:	91 1d       	adc	r25, r1
 2b6:	9c 01       	movw	r18, r24
 2b8:	44 27       	eor	r20, r20
 2ba:	37 fd       	sbrc	r19, 7
 2bc:	40 95       	com	r20
 2be:	54 2f       	mov	r21, r20
          
	// calculate searched station frequency  
    if(senddata[2]&0x10)
 2c0:	80 91 ec 02 	lds	r24, 0x02EC
 2c4:	84 ff       	sbrs	r24, 4
 2c6:	17 c0       	rjmp	.+46     	; 0x2f6
		frequency =(unsigned long)(nPLL*82/10-225);
 2c8:	ca 01       	movw	r24, r20
 2ca:	b9 01       	movw	r22, r18
 2cc:	22 e5       	ldi	r18, 0x52	; 82
 2ce:	30 e0       	ldi	r19, 0x00	; 0
 2d0:	40 e0       	ldi	r20, 0x00	; 0
 2d2:	50 e0       	ldi	r21, 0x00	; 0
 2d4:	75 d1       	rcall	.+746    	; 0x5c0
 2d6:	dc 01       	movw	r26, r24
 2d8:	cb 01       	movw	r24, r22
 2da:	bc 01       	movw	r22, r24
 2dc:	cd 01       	movw	r24, r26
 2de:	2a e0       	ldi	r18, 0x0A	; 10
 2e0:	30 e0       	ldi	r19, 0x00	; 0
 2e2:	40 e0       	ldi	r20, 0x00	; 0
 2e4:	50 e0       	ldi	r21, 0x00	; 0
 2e6:	97 d1       	rcall	.+814    	; 0x616
 2e8:	79 01       	movw	r14, r18
 2ea:	8a 01       	movw	r16, r20
 2ec:	8f e1       	ldi	r24, 0x1F	; 31
 2ee:	9f ef       	ldi	r25, 0xFF	; 255
 2f0:	af ef       	ldi	r26, 0xFF	; 255
 2f2:	bf ef       	ldi	r27, 0xFF	; 255
 2f4:	16 c0       	rjmp	.+44     	; 0x322
    else
		frequency =(unsigned long)(nPLL*82/10+225);
 2f6:	ca 01       	movw	r24, r20
 2f8:	b9 01       	movw	r22, r18
 2fa:	22 e5       	ldi	r18, 0x52	; 82
 2fc:	30 e0       	ldi	r19, 0x00	; 0
 2fe:	40 e0       	ldi	r20, 0x00	; 0
 300:	50 e0       	ldi	r21, 0x00	; 0
 302:	5e d1       	rcall	.+700    	; 0x5c0
 304:	dc 01       	movw	r26, r24
 306:	cb 01       	movw	r24, r22
 308:	bc 01       	movw	r22, r24
 30a:	cd 01       	movw	r24, r26
 30c:	2a e0       	ldi	r18, 0x0A	; 10
 30e:	30 e0       	ldi	r19, 0x00	; 0
 310:	40 e0       	ldi	r20, 0x00	; 0
 312:	50 e0       	ldi	r21, 0x00	; 0
 314:	80 d1       	rcall	.+768    	; 0x616
 316:	79 01       	movw	r14, r18
 318:	8a 01       	movw	r16, r20
 31a:	81 ee       	ldi	r24, 0xE1	; 225
 31c:	90 e0       	ldi	r25, 0x00	; 0
 31e:	a0 e0       	ldi	r26, 0x00	; 0
 320:	b0 e0       	ldi	r27, 0x00	; 0
 322:	e8 0e       	add	r14, r24
 324:	f9 1e       	adc	r15, r25
 326:	0a 1f       	adc	r16, r26
 328:	1b 1f       	adc	r17, r27
		
	display_bit[0] = frequency / 100000 ;
 32a:	c8 01       	movw	r24, r16
 32c:	b7 01       	movw	r22, r14
 32e:	20 ea       	ldi	r18, 0xA0	; 160
 330:	36 e8       	ldi	r19, 0x86	; 134
 332:	41 e0       	ldi	r20, 0x01	; 1
 334:	50 e0       	ldi	r21, 0x00	; 0
 336:	6f d1       	rcall	.+734    	; 0x616
 338:	da 01       	movw	r26, r20
 33a:	c9 01       	movw	r24, r18
 33c:	29 83       	std	Y+1, r18	; 0x01
	if ( display_bit[0] == 0 ) display_bit[0] = 0x20;
 33e:	88 23       	and	r24, r24
 340:	19 f4       	brne	.+6      	; 0x348
 342:	80 e2       	ldi	r24, 0x20	; 32
 344:	89 83       	std	Y+1, r24	; 0x01
 346:	02 c0       	rjmp	.+4      	; 0x34c
	else display_bit[0] += 0x30;
 348:	20 5d       	subi	r18, 0xD0	; 208
 34a:	29 83       	std	Y+1, r18	; 0x01
	
	display_bit[1] = (frequency / 10000)%10 +0x30;
 34c:	c8 01       	movw	r24, r16
 34e:	b7 01       	movw	r22, r14
 350:	20 e1       	ldi	r18, 0x10	; 16
 352:	37 e2       	ldi	r19, 0x27	; 39
 354:	40 e0       	ldi	r20, 0x00	; 0
 356:	50 e0       	ldi	r21, 0x00	; 0
 358:	5e d1       	rcall	.+700    	; 0x616
 35a:	ca 01       	movw	r24, r20
 35c:	b9 01       	movw	r22, r18
 35e:	2a e0       	ldi	r18, 0x0A	; 10
 360:	30 e0       	ldi	r19, 0x00	; 0
 362:	40 e0       	ldi	r20, 0x00	; 0
 364:	50 e0       	ldi	r21, 0x00	; 0
 366:	57 d1       	rcall	.+686    	; 0x616
 368:	dc 01       	movw	r26, r24
 36a:	cb 01       	movw	r24, r22
 36c:	80 5d       	subi	r24, 0xD0	; 208
 36e:	8a 83       	std	Y+2, r24	; 0x02
	display_bit[2] = (frequency / 1000)%10 +0x30;
 370:	c8 01       	movw	r24, r16
 372:	b7 01       	movw	r22, r14
 374:	28 ee       	ldi	r18, 0xE8	; 232
 376:	33 e0       	ldi	r19, 0x03	; 3
 378:	40 e0       	ldi	r20, 0x00	; 0
 37a:	50 e0       	ldi	r21, 0x00	; 0
 37c:	4c d1       	rcall	.+664    	; 0x616
 37e:	ca 01       	movw	r24, r20
 380:	b9 01       	movw	r22, r18
 382:	2a e0       	ldi	r18, 0x0A	; 10
 384:	30 e0       	ldi	r19, 0x00	; 0
 386:	40 e0       	ldi	r20, 0x00	; 0
 388:	50 e0       	ldi	r21, 0x00	; 0
 38a:	45 d1       	rcall	.+650    	; 0x616
 38c:	dc 01       	movw	r26, r24
 38e:	cb 01       	movw	r24, r22
 390:	80 5d       	subi	r24, 0xD0	; 208
 392:	8b 83       	std	Y+3, r24	; 0x03
	display_bit[3] = (frequency / 100)%10 +0x30;
 394:	c8 01       	movw	r24, r16
 396:	b7 01       	movw	r22, r14
 398:	24 e6       	ldi	r18, 0x64	; 100
 39a:	30 e0       	ldi	r19, 0x00	; 0
 39c:	40 e0       	ldi	r20, 0x00	; 0
 39e:	50 e0       	ldi	r21, 0x00	; 0
 3a0:	3a d1       	rcall	.+628    	; 0x616
 3a2:	ca 01       	movw	r24, r20
 3a4:	b9 01       	movw	r22, r18
 3a6:	2a e0       	ldi	r18, 0x0A	; 10
 3a8:	30 e0       	ldi	r19, 0x00	; 0
 3aa:	40 e0       	ldi	r20, 0x00	; 0
 3ac:	50 e0       	ldi	r21, 0x00	; 0
 3ae:	33 d1       	rcall	.+614    	; 0x616
 3b0:	dc 01       	movw	r26, r24
 3b2:	cb 01       	movw	r24, r22
 3b4:	80 5d       	subi	r24, 0xD0	; 208
 3b6:	8c 83       	std	Y+4, r24	; 0x04
	display_bit[4] = (frequency / 10)%10 +0x30;
 3b8:	c8 01       	movw	r24, r16
 3ba:	b7 01       	movw	r22, r14
 3bc:	2a e0       	ldi	r18, 0x0A	; 10
 3be:	30 e0       	ldi	r19, 0x00	; 0
 3c0:	40 e0       	ldi	r20, 0x00	; 0
 3c2:	50 e0       	ldi	r21, 0x00	; 0
 3c4:	28 d1       	rcall	.+592    	; 0x616
 3c6:	ca 01       	movw	r24, r20
 3c8:	b9 01       	movw	r22, r18
 3ca:	2a e0       	ldi	r18, 0x0A	; 10
 3cc:	30 e0       	ldi	r19, 0x00	; 0
 3ce:	40 e0       	ldi	r20, 0x00	; 0
 3d0:	50 e0       	ldi	r21, 0x00	; 0
 3d2:	21 d1       	rcall	.+578    	; 0x616
 3d4:	dc 01       	movw	r26, r24
 3d6:	cb 01       	movw	r24, r22
 3d8:	80 5d       	subi	r24, 0xD0	; 208
 3da:	8d 83       	std	Y+5, r24	; 0x05
	LCD_write_english_string(0,2," " );
 3dc:	48 e8       	ldi	r20, 0x88	; 136
 3de:	52 e0       	ldi	r21, 0x02	; 2
 3e0:	62 e0       	ldi	r22, 0x02	; 2
 3e2:	80 e0       	ldi	r24, 0x00	; 0
 3e4:	e3 de       	rcall	.-570    	; 0x1ac
	 LCD_write_char(display_bit[0]);
 3e6:	89 81       	ldd	r24, Y+1	; 0x01
 3e8:	9e de       	rcall	.-708    	; 0x126
	 LCD_write_char(display_bit[1]);
 3ea:	8a 81       	ldd	r24, Y+2	; 0x02
 3ec:	9c de       	rcall	.-712    	; 0x126
	 LCD_write_char(display_bit[2]);
 3ee:	8b 81       	ldd	r24, Y+3	; 0x03
 3f0:	9a de       	rcall	.-716    	; 0x126
	 LCD_write_english_string(25,2,"." );
 3f2:	4a e8       	ldi	r20, 0x8A	; 138
 3f4:	52 e0       	ldi	r21, 0x02	; 2
 3f6:	62 e0       	ldi	r22, 0x02	; 2
 3f8:	89 e1       	ldi	r24, 0x19	; 25
 3fa:	d8 de       	rcall	.-592    	; 0x1ac
	 LCD_write_char(display_bit[3]);
 3fc:	8c 81       	ldd	r24, Y+4	; 0x04
 3fe:	93 de       	rcall	.-730    	; 0x126
	 LCD_write_char(display_bit[4]);
 400:	8d 81       	ldd	r24, Y+5	; 0x05
 402:	91 de       	rcall	.-734    	; 0x126
	LCD_write_english_string(43,2," MHz" );
 404:	4c e8       	ldi	r20, 0x8C	; 140
 406:	52 e0       	ldi	r21, 0x02	; 2
 408:	62 e0       	ldi	r22, 0x02	; 2
 40a:	8b e2       	ldi	r24, 0x2B	; 43
 40c:	cf de       	rcall	.-610    	; 0x1ac
 40e:	25 96       	adiw	r28, 0x05	; 5
 410:	0f b6       	in	r0, 0x3f	; 63
 412:	f8 94       	cli
 414:	de bf       	out	0x3e, r29	; 62
 416:	0f be       	out	0x3f, r0	; 63
 418:	cd bf       	out	0x3d, r28	; 61
 41a:	df 91       	pop	r29
 41c:	cf 91       	pop	r28
 41e:	1f 91       	pop	r17
 420:	0f 91       	pop	r16
 422:	ff 90       	pop	r15
 424:	ef 90       	pop	r14
 426:	08 95       	ret

00000428 <show_rx_power>:
   
}
void show_rx_power(void)
{
 428:	0f 93       	push	r16
 42a:	1f 93       	push	r17
	uchar temp;
	
	temp = (readdata[3]>>4);
 42c:	00 91 f2 02 	lds	r16, 0x02F2
 430:	02 95       	swap	r16
 432:	0f 70       	andi	r16, 0x0F	; 15
	
	LCD_write_english_string(60,0," ");
 434:	48 e8       	ldi	r20, 0x88	; 136
 436:	52 e0       	ldi	r21, 0x02	; 2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -