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

📄 main.lss

📁 MEGEA64控制的TUNER程序
💻 LSS
📖 第 1 页 / 共 3 页
字号:
        
        #ifdef PORTC_INTERFACE
        #ifdef PORTC_INTERFACE_USED
        if((PINC & 0x10) == 0x10)          //PC4
            Sin |= 0x01;
        else
            Sin &= 0xfe;
        #else
        if((PIND & 0x02) == 0x02)          //PD1
            Sin |= 0x01;
 200:	11 60       	ori	r17, 0x01	; 1
        else
            Sin &= 0xfe;
        #endif
        #else
        if ((PINC & 0x02) == 0x02)          //PC1
            Sin |= 0x01;
        else
            Sin &= 0xfe;
        #endif
        
        scl_delay();
 202:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
        SCL_Low();
 206:	90 98       	cbi	0x12, 0	; 18
        
        scl_delay(); 
 208:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
 20c:	0f 5f       	subi	r16, 0xFF	; 255
 20e:	08 30       	cpi	r16, 0x08	; 8
 210:	79 f0       	breq	.+30     	; 0x230 <ReadByte+0x42>
 212:	11 0f       	add	r17, r17
 214:	90 9a       	sbi	0x12, 0	; 18
 216:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
 21a:	81 99       	sbic	0x10, 1	; 16
 21c:	f1 cf       	rjmp	.-30     	; 0x200 <ReadByte+0x12>
 21e:	1e 7f       	andi	r17, 0xFE	; 254
 220:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
 224:	90 98       	cbi	0x12, 0	; 18
 226:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
 22a:	0f 5f       	subi	r16, 0xFF	; 255
 22c:	08 30       	cpi	r16, 0x08	; 8
 22e:	89 f7       	brne	.-30     	; 0x212 <ReadByte+0x24>
    }
    #ifdef PORTC_INTERFACE
    #ifdef PORTC_INTERFACE_USED
    DDRC = 0xff;
    PORTC = 0xff;
    #else
    DDRD = 0xff;
 230:	8f ef       	ldi	r24, 0xFF	; 255
 232:	81 bb       	out	0x11, r24	; 17
    PORTD = 0xff;
 234:	82 bb       	out	0x12, r24	; 18
    #endif
    #else
    DDRC = 0xff;
    PORTC = 0xff;
    #endif
    return(Sin); 
}
 236:	81 2f       	mov	r24, r17
 238:	99 27       	eor	r25, r25
 23a:	1f 91       	pop	r17
 23c:	0f 91       	pop	r16
 23e:	08 95       	ret

00000240 <SendACK>:

/*-----------发送应答位--------------------------------------------------*/
void SendACK()
{
 240:	90 98       	cbi	0x12, 0	; 18
    SCL_Low();
    scl_delay();
 242:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SDA_Low();
 246:	91 98       	cbi	0x12, 1	; 18
    scl_delay();
 248:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SCL_High();
 24c:	90 9a       	sbi	0x12, 0	; 18
    scl_delay();
 24e:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SCL_Low();
 252:	90 98       	cbi	0x12, 0	; 18
 254:	08 95       	ret

00000256 <SendNoACK>:
}

/*------------发送非应答位-----------------------------------------------*/
void SendNoACK()
{
 256:	90 98       	cbi	0x12, 0	; 18
    SCL_Low();
    scl_delay();
 258:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SDA_High();
 25c:	91 9a       	sbi	0x12, 1	; 18
    scl_delay();
 25e:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SCL_High();
 262:	90 9a       	sbi	0x12, 0	; 18
    scl_delay();
 264:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SCL_Low();
 268:	90 98       	cbi	0x12, 0	; 18
 26a:	08 95       	ret

0000026c <Start>:
}

/*---------------------------------------------------------------------------*/
void Start(void)                /*START 启动I2C 总线子程序发送I2C 起始条件*/
{
 26c:	91 9a       	sbi	0x12, 1	; 18
    SDA_High();
    scl_delay();
 26e:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SCL_High();
 272:	90 9a       	sbi	0x12, 0	; 18
    scl_delay();
 274:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SDA_Low();
 278:	91 98       	cbi	0x12, 1	; 18
    scl_delay();
 27a:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SCL_Low();
 27e:	90 98       	cbi	0x12, 0	; 18
 280:	08 95       	ret

00000282 <Stop>:
}

/*-----------STOP 停止I2C 总线子程序发送I2C 总线停止条件-------------------*/
void Stop(void)
{
 282:	91 98       	cbi	0x12, 1	; 18
    SDA_Low();
    scl_delay();
 284:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SCL_High();
 288:	90 9a       	sbi	0x12, 0	; 18
    scl_delay();
 28a:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
    SDA_High();
 28e:	91 9a       	sbi	0x12, 1	; 18
    scl_delay();
 290:	0e 94 65 00 	call	0xca	; 0xca <scl_delay>
 294:	08 95       	ret

00000296 <SetChan>:
 296:	e8 2f       	mov	r30, r24
 298:	ff 27       	eor	r31, r31
 29a:	ee 0f       	add	r30, r30
 29c:	ff 1f       	adc	r31, r31
 29e:	ee 0f       	add	r30, r30
 2a0:	ff 1f       	adc	r31, r31
 2a2:	e6 5d       	subi	r30, 0xD6	; 214
 2a4:	fe 4f       	sbci	r31, 0xFE	; 254
 2a6:	80 81       	ld	r24, Z
 2a8:	91 81       	ldd	r25, Z+1	; 0x01
 2aa:	a2 81       	ldd	r26, Z+2	; 0x02
 2ac:	b3 81       	ldd	r27, Z+3	; 0x03
 2ae:	80 34       	cpi	r24, 0x40	; 64
 2b0:	20 e9       	ldi	r18, 0x90	; 144
 2b2:	92 07       	cpc	r25, r18
 2b4:	22 e0       	ldi	r18, 0x02	; 2
 2b6:	a2 07       	cpc	r26, r18
 2b8:	20 e0       	ldi	r18, 0x00	; 0
 2ba:	b2 07       	cpc	r27, r18
 2bc:	48 f0       	brcs	.+18     	; 0x2d0 <SetChan+0x3a>
 2be:	80 5d       	subi	r24, 0xD0	; 208
 2c0:	9d 4d       	sbci	r25, 0xDD	; 221
 2c2:	a6 40       	sbci	r26, 0x06	; 6
 2c4:	b0 40       	sbci	r27, 0x00	; 0
 2c6:	10 f4       	brcc	.+4      	; 0x2cc <SetChan+0x36>
 2c8:	82 e0       	ldi	r24, 0x02	; 2
 2ca:	03 c0       	rjmp	.+6      	; 0x2d2 <SetChan+0x3c>
 2cc:	88 e0       	ldi	r24, 0x08	; 8
 2ce:	01 c0       	rjmp	.+2      	; 0x2d2 <SetChan+0x3c>
 2d0:	81 e0       	ldi	r24, 0x01	; 1
 2d2:	80 93 d5 02 	sts	0x02D5, r24
 2d6:	0e 94 36 01 	call	0x26c	; 0x26c <Start>
 2da:	80 ec       	ldi	r24, 0xC0	; 192
 2dc:	0e 94 d3 00 	call	0x1a6	; 0x1a6 <SendByte>
 2e0:	80 91 d9 02 	lds	r24, 0x02D9
 2e4:	0e 94 d3 00 	call	0x1a6	; 0x1a6 <SendByte>
 2e8:	80 91 d3 02 	lds	r24, 0x02D3
 2ec:	0e 94 d3 00 	call	0x1a6	; 0x1a6 <SendByte>
 2f0:	8e e8       	ldi	r24, 0x8E	; 142
 2f2:	0e 94 d3 00 	call	0x1a6	; 0x1a6 <SendByte>
 2f6:	80 91 d5 02 	lds	r24, 0x02D5
 2fa:	0e 94 d3 00 	call	0x1a6	; 0x1a6 <SendByte>
 2fe:	0e 94 41 01 	call	0x282	; 0x282 <Stop>
 302:	8f ef       	ldi	r24, 0xFF	; 255
 304:	80 93 c6 02 	sts	0x02C6, r24
 308:	08 95       	ret

0000030a <ReadChan>:
 30a:	1f 93       	push	r17
 30c:	0e 94 36 01 	call	0x26c	; 0x26c <Start>
 310:	81 ec       	ldi	r24, 0xC1	; 193
 312:	0e 94 d3 00 	call	0x1a6	; 0x1a6 <SendByte>
 316:	0e 94 f7 00 	call	0x1ee	; 0x1ee <ReadByte>
 31a:	18 2f       	mov	r17, r24
 31c:	0e 94 41 01 	call	0x282	; 0x282 <Stop>
 320:	81 2f       	mov	r24, r17
 322:	99 27       	eor	r25, r25
 324:	1f 91       	pop	r17
 326:	08 95       	ret

00000328 <__vector_16>:
}

void Check_UART_Int(void)
{
    if (channel_change_byte_flag == BYTE_FLAG_TRUE)
    {
        put_string(current_channel_string);
        PutAscii(channel);
        SetChan(channel);
        #if 0
        delay_ms(50000);
        delay_ms(50000);
        PutAscii(ReadChan());
        #endif
        CLEAR_FLAG(channel_change_byte_flag);
    }
}
ISR(TIMER0_OVF_vect)
{
 328:	1f 92       	push	r1
 32a:	0f 92       	push	r0
 32c:	0f b6       	in	r0, 0x3f	; 63
 32e:	0f 92       	push	r0
 330:	11 24       	eor	r1, r1
 332:	8f 93       	push	r24
 334:	9f 93       	push	r25
	TCNT0 = TIMER0_RELOAD_VALUE;
 336:	86 e1       	ldi	r24, 0x16	; 22
 338:	82 bf       	out	0x32, r24	; 50
	timer0_counter++;
 33a:	80 91 d6 02 	lds	r24, 0x02D6
 33e:	90 91 d7 02 	lds	r25, 0x02D7
 342:	01 96       	adiw	r24, 0x01	; 1
 344:	90 93 d7 02 	sts	0x02D7, r25
 348:	80 93 d6 02 	sts	0x02D6, r24
 34c:	9f 91       	pop	r25
 34e:	8f 91       	pop	r24
 350:	0f 90       	pop	r0
 352:	0f be       	out	0x3f, r0	; 63
 354:	0f 90       	pop	r0
 356:	1f 90       	pop	r1
 358:	18 95       	reti

0000035a <port_init>:
}

void port_init(void)
{
 35a:	8f ef       	ldi	r24, 0xFF	; 255
 35c:	87 bb       	out	0x17, r24	; 23
    DDRB  = 0xFF;
 	PORTB = 0xFF;
 35e:	88 bb       	out	0x18, r24	; 24
 	PORTC = 0xFF;
 360:	85 bb       	out	0x15, r24	; 21
 	DDRC  = 0xFF;
 362:	84 bb       	out	0x14, r24	; 20
    DDRD  = 0xFF;
 364:	81 bb       	out	0x11, r24	; 17
    PORTD = 0x7F;
 366:	8f e7       	ldi	r24, 0x7F	; 127
 368:	82 bb       	out	0x12, r24	; 18
 36a:	08 95       	ret

0000036c <Timer0Init>:
}

void Timer0Init(void)               /* 5 ms */
{
 36c:	13 be       	out	0x33, r1	; 51
    TCCR0 = 0x00;
    TCNT0 = TIMER0_RELOAD_VALUE;
 36e:	86 e1       	ldi	r24, 0x16	; 22
 370:	82 bf       	out	0x32, r24	; 50
    TCCR0 = 0x03; 		/* prescale 1/64 */     
 372:	83 e0       	ldi	r24, 0x03	; 3
 374:	83 bf       	out	0x33, r24	; 51
 376:	08 95       	ret

00000378 <UartInit>:
}

void UartInit(void)
{
 378:	10 92 9b 00 	sts	0x009B, r1
	UCSR1A = 0x00;
    UCSR1C = (1<<UCSZ1)|(1<<UCSZ0);
 37c:	86 e0       	ldi	r24, 0x06	; 6
 37e:	80 93 9d 00 	sts	0x009D, r24
    UBRR1L = ((FOSC/16/BAUD) -1) % 256;  //3;
 382:	83 e0       	ldi	r24, 0x03	; 3
 384:	80 93 99 00 	sts	0x0099, r24
    UBRR1H = ((FOSC/16/BAUD) -1) / 256;  //0;
 388:	10 92 98 00 	sts	0x0098, r1
    UCSR1B = (1<<RXEN1) | (1<<TXEN1) | (1<<RXCIE1);
 38c:	88 e9       	ldi	r24, 0x98	; 152
 38e:	80 93 9a 00 	sts	0x009A, r24
 392:	08 95       	ret

00000394 <PutChar>:
}

void PutChar(unsigned char send_char)
{
 394:	98 2f       	mov	r25, r24
    cli();
 396:	f8 94       	cli
    while(!(UCSR1A&(1<<UDRE1)));
 398:	80 91 9b 00 	lds	r24, 0x009B
 39c:	85 ff       	sbrs	r24, 5
 39e:	fc cf       	rjmp	.-8      	; 0x398 <PutChar+0x4>
    UDR1 = send_char;
 3a0:	90 93 9c 00 	sts	0x009C, r25
    sei();
 3a4:	78 94       	sei
 3a6:	08 95       	ret

000003a8 <__vector_30>:
}

void timer0_task(void)
{
    if ( timer0_counter >= 50 )    /* 5*timer0_counter ms */
    {
        timer0_counter = 0;
        if (channel_busy_byte_flag == BYTE_FLAG_TRUE)
        {
            PutChar(' ');PutChar(' ');PutChar(' ');PutChar(' ');
            put_string(read_set_channel_string);
            PutAscii(ReadChan());
            PutEnter();
            CLEAR_FLAG(channel_busy_byte_flag);
        }
    }
}

ISR(USART1_RX_vect)
{
 3a8:	1f 92       	push	r1
 3aa:	0f 92       	push	r0
 3ac:	0f b6       	in	r0, 0x3f	; 63
 3ae:	0f 92       	push	r0
 3b0:	11 24       	eor	r1, r1
 3b2:	2f 93       	push	r18
 3b4:	3f 93       	push	r19
 3b6:	4f 93       	push	r20
 3b8:	5f 93       	push	r21
 3ba:	6f 93       	push	r22
 3bc:	7f 93       	push	r23
 3be:	8f 93       	push	r24
 3c0:	9f 93       	push	r25
 3c2:	af 93       	push	r26
 3c4:	bf 93       	push	r27
 3c6:	ef 93       	push	r30
 3c8:	ff 93       	push	r31
 3ca:	cf 93       	push	r28
 3cc:	df 93       	push	r29
 3ce:	cd b7       	in	r28, 0x3d	; 61
 3d0:	de b7       	in	r29, 0x3e	; 62
 3d2:	21 97       	sbiw	r28, 0x01	; 1
 3d4:	de bf       	out	0x3e, r29	; 62
 3d6:	cd bf       	out	0x3d, r28	; 61
    volatile unsigned char temp;
    temp = UDR1;
 3d8:	80 91 9c 00 	lds	r24, 0x009C
 3dc:	89 83       	std	Y+1, r24	; 0x01

⌨️ 快捷键说明

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