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

📄 main.lss

📁 用AVR单片机mega16控制TEA5756收音机芯片的程序。
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 438:	60 e0       	ldi	r22, 0x00	; 0
 43a:	8c e3       	ldi	r24, 0x3C	; 60
 43c:	b7 de       	rcall	.-658    	; 0x1ac
	
	LCD_write_char((temp/10)%10 + 0x30 );
 43e:	1a e0       	ldi	r17, 0x0A	; 10
 440:	80 2f       	mov	r24, r16
 442:	61 2f       	mov	r22, r17
 444:	dc d0       	rcall	.+440    	; 0x5fe
 446:	db d0       	rcall	.+438    	; 0x5fe
 448:	89 2f       	mov	r24, r25
 44a:	80 5d       	subi	r24, 0xD0	; 208
 44c:	6c de       	rcall	.-808    	; 0x126
	LCD_write_char(temp%10 + 0x30 );
 44e:	80 2f       	mov	r24, r16
 450:	61 2f       	mov	r22, r17
 452:	d5 d0       	rcall	.+426    	; 0x5fe
 454:	89 2f       	mov	r24, r25
 456:	80 5d       	subi	r24, 0xD0	; 208
 458:	66 de       	rcall	.-820    	; 0x126
 45a:	1f 91       	pop	r17
 45c:	0f 91       	pop	r16
 45e:	08 95       	ret

00000460 <init>:
}

void init(void)
{
	DDRB = 0XFF;
 460:	9f ef       	ldi	r25, 0xFF	; 255
 462:	97 bb       	out	0x17, r25	; 23
	PORTB = 0XFF;
 464:	98 bb       	out	0x18, r25	; 24
	
	DDRD = 0B11100000;
 466:	80 ee       	ldi	r24, 0xE0	; 224
 468:	81 bb       	out	0x11, r24	; 17
	PORTD = 0XFF;
 46a:	92 bb       	out	0x12, r25	; 18
	
	DDRC = 0B00000000;
 46c:	14 ba       	out	0x14, r1	; 20
	PORTC = 0Xff;      //  IO init
 46e:	95 bb       	out	0x15, r25	; 21
	
	delay_nms(100);
 470:	84 e6       	ldi	r24, 0x64	; 100
 472:	90 e0       	ldi	r25, 0x00	; 0
 474:	06 de       	rcall	.-1012   	; 0x82
	//TWI
	TWBR = 12;
 476:	8c e0       	ldi	r24, 0x0C	; 12
 478:	80 b9       	out	0x00, r24	; 0
	TWCR = (1<<TWEN); //SEND STOP SIGNAL
 47a:	84 e0       	ldi	r24, 0x04	; 4
 47c:	86 bf       	out	0x36, r24	; 54
	
	 
    OSCCAL=0x9d;                        // 8M系统内部时钟校准    
 47e:	8d e9       	ldi	r24, 0x9D	; 157
 480:	81 bf       	out	0x31, r24	; 49
    //设置MCU的I/O口
    DDRB |= LCD_RST | LCD_DC | LCD_CE | SPI_MOSI | SPI_CLK;
 482:	87 b3       	in	r24, 0x17	; 23
 484:	8d 63       	ori	r24, 0x3D	; 61
 486:	87 bb       	out	0x17, r24	; 23
    
	SPSR |= (1<<SPI2X);                 // 设置SPI时钟倍速
 488:	70 9a       	sbi	0x0e, 0	; 14
    SPCR |= (1<<SPE)|(1<<MSTR);		// 使能SPI接口,主机模式,4M时钟
 48a:	8d b1       	in	r24, 0x0d	; 13
 48c:	80 65       	ori	r24, 0x50	; 80
 48e:	8d b9       	out	0x0d, r24	; 13
 
    LCD_init(); //初始化液晶  
 490:	22 de       	rcall	.-956    	; 0xd6
 492:	08 95       	ret

00000494 <main>:

}


//////////////////////////////////////////////////////////////////
int main(void)
{
 494:	cf e5       	ldi	r28, 0x5F	; 95
 496:	d4 e0       	ldi	r29, 0x04	; 4
 498:	de bf       	out	0x3e, r29	; 62
 49a:	cd bf       	out	0x3d, r28	; 61
	init();
 49c:	e1 df       	rcall	.-62     	; 0x460
	
	senddata[0] = 0b01101111;  //load 100MHz pll
 49e:	2f e6       	ldi	r18, 0x6F	; 111
 4a0:	20 93 ea 02 	sts	0x02EA, r18
	senddata[1] = 0b10010011;  // away's low side injection
 4a4:	93 e9       	ldi	r25, 0x93	; 147
 4a6:	90 93 eb 02 	sts	0x02EB, r25
	senddata[2] = 0b00100000;
 4aa:	80 e2       	ldi	r24, 0x20	; 32
 4ac:	80 93 ec 02 	sts	0x02EC, r24
	senddata[3] = 0b10010000;                                                                  
 4b0:	80 e9       	ldi	r24, 0x90	; 144
 4b2:	80 93 ed 02 	sts	0x02ED, r24
	senddata[4] = 0b00000000;
 4b6:	10 92 ee 02 	sts	0x02EE, r1
	readdata[0] = senddata[0];
 4ba:	20 93 ef 02 	sts	0x02EF, r18
	readdata[1] = senddata[1];
 4be:	90 93 f0 02 	sts	0x02F0, r25
	
	LCD_write_english_string(0,0,"FM STEREO" );	
 4c2:	41 e9       	ldi	r20, 0x91	; 145
 4c4:	52 e0       	ldi	r21, 0x02	; 2
 4c6:	60 91 ee 02 	lds	r22, 0x02EE
 4ca:	86 2f       	mov	r24, r22
 4cc:	6f de       	rcall	.-802    	; 0x1ac
	//LCD_write_english_string(0,5,"  stereo" );
	LCD_write_english_string(0,2,"  99.1Mhz" );
 4ce:	4b e9       	ldi	r20, 0x9B	; 155
 4d0:	52 e0       	ldi	r21, 0x02	; 2
 4d2:	62 e0       	ldi	r22, 0x02	; 2
 4d4:	80 e0       	ldi	r24, 0x00	; 0
 4d6:	6a de       	rcall	.-812    	; 0x1ac
	show_frequency();
 4d8:	d6 de       	rcall	.-596    	; 0x286
	LCD_write_inverse_string(0,5,"  UP  ");
 4da:	45 ea       	ldi	r20, 0xA5	; 165
 4dc:	52 e0       	ldi	r21, 0x02	; 2
 4de:	65 e0       	ldi	r22, 0x05	; 5
 4e0:	80 e0       	ldi	r24, 0x00	; 0
 4e2:	73 de       	rcall	.-794    	; 0x1ca
	LCD_write_inverse_string(48,5," DOWN ");
 4e4:	4c ea       	ldi	r20, 0xAC	; 172
 4e6:	52 e0       	ldi	r21, 0x02	; 2
 4e8:	65 e0       	ldi	r22, 0x05	; 5
 4ea:	80 e3       	ldi	r24, 0x30	; 48
 4ec:	6e de       	rcall	.-804    	; 0x1ca
	
	while(1)
	{
	
		if ( bit_is_clear( PIND,3))
 4ee:	83 99       	sbic	0x10, 3	; 16
 4f0:	1c c0       	rjmp	.+56     	; 0x52a
		{
			delay_nms(20);
 4f2:	84 e1       	ldi	r24, 0x14	; 20
 4f4:	90 e0       	ldi	r25, 0x00	; 0
 4f6:	c5 dd       	rcall	.-1142   	; 0x82
			if ( bit_is_clear( PIND,3))
 4f8:	83 99       	sbic	0x10, 3	; 16
 4fa:	17 c0       	rjmp	.+46     	; 0x52a
			{
				loop_until_bit_is_set(PIND, 3);
 4fc:	83 9b       	sbis	0x10, 3	; 16
 4fe:	fe cf       	rjmp	.-4      	; 0x4fc
				LCD_write_english_string(0,4,"KEY1 press" );
 500:	43 eb       	ldi	r20, 0xB3	; 179
 502:	52 e0       	ldi	r21, 0x02	; 2
 504:	64 e0       	ldi	r22, 0x04	; 4
 506:	80 e0       	ldi	r24, 0x00	; 0
 508:	51 de       	rcall	.-862    	; 0x1ac
				senddata[2] &= 0x7f;   // set search down
 50a:	80 91 ec 02 	lds	r24, 0x02EC
 50e:	8f 77       	andi	r24, 0x7F	; 127
 510:	80 93 ec 02 	sts	0x02EC, r24
				set5767();
 514:	7c de       	rcall	.-776    	; 0x20e
				LCD_write_english_string(0,4,"searching down" );
 516:	4e eb       	ldi	r20, 0xBE	; 190
 518:	52 e0       	ldi	r21, 0x02	; 2
 51a:	64 e0       	ldi	r22, 0x04	; 4
 51c:	80 e0       	ldi	r24, 0x00	; 0
 51e:	46 de       	rcall	.-884    	; 0x1ac
				
				search_up = 0;
 520:	10 92 e8 02 	sts	0x02E8, r1
				search = 1;
 524:	81 e0       	ldi	r24, 0x01	; 1
 526:	80 93 e9 02 	sts	0x02E9, r24
			}
		}
		
		if ( bit_is_clear( PIND,2))
 52a:	82 99       	sbic	0x10, 2	; 16
 52c:	1c c0       	rjmp	.+56     	; 0x566
		{
			delay_nms(20);
 52e:	84 e1       	ldi	r24, 0x14	; 20
 530:	90 e0       	ldi	r25, 0x00	; 0
 532:	a7 dd       	rcall	.-1202   	; 0x82
			if ( bit_is_clear( PIND,2))
 534:	82 99       	sbic	0x10, 2	; 16
 536:	17 c0       	rjmp	.+46     	; 0x566
			{
				
				loop_until_bit_is_set(PIND, 2);
 538:	82 9b       	sbis	0x10, 2	; 16
 53a:	fe cf       	rjmp	.-4      	; 0x538
				LCD_write_english_string(0,4,"KEY2 press" );
 53c:	4d ec       	ldi	r20, 0xCD	; 205
 53e:	52 e0       	ldi	r21, 0x02	; 2
 540:	64 e0       	ldi	r22, 0x04	; 4
 542:	80 e0       	ldi	r24, 0x00	; 0
 544:	33 de       	rcall	.-922    	; 0x1ac
				
				senddata[2] |= 0x80;   // set search up
 546:	80 91 ec 02 	lds	r24, 0x02EC
 54a:	80 68       	ori	r24, 0x80	; 128
 54c:	80 93 ec 02 	sts	0x02EC, r24
				set5767();
 550:	5e de       	rcall	.-836    	; 0x20e
				LCD_write_english_string(0,4,"searching up  ");
 552:	48 ed       	ldi	r20, 0xD8	; 216
 554:	52 e0       	ldi	r21, 0x02	; 2
 556:	64 e0       	ldi	r22, 0x04	; 4
 558:	80 e0       	ldi	r24, 0x00	; 0
 55a:	28 de       	rcall	.-944    	; 0x1ac
				
				search_up = 1;
 55c:	81 e0       	ldi	r24, 0x01	; 1
 55e:	80 93 e8 02 	sts	0x02E8, r24
				search = 1;
 562:	80 93 e9 02 	sts	0x02E9, r24
				
			}
		}
		
		
		if ( search )
 566:	80 91 e9 02 	lds	r24, 0x02E9
 56a:	88 23       	and	r24, r24
 56c:	09 f4       	brne	.+2      	; 0x570
 56e:	bf cf       	rjmp	.-130    	; 0x4ee
		{
			read5767();
 570:	6c de       	rcall	.-808    	; 0x24a
			
			if ( readdata[0] & 0x40 )  //reach band end
 572:	80 91 ef 02 	lds	r24, 0x02EF
 576:	86 ff       	sbrs	r24, 6
 578:	10 c0       	rjmp	.+32     	; 0x59a
			{
				if ( search_up )
 57a:	80 91 e8 02 	lds	r24, 0x02E8
 57e:	88 23       	and	r24, r24
 580:	29 f0       	breq	.+10     	; 0x58c
				{
					senddata[0] = 0b01101001;    // load 88Mhz pll
 582:	89 e6       	ldi	r24, 0x69	; 105
 584:	80 93 ea 02 	sts	0x02EA, r24
					senddata[1] = 0b11011010;
 588:	8a ed       	ldi	r24, 0xDA	; 218
 58a:	04 c0       	rjmp	.+8      	; 0x594
					set5767();
				}
				else                  
				{
					senddata[0] = 0b01110011;    // load 108Mhz pll
 58c:	83 e7       	ldi	r24, 0x73	; 115
 58e:	80 93 ea 02 	sts	0x02EA, r24
					senddata[1] = 0b01100100;
 592:	84 e6       	ldi	r24, 0x64	; 100
 594:	80 93 eb 02 	sts	0x02EB, r24
					set5767();
 598:	3a de       	rcall	.-908    	; 0x20e
				}
			}
			
			
			
			if ( readdata[0] & 0x80)   //has been found a station
 59a:	80 91 ef 02 	lds	r24, 0x02EF
 59e:	87 ff       	sbrs	r24, 7
 5a0:	a6 cf       	rjmp	.-180    	; 0x4ee
			{
				show_frequency();
 5a2:	71 de       	rcall	.-798    	; 0x286
				show_rx_power();
 5a4:	41 df       	rcall	.-382    	; 0x428
				senddata[0] = ((readdata[0] & 0x3f) |0x40);
 5a6:	80 91 ef 02 	lds	r24, 0x02EF
 5aa:	8f 73       	andi	r24, 0x3F	; 63
 5ac:	80 64       	ori	r24, 0x40	; 64
 5ae:	80 93 ea 02 	sts	0x02EA, r24
				senddata[1] = readdata[1];  //record the pll
 5b2:	80 91 f0 02 	lds	r24, 0x02F0
 5b6:	80 93 eb 02 	sts	0x02EB, r24
				
				search = 0;
 5ba:	10 92 e9 02 	sts	0x02E9, r1
 5be:	97 cf       	rjmp	.-210    	; 0x4ee

000005c0 <__mulsi3>:
 5c0:	62 9f       	mul	r22, r18
 5c2:	d0 01       	movw	r26, r0
 5c4:	73 9f       	mul	r23, r19
 5c6:	f0 01       	movw	r30, r0
 5c8:	82 9f       	mul	r24, r18
 5ca:	e0 0d       	add	r30, r0
 5cc:	f1 1d       	adc	r31, r1
 5ce:	64 9f       	mul	r22, r20
 5d0:	e0 0d       	add	r30, r0
 5d2:	f1 1d       	adc	r31, r1
 5d4:	92 9f       	mul	r25, r18
 5d6:	f0 0d       	add	r31, r0
 5d8:	83 9f       	mul	r24, r19
 5da:	f0 0d       	add	r31, r0
 5dc:	74 9f       	mul	r23, r20
 5de:	f0 0d       	add	r31, r0
 5e0:	65 9f       	mul	r22, r21
 5e2:	f0 0d       	add	r31, r0
 5e4:	99 27       	eor	r25, r25
 5e6:	72 9f       	mul	r23, r18
 5e8:	b0 0d       	add	r27, r0
 5ea:	e1 1d       	adc	r30, r1
 5ec:	f9 1f       	adc	r31, r25
 5ee:	63 9f       	mul	r22, r19
 5f0:	b0 0d       	add	r27, r0
 5f2:	e1 1d       	adc	r30, r1
 5f4:	f9 1f       	adc	r31, r25
 5f6:	bd 01       	movw	r22, r26
 5f8:	cf 01       	movw	r24, r30
 5fa:	11 24       	eor	r1, r1
 5fc:	08 95       	ret

000005fe <__udivmodqi4>:
 5fe:	99 1b       	sub	r25, r25
 600:	79 e0       	ldi	r23, 0x09	; 9
 602:	04 c0       	rjmp	.+8      	; 0x60c

00000604 <__udivmodqi4_loop>:
 604:	99 1f       	adc	r25, r25
 606:	96 17       	cp	r25, r22
 608:	08 f0       	brcs	.+2      	; 0x60c
 60a:	96 1b       	sub	r25, r22

0000060c <__udivmodqi4_ep>:
 60c:	88 1f       	adc	r24, r24
 60e:	7a 95       	dec	r23
 610:	c9 f7       	brne	.-14     	; 0x604
 612:	80 95       	com	r24
 614:	08 95       	ret

00000616 <__udivmodsi4>:
 616:	a1 e2       	ldi	r26, 0x21	; 33
 618:	1a 2e       	mov	r1, r26
 61a:	aa 1b       	sub	r26, r26
 61c:	bb 1b       	sub	r27, r27
 61e:	fd 01       	movw	r30, r26
 620:	0d c0       	rjmp	.+26     	; 0x63c

00000622 <__udivmodsi4_loop>:
 622:	aa 1f       	adc	r26, r26
 624:	bb 1f       	adc	r27, r27
 626:	ee 1f       	adc	r30, r30
 628:	ff 1f       	adc	r31, r31
 62a:	a2 17       	cp	r26, r18
 62c:	b3 07       	cpc	r27, r19
 62e:	e4 07       	cpc	r30, r20
 630:	f5 07       	cpc	r31, r21
 632:	20 f0       	brcs	.+8      	; 0x63c
 634:	a2 1b       	sub	r26, r18
 636:	b3 0b       	sbc	r27, r19
 638:	e4 0b       	sbc	r30, r20
 63a:	f5 0b       	sbc	r31, r21

0000063c <__udivmodsi4_ep>:
 63c:	66 1f       	adc	r22, r22
 63e:	77 1f       	adc	r23, r23
 640:	88 1f       	adc	r24, r24
 642:	99 1f       	adc	r25, r25
 644:	1a 94       	dec	r1
 646:	69 f7       	brne	.-38     	; 0x622
 648:	60 95       	com	r22
 64a:	70 95       	com	r23
 64c:	80 95       	com	r24
 64e:	90 95       	com	r25
 650:	9b 01       	movw	r18, r22
 652:	ac 01       	movw	r20, r24
 654:	bd 01       	movw	r22, r26
 656:	cf 01       	movw	r24, r30
 658:	08 95       	ret

⌨️ 快捷键说明

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