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

📄 7455.lss

📁 GY-29-MMA7455发送资料
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 364:	f0 91 91 00 	lds	r31, 0x0091
 368:	ee 56       	subi	r30, 0x6E	; 110
 36a:	ff 4f       	sbci	r31, 0xFF	; 255
 36c:	60 81       	ld	r22, Z
 36e:	84 e1       	ldi	r24, 0x14	; 20
 370:	f0 cf       	rjmp	.-32     	; 0x352 <__vector_11+0x9c>
			}
		else if(stmp=='r')
 372:	80 91 92 00 	lds	r24, 0x0092
 376:	82 37       	cpi	r24, 0x72	; 114
 378:	11 f4       	brne	.+4      	; 0x37e <__vector_11+0xc8>
			{
				init_mma7455();
 37a:	0e 94 46 01 	call	0x28c	; 0x28c <init_mma7455>
			}
    } 
	inbufcount=0;//放在这来起来延时的作用.一举两得. 
 37e:	10 92 91 00 	sts	0x0091, r1
 382:	10 92 90 00 	sts	0x0090, r1
}
 386:	ff 91       	pop	r31
 388:	ef 91       	pop	r30
 38a:	bf 91       	pop	r27
 38c:	af 91       	pop	r26
 38e:	9f 91       	pop	r25
 390:	8f 91       	pop	r24
 392:	7f 91       	pop	r23
 394:	6f 91       	pop	r22
 396:	5f 91       	pop	r21
 398:	4f 91       	pop	r20
 39a:	3f 91       	pop	r19
 39c:	2f 91       	pop	r18
 39e:	0f 90       	pop	r0
 3a0:	0f be       	out	0x3f, r0	; 63
 3a2:	0f 90       	pop	r0
 3a4:	1f 90       	pop	r1
 3a6:	18 95       	reti

000003a8 <port_init>:

uchar a=0;
uchar reg=0;

void port_init(void)
{
 3a8:	81 e0       	ldi	r24, 0x01	; 1
 3aa:	8b bb       	out	0x1b, r24	; 27
	PORTA = 0x01;
	DDRA  = 0xFF;
 3ac:	9f ef       	ldi	r25, 0xFF	; 255
 3ae:	9a bb       	out	0x1a, r25	; 26
	PORTB = 0x00;
 3b0:	18 ba       	out	0x18, r1	; 24
	DDRB  = 0x00;
 3b2:	17 ba       	out	0x17, r1	; 23
	PORTC = 0x48;
 3b4:	88 e4       	ldi	r24, 0x48	; 72
 3b6:	85 bb       	out	0x15, r24	; 21
	DDRC  = 0x6C;
 3b8:	8c e6       	ldi	r24, 0x6C	; 108
 3ba:	84 bb       	out	0x14, r24	; 20
	PORTD = 0xFF;
 3bc:	92 bb       	out	0x12, r25	; 18
	DDRD  = 0xFF;
 3be:	91 bb       	out	0x11, r25	; 17
}
 3c0:	08 95       	ret

000003c2 <init_devices>:



void init_devices(void)
{
 3c2:	f8 94       	cli
	cli(); //禁止所有中断
	MCUCR  = 0x00;
 3c4:	15 be       	out	0x35, r1	; 53
	MCUCSR = 0x80;//禁止JTAG
 3c6:	80 e8       	ldi	r24, 0x80	; 128
 3c8:	84 bf       	out	0x34, r24	; 52
	GICR   = 0x00;
 3ca:	1b be       	out	0x3b, r1	; 59
uchar a=0;
uchar reg=0;

void port_init(void)
{
	PORTA = 0x01;
 3cc:	81 e0       	ldi	r24, 0x01	; 1
 3ce:	8b bb       	out	0x1b, r24	; 27
	DDRA  = 0xFF;
 3d0:	9f ef       	ldi	r25, 0xFF	; 255
 3d2:	9a bb       	out	0x1a, r25	; 26
	PORTB = 0x00;
 3d4:	18 ba       	out	0x18, r1	; 24
	DDRB  = 0x00;
 3d6:	17 ba       	out	0x17, r1	; 23
	PORTC = 0x48;
 3d8:	88 e4       	ldi	r24, 0x48	; 72
 3da:	85 bb       	out	0x15, r24	; 21
	DDRC  = 0x6C;
 3dc:	8c e6       	ldi	r24, 0x6C	; 108
 3de:	84 bb       	out	0x14, r24	; 20
	PORTD = 0xFF;
 3e0:	92 bb       	out	0x12, r25	; 18
	DDRD  = 0xFF;
 3e2:	91 bb       	out	0x11, r25	; 17


//TWI初始化函数
void twi_init(void)
{
	TWCR = 0x00; //禁止TWI
 3e4:	16 be       	out	0x36, r1	; 54
	TWBR = 0x00; //设置比特率
 3e6:	10 b8       	out	0x00, r1	; 0
	TWAR = 0x3A; //设置从机地址
 3e8:	8a e3       	ldi	r24, 0x3A	; 58
 3ea:	82 b9       	out	0x02, r24	; 2
	TWSR|= 0x00; //设置分频因子
 3ec:	81 b1       	in	r24, 0x01	; 1
 3ee:	81 b9       	out	0x01, r24	; 1
	TWCR = 0x44; //启动TWI
 3f0:	84 e4       	ldi	r24, 0x44	; 68
 3f2:	86 bf       	out	0x36, r24	; 54
extern void init_mma7455(void);

//串口通信初始化
void usart_init(void)
{
	UCSRB = 0x00;//禁止中断
 3f4:	1a b8       	out	0x0a, r1	; 10
	UCSRA = 0x00;
 3f6:	1b b8       	out	0x0b, r1	; 11
	UCSRC = BIT(URSEL) | 0x06;
 3f8:	86 e8       	ldi	r24, 0x86	; 134
 3fa:	80 bd       	out	0x20, r24	; 32
	UBRRL = 0x0C;
 3fc:	8c e0       	ldi	r24, 0x0C	; 12
 3fe:	89 b9       	out	0x09, r24	; 9
	UBRRH = 0x00;
 400:	10 bc       	out	0x20, r1	; 32
	UCSRB = 0x98;
 402:	88 e9       	ldi	r24, 0x98	; 152
 404:	8a b9       	out	0x0a, r24	; 10
	MCUCSR = 0x80;//禁止JTAG
	GICR   = 0x00;
	port_init();
	twi_init();
	usart_init();
}
 406:	08 95       	ret

00000408 <print>:

void print()
{	
 408:	20 ed       	ldi	r18, 0xD0	; 208
 40a:	37 e0       	ldi	r19, 0x07	; 7
 40c:	c9 01       	movw	r24, r18
 40e:	01 97       	sbiw	r24, 0x01	; 1
 410:	f1 f7       	brne	.-4      	; 0x40e <print+0x6>
	_delay_ms(1);
	UDR=a/100+48;
 412:	40 91 8e 00 	lds	r20, 0x008E
 416:	84 2f       	mov	r24, r20
 418:	64 e6       	ldi	r22, 0x64	; 100
 41a:	0e 94 7d 02 	call	0x4fa	; 0x4fa <__udivmodqi4>
 41e:	80 5d       	subi	r24, 0xD0	; 208
 420:	8c b9       	out	0x0c, r24	; 12
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 422:	c9 01       	movw	r24, r18
 424:	01 97       	sbiw	r24, 0x01	; 1
 426:	f1 f7       	brne	.-4      	; 0x424 <print+0x1c>
	_delay_ms(1);
	UDR=a%100/10+48;
 428:	84 2f       	mov	r24, r20
 42a:	0e 94 7d 02 	call	0x4fa	; 0x4fa <__udivmodqi4>
 42e:	89 2f       	mov	r24, r25
 430:	6a e0       	ldi	r22, 0x0A	; 10
 432:	0e 94 7d 02 	call	0x4fa	; 0x4fa <__udivmodqi4>
 436:	80 5d       	subi	r24, 0xD0	; 208
 438:	8c b9       	out	0x0c, r24	; 12
 43a:	c9 01       	movw	r24, r18
 43c:	01 97       	sbiw	r24, 0x01	; 1
 43e:	f1 f7       	brne	.-4      	; 0x43c <print+0x34>
	_delay_ms(1);
	UDR=a%10+48;
 440:	84 2f       	mov	r24, r20
 442:	0e 94 7d 02 	call	0x4fa	; 0x4fa <__udivmodqi4>
 446:	90 5d       	subi	r25, 0xD0	; 208
 448:	9c b9       	out	0x0c, r25	; 12
 44a:	c9 01       	movw	r24, r18
 44c:	01 97       	sbiw	r24, 0x01	; 1
 44e:	f1 f7       	brne	.-4      	; 0x44c <print+0x44>
	_delay_ms(1);
	UDR='\n';
 450:	8a e0       	ldi	r24, 0x0A	; 10
 452:	8c b9       	out	0x0c, r24	; 12
 454:	c9 01       	movw	r24, r18
 456:	01 97       	sbiw	r24, 0x01	; 1
 458:	f1 f7       	brne	.-4      	; 0x456 <print+0x4e>
	_delay_ms(1);
}
 45a:	08 95       	ret

0000045c <ssig>:
}


//发出串口正常信号.
void ssig(char a[])
{
 45c:	ac 01       	movw	r20, r24
	int c=strlen(a);
 45e:	dc 01       	movw	r26, r24
 460:	0d 90       	ld	r0, X+
 462:	00 20       	and	r0, r0
 464:	e9 f7       	brne	.-6      	; 0x460 <__stack+0x1>
 466:	11 97       	sbiw	r26, 0x01	; 1
 468:	a8 1b       	sub	r26, r24
 46a:	b9 0b       	sbc	r27, r25
 46c:	20 e0       	ldi	r18, 0x00	; 0
 46e:	30 e0       	ldi	r19, 0x00	; 0
 470:	68 e5       	ldi	r22, 0x58	; 88
 472:	72 e0       	ldi	r23, 0x02	; 2
 474:	0a c0       	rjmp	.+20     	; 0x48a <__stack+0x2b>
 476:	fb 01       	movw	r30, r22
 478:	31 97       	sbiw	r30, 0x01	; 1
 47a:	f1 f7       	brne	.-4      	; 0x478 <__stack+0x19>
	//在这继续添加你的代码
	for(int count=0;count<c;count++)
	{
		_delay_us(300);
		UDR=a[count];
 47c:	fa 01       	movw	r30, r20
 47e:	e2 0f       	add	r30, r18
 480:	f3 1f       	adc	r31, r19
 482:	80 81       	ld	r24, Z
 484:	8c b9       	out	0x0c, r24	; 12
//发出串口正常信号.
void ssig(char a[])
{
	int c=strlen(a);
	//在这继续添加你的代码
	for(int count=0;count<c;count++)
 486:	2f 5f       	subi	r18, 0xFF	; 255
 488:	3f 4f       	sbci	r19, 0xFF	; 255
 48a:	2a 17       	cp	r18, r26
 48c:	3b 07       	cpc	r19, r27
 48e:	9c f3       	brlt	.-26     	; 0x476 <__stack+0x17>
 490:	88 e5       	ldi	r24, 0x58	; 88
 492:	92 e0       	ldi	r25, 0x02	; 2
 494:	01 97       	sbiw	r24, 0x01	; 1
 496:	f1 f7       	brne	.-4      	; 0x494 <__stack+0x35>
	{
		_delay_us(300);
		UDR=a[count];
	}
	_delay_us(300);
}
 498:	08 95       	ret

0000049a <world>:

void world(void)
{
 49a:	ff 92       	push	r15
 49c:	0f 93       	push	r16
 49e:	1f 93       	push	r17
	init_devices();
 4a0:	0e 94 e1 01 	call	0x3c2	; 0x3c2 <init_devices>
	//在这继续添加你的代码
	ssig("控制器准备完毕,所有状态一切正常.\n\n姚璇制造.\n\n");
 4a4:	80 e6       	ldi	r24, 0x60	; 96
 4a6:	90 e0       	ldi	r25, 0x00	; 0
 4a8:	0e 94 2e 02 	call	0x45c	; 0x45c <ssig>
	init_mma7455();	
 4ac:	0e 94 46 01 	call	0x28c	; 0x28c <init_mma7455>
	sei();
 4b0:	78 94       	sei
	while(1)
	{	
		cli();
		twi_read_8(0x06);
		sei();
		UDR='X';
 4b2:	88 e5       	ldi	r24, 0x58	; 88
 4b4:	f8 2e       	mov	r15, r24
		print();

		cli();
		twi_read_8(0x07);
		sei();
		UDR='Y';
 4b6:	09 e5       	ldi	r16, 0x59	; 89
		print();

		cli();
		twi_read_8(0x08);
		sei();
		UDR='Z';
 4b8:	1a e5       	ldi	r17, 0x5A	; 90
	sei();


	while(1)
	{	
		cli();
 4ba:	f8 94       	cli
		twi_read_8(0x06);
 4bc:	86 e0       	ldi	r24, 0x06	; 6
 4be:	0e 94 f3 00 	call	0x1e6	; 0x1e6 <twi_read_8>
		sei();
 4c2:	78 94       	sei
		UDR='X';
 4c4:	fc b8       	out	0x0c, r15	; 12
		print();
 4c6:	0e 94 04 02 	call	0x408	; 0x408 <print>

		cli();
 4ca:	f8 94       	cli
		twi_read_8(0x07);
 4cc:	87 e0       	ldi	r24, 0x07	; 7
 4ce:	0e 94 f3 00 	call	0x1e6	; 0x1e6 <twi_read_8>
		sei();
 4d2:	78 94       	sei
		UDR='Y';
 4d4:	0c b9       	out	0x0c, r16	; 12
		print();
 4d6:	0e 94 04 02 	call	0x408	; 0x408 <print>

		cli();
 4da:	f8 94       	cli
		twi_read_8(0x08);
 4dc:	88 e0       	ldi	r24, 0x08	; 8
 4de:	0e 94 f3 00 	call	0x1e6	; 0x1e6 <twi_read_8>
		sei();
 4e2:	78 94       	sei
		UDR='Z';
 4e4:	1c b9       	out	0x0c, r17	; 12
		print();
 4e6:	0e 94 04 02 	call	0x408	; 0x408 <print>
	
		a=0;
 4ea:	10 92 8e 00 	sts	0x008E, r1
 4ee:	e5 cf       	rjmp	.-54     	; 0x4ba <world+0x20>

000004f0 <main>:
	}
}

//主函数
int main(void)
{
 4f0:	0e 94 4d 02 	call	0x49a	; 0x49a <world>
	world();
	return 0;
}
 4f4:	80 e0       	ldi	r24, 0x00	; 0
 4f6:	90 e0       	ldi	r25, 0x00	; 0
 4f8:	08 95       	ret

000004fa <__udivmodqi4>:
 4fa:	99 1b       	sub	r25, r25
 4fc:	79 e0       	ldi	r23, 0x09	; 9
 4fe:	04 c0       	rjmp	.+8      	; 0x508 <__udivmodqi4_ep>

00000500 <__udivmodqi4_loop>:
 500:	99 1f       	adc	r25, r25
 502:	96 17       	cp	r25, r22
 504:	08 f0       	brcs	.+2      	; 0x508 <__udivmodqi4_ep>
 506:	96 1b       	sub	r25, r22

00000508 <__udivmodqi4_ep>:
 508:	88 1f       	adc	r24, r24
 50a:	7a 95       	dec	r23
 50c:	c9 f7       	brne	.-14     	; 0x500 <__udivmodqi4_loop>
 50e:	80 95       	com	r24
 510:	08 95       	ret

00000512 <_exit>:
 512:	f8 94       	cli

00000514 <__stop_program>:
 514:	ff cf       	rjmp	.-2      	; 0x514 <__stop_program>

⌨️ 快捷键说明

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