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

📄 7455.lss

📁 GY-29-MMA7455发送资料
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 1a6:	b1 f7       	brne	.-20     	; 0x194 <twi_write_8+0x1e>

//返回值: 0表示失败,1表示接到ACK,2表示接NOT ACK
uchar twi_send(uchar data)
{
	TWDR=data;
	TWCR = (1<<TWINT) | (1<<TWEN);
 1a8:	94 e8       	ldi	r25, 0x84	; 132
}

//返回值: 0表示失败,1表示接到ACK,2表示接NOT ACK
uchar twi_send(uchar data)
{
	TWDR=data;
 1aa:	23 b9       	out	0x03, r18	; 3
	TWCR = (1<<TWINT) | (1<<TWEN);
 1ac:	96 bf       	out	0x36, r25	; 54
	while (!(TWCR & (1<<TWINT)));
 1ae:	06 b6       	in	r0, 0x36	; 54
 1b0:	07 fe       	sbrs	r0, 7
 1b2:	fd cf       	rjmp	.-6      	; 0x1ae <twi_write_8+0x38>
	if ((TWSR & 0xF8) ==TW_MT_DATA_ACK)
 1b4:	81 b1       	in	r24, 0x01	; 1
 1b6:	88 7f       	andi	r24, 0xF8	; 248
 1b8:	88 32       	cpi	r24, 0x28	; 40
 1ba:	21 f0       	breq	.+8      	; 0x1c4 <twi_write_8+0x4e>
	{
		return 1;
	}
	else if ((TWSR & 0xF8) ==TW_MT_DATA_NACK)
 1bc:	81 b1       	in	r24, 0x01	; 1
 1be:	88 7f       	andi	r24, 0xF8	; 248
 1c0:	80 33       	cpi	r24, 0x30	; 48
 1c2:	99 f7       	brne	.-26     	; 0x1aa <twi_write_8+0x34>

//返回值: 0表示失败,1表示接到ACK,2表示接NOT ACK
uchar twi_send(uchar data)
{
	TWDR=data;
	TWCR = (1<<TWINT) | (1<<TWEN);
 1c4:	94 e8       	ldi	r25, 0x84	; 132
}

//返回值: 0表示失败,1表示接到ACK,2表示接NOT ACK
uchar twi_send(uchar data)
{
	TWDR=data;
 1c6:	63 b9       	out	0x03, r22	; 3
	TWCR = (1<<TWINT) | (1<<TWEN);
 1c8:	96 bf       	out	0x36, r25	; 54
	while (!(TWCR & (1<<TWINT)));
 1ca:	06 b6       	in	r0, 0x36	; 54
 1cc:	07 fe       	sbrs	r0, 7
 1ce:	fd cf       	rjmp	.-6      	; 0x1ca <twi_write_8+0x54>
	if ((TWSR & 0xF8) ==TW_MT_DATA_ACK)
 1d0:	81 b1       	in	r24, 0x01	; 1
 1d2:	88 7f       	andi	r24, 0xF8	; 248
 1d4:	88 32       	cpi	r24, 0x28	; 40
 1d6:	21 f0       	breq	.+8      	; 0x1e0 <twi_write_8+0x6a>
	{
		return 1;
	}
	else if ((TWSR & 0xF8) ==TW_MT_DATA_NACK)
 1d8:	81 b1       	in	r24, 0x01	; 1
 1da:	88 7f       	andi	r24, 0xF8	; 248
 1dc:	80 33       	cpi	r24, 0x30	; 48
 1de:	99 f7       	brne	.-26     	; 0x1c6 <twi_write_8+0x50>


//停止通信,发送STOP信号
void twi_stop(void)
{
	TWCR = (1<<TWINT)|(1<<TWSTO)|(1<<TWEN);
 1e0:	84 e9       	ldi	r24, 0x94	; 148
 1e2:	86 bf       	out	0x36, r24	; 54
	while(!twi_start());
	while(!twi_to_write());
	while(!twi_send(adress));
	while(!twi_send(com));
	twi_stop();
}
 1e4:	08 95       	ret

000001e6 <twi_read_8>:


void twi_read_8(uchar adress)
{	
 1e6:	28 2f       	mov	r18, r24
	TWCR = 0x44; //启动TWI
}

uchar twi_start(void)
{
	TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
 1e8:	94 ea       	ldi	r25, 0xA4	; 164
 1ea:	96 bf       	out	0x36, r25	; 54
	while (!(TWCR & (1<<TWINT)));
 1ec:	06 b6       	in	r0, 0x36	; 54
 1ee:	07 fe       	sbrs	r0, 7
 1f0:	fd cf       	rjmp	.-6      	; 0x1ec <twi_read_8+0x6>
	if((TWSR & 0xf8)==TW_START)
 1f2:	81 b1       	in	r24, 0x01	; 1
 1f4:	88 7f       	andi	r24, 0xF8	; 248
 1f6:	88 30       	cpi	r24, 0x08	; 8
 1f8:	21 f0       	breq	.+8      	; 0x202 <twi_read_8+0x1c>
	{
		return 1;
	}
	else if((TWSR & 0xf8)==TW_REP_START)
 1fa:	81 b1       	in	r24, 0x01	; 1
 1fc:	88 7f       	andi	r24, 0xF8	; 248
 1fe:	80 31       	cpi	r24, 0x10	; 16
 200:	a1 f7       	brne	.-24     	; 0x1ea <twi_read_8+0x4>

//返回值:	1表示成功,0表示失败
uchar twi_to_write(void)
{
	TWDR=TWAR;
	TWCR = (1<<TWINT) | (1<<TWEN);
 202:	94 e8       	ldi	r25, 0x84	; 132
}

//返回值:	1表示成功,0表示失败
uchar twi_to_write(void)
{
	TWDR=TWAR;
 204:	82 b1       	in	r24, 0x02	; 2
 206:	83 b9       	out	0x03, r24	; 3
	TWCR = (1<<TWINT) | (1<<TWEN);
 208:	96 bf       	out	0x36, r25	; 54
	while (!(TWCR & (1<<TWINT)));
 20a:	06 b6       	in	r0, 0x36	; 54
 20c:	07 fe       	sbrs	r0, 7
 20e:	fd cf       	rjmp	.-6      	; 0x20a <twi_read_8+0x24>
	if((TWSR & 0xf8)==TW_MT_SLA_ACK)
 210:	81 b1       	in	r24, 0x01	; 1
 212:	88 7f       	andi	r24, 0xF8	; 248
 214:	88 31       	cpi	r24, 0x18	; 24
 216:	b1 f7       	brne	.-20     	; 0x204 <twi_read_8+0x1e>

//返回值: 0表示失败,1表示接到ACK,2表示接NOT ACK
uchar twi_send(uchar data)
{
	TWDR=data;
	TWCR = (1<<TWINT) | (1<<TWEN);
 218:	94 e8       	ldi	r25, 0x84	; 132
}

//返回值: 0表示失败,1表示接到ACK,2表示接NOT ACK
uchar twi_send(uchar data)
{
	TWDR=data;
 21a:	23 b9       	out	0x03, r18	; 3
	TWCR = (1<<TWINT) | (1<<TWEN);
 21c:	96 bf       	out	0x36, r25	; 54
	while (!(TWCR & (1<<TWINT)));
 21e:	06 b6       	in	r0, 0x36	; 54
 220:	07 fe       	sbrs	r0, 7
 222:	fd cf       	rjmp	.-6      	; 0x21e <twi_read_8+0x38>
	if ((TWSR & 0xF8) ==TW_MT_DATA_ACK)
 224:	81 b1       	in	r24, 0x01	; 1
 226:	88 7f       	andi	r24, 0xF8	; 248
 228:	88 32       	cpi	r24, 0x28	; 40
 22a:	21 f0       	breq	.+8      	; 0x234 <twi_read_8+0x4e>
	{
		return 1;
	}
	else if ((TWSR & 0xF8) ==TW_MT_DATA_NACK)
 22c:	81 b1       	in	r24, 0x01	; 1
 22e:	88 7f       	andi	r24, 0xF8	; 248
 230:	80 33       	cpi	r24, 0x30	; 48
 232:	99 f7       	brne	.-26     	; 0x21a <twi_read_8+0x34>
	TWCR = 0x44; //启动TWI
}

uchar twi_start(void)
{
	TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN);
 234:	94 ea       	ldi	r25, 0xA4	; 164
 236:	96 bf       	out	0x36, r25	; 54
	while (!(TWCR & (1<<TWINT)));
 238:	06 b6       	in	r0, 0x36	; 54
 23a:	07 fe       	sbrs	r0, 7
 23c:	fd cf       	rjmp	.-6      	; 0x238 <twi_read_8+0x52>
	if((TWSR & 0xf8)==TW_START)
 23e:	81 b1       	in	r24, 0x01	; 1
 240:	88 7f       	andi	r24, 0xF8	; 248
 242:	88 30       	cpi	r24, 0x08	; 8
 244:	21 f0       	breq	.+8      	; 0x24e <twi_read_8+0x68>
	{
		return 1;
	}
	else if((TWSR & 0xf8)==TW_REP_START)
 246:	81 b1       	in	r24, 0x01	; 1
 248:	88 7f       	andi	r24, 0xF8	; 248
 24a:	80 31       	cpi	r24, 0x10	; 16
 24c:	a1 f7       	brne	.-24     	; 0x236 <twi_read_8+0x50>

//返回值:	1表示成功,0表示失败
uchar twi_to_read(void)
{
	TWDR=TWAR+1;
	TWCR = (1<<TWINT) | (1<<TWEN);
 24e:	94 e8       	ldi	r25, 0x84	; 132
}

//返回值:	1表示成功,0表示失败
uchar twi_to_read(void)
{
	TWDR=TWAR+1;
 250:	82 b1       	in	r24, 0x02	; 2
 252:	8f 5f       	subi	r24, 0xFF	; 255
 254:	83 b9       	out	0x03, r24	; 3
	TWCR = (1<<TWINT) | (1<<TWEN);
 256:	96 bf       	out	0x36, r25	; 54
	while (!(TWCR & (1<<TWINT)));
 258:	06 b6       	in	r0, 0x36	; 54
 25a:	07 fe       	sbrs	r0, 7
 25c:	fd cf       	rjmp	.-6      	; 0x258 <twi_read_8+0x72>
	if((TWSR & 0xf8)==TW_MR_SLA_ACK )
 25e:	81 b1       	in	r24, 0x01	; 1
 260:	88 7f       	andi	r24, 0xF8	; 248
 262:	80 34       	cpi	r24, 0x40	; 64
 264:	a9 f7       	brne	.-22     	; 0x250 <twi_read_8+0x6a>
}

//返回值: 0表示失败,1表示接到ACK,2表示接NOT ACK
uchar twi_receive(void)
{
	TWCR = (1<<TWINT) | (1<<TWEN);
 266:	24 e8       	ldi	r18, 0x84	; 132
 268:	26 bf       	out	0x36, r18	; 54
	while (!(TWCR & (1<<TWINT)));
 26a:	06 b6       	in	r0, 0x36	; 54
 26c:	07 fe       	sbrs	r0, 7
 26e:	fd cf       	rjmp	.-6      	; 0x26a <twi_read_8+0x84>
	a=TWDR;
 270:	93 b1       	in	r25, 0x03	; 3
	if ((TWSR & 0xF8) ==TW_MR_DATA_ACK)
 272:	81 b1       	in	r24, 0x01	; 1
 274:	88 7f       	andi	r24, 0xF8	; 248
 276:	80 35       	cpi	r24, 0x50	; 80
 278:	21 f0       	breq	.+8      	; 0x282 <twi_read_8+0x9c>
	{
		return 1;
	}
	else if ((TWSR & 0xF8) ==TW_MR_DATA_NACK)
 27a:	81 b1       	in	r24, 0x01	; 1
 27c:	88 7f       	andi	r24, 0xF8	; 248
 27e:	88 35       	cpi	r24, 0x58	; 88
 280:	99 f7       	brne	.-26     	; 0x268 <twi_read_8+0x82>
 282:	90 93 8e 00 	sts	0x008E, r25


//停止通信,发送STOP信号
void twi_stop(void)
{
	TWCR = (1<<TWINT)|(1<<TWSTO)|(1<<TWEN);
 286:	84 e9       	ldi	r24, 0x94	; 148
 288:	86 bf       	out	0x36, r24	; 54
	while(!twi_send(adress));
	while(!twi_start());
	while(!twi_to_read());
	while(!twi_receive());
	twi_stop();
}
 28a:	08 95       	ret

0000028c <init_mma7455>:


//初始化
void init_mma7455(void)
{	
 28c:	65 e4       	ldi	r22, 0x45	; 69
 28e:	86 e1       	ldi	r24, 0x16	; 22
 290:	0e 94 bb 00 	call	0x176	; 0x176 <twi_write_8>
	twi_write_8(0x16,0x45);//2G,测量
	twi_write_8(0x18,0x80);	
 294:	60 e8       	ldi	r22, 0x80	; 128
 296:	88 e1       	ldi	r24, 0x18	; 24
 298:	0e 94 bb 00 	call	0x176	; 0x176 <twi_write_8>
	twi_write_8(0x10,74);	//X校
 29c:	6a e4       	ldi	r22, 0x4A	; 74
 29e:	80 e1       	ldi	r24, 0x10	; 16
 2a0:	0e 94 bb 00 	call	0x176	; 0x176 <twi_write_8>
	twi_write_8(0x12,110);//Y校
 2a4:	6e e6       	ldi	r22, 0x6E	; 110
 2a6:	82 e1       	ldi	r24, 0x12	; 18
 2a8:	0e 94 bb 00 	call	0x176	; 0x176 <twi_write_8>
	twi_write_8(0x14,98);//Z校
 2ac:	62 e6       	ldi	r22, 0x62	; 98
 2ae:	84 e1       	ldi	r24, 0x14	; 20
 2b0:	0e 94 bb 00 	call	0x176	; 0x176 <twi_write_8>
}
 2b4:	08 95       	ret

000002b6 <__vector_11>:



//串行接收结束中断服务程序 
ISR(USART_RXC_vect) 
{ 
 2b6:	1f 92       	push	r1
 2b8:	0f 92       	push	r0
 2ba:	0f b6       	in	r0, 0x3f	; 63
 2bc:	0f 92       	push	r0
 2be:	11 24       	eor	r1, r1
 2c0:	2f 93       	push	r18
 2c2:	3f 93       	push	r19
 2c4:	4f 93       	push	r20
 2c6:	5f 93       	push	r21
 2c8:	6f 93       	push	r22
 2ca:	7f 93       	push	r23
 2cc:	8f 93       	push	r24
 2ce:	9f 93       	push	r25
 2d0:	af 93       	push	r26
 2d2:	bf 93       	push	r27
 2d4:	ef 93       	push	r30
 2d6:	ff 93       	push	r31
cli();//关中断. 
 2d8:	f8 94       	cli
stmp=UDR;//保护接收UDR数据. 
 2da:	8c b1       	in	r24, 0x0c	; 12
 2dc:	80 93 92 00 	sts	0x0092, r24
    if((stmp!='x')&&(stmp!='y')&&(stmp!='z')&&(stmp!='r'))//装缓冲区,以换行符为结束字节. 
 2e0:	80 91 92 00 	lds	r24, 0x0092
 2e4:	88 37       	cpi	r24, 0x78	; 120
 2e6:	e1 f0       	breq	.+56     	; 0x320 <__vector_11+0x6a>
 2e8:	80 91 92 00 	lds	r24, 0x0092
 2ec:	89 37       	cpi	r24, 0x79	; 121
 2ee:	c1 f0       	breq	.+48     	; 0x320 <__vector_11+0x6a>
 2f0:	80 91 92 00 	lds	r24, 0x0092
 2f4:	8a 37       	cpi	r24, 0x7A	; 122
 2f6:	a1 f0       	breq	.+40     	; 0x320 <__vector_11+0x6a>
 2f8:	80 91 92 00 	lds	r24, 0x0092
 2fc:	82 37       	cpi	r24, 0x72	; 114
 2fe:	81 f0       	breq	.+32     	; 0x320 <__vector_11+0x6a>
    { 
	    inbuffer[inbufcount++]=stmp; 
 300:	80 91 90 00 	lds	r24, 0x0090
 304:	90 91 91 00 	lds	r25, 0x0091
 308:	20 91 92 00 	lds	r18, 0x0092
 30c:	fc 01       	movw	r30, r24
 30e:	ed 56       	subi	r30, 0x6D	; 109
 310:	ff 4f       	sbci	r31, 0xFF	; 255
 312:	20 83       	st	Z, r18
 314:	01 96       	adiw	r24, 0x01	; 1
 316:	90 93 91 00 	sts	0x0091, r25
 31a:	80 93 90 00 	sts	0x0090, r24
 31e:	33 c0       	rjmp	.+102    	; 0x386 <__vector_11+0xd0>
	 	return; 
    } 
    else //结束条件满足,执行操作.
    { 
		if(stmp=='x')
 320:	80 91 92 00 	lds	r24, 0x0092
 324:	88 37       	cpi	r24, 0x78	; 120
 326:	49 f4       	brne	.+18     	; 0x33a <__vector_11+0x84>
		{
			twi_write_8(0x10,inbuffer[inbufcount-1]);
 328:	e0 91 90 00 	lds	r30, 0x0090
 32c:	f0 91 91 00 	lds	r31, 0x0091
 330:	ee 56       	subi	r30, 0x6E	; 110
 332:	ff 4f       	sbci	r31, 0xFF	; 255
 334:	60 81       	ld	r22, Z
 336:	80 e1       	ldi	r24, 0x10	; 16
 338:	0c c0       	rjmp	.+24     	; 0x352 <__vector_11+0x9c>
		}
		else if(stmp=='y')
 33a:	80 91 92 00 	lds	r24, 0x0092
 33e:	89 37       	cpi	r24, 0x79	; 121
 340:	59 f4       	brne	.+22     	; 0x358 <__vector_11+0xa2>
			{
				twi_write_8(0x12,inbuffer[inbufcount-1]);	
 342:	e0 91 90 00 	lds	r30, 0x0090
 346:	f0 91 91 00 	lds	r31, 0x0091
 34a:	ee 56       	subi	r30, 0x6E	; 110
 34c:	ff 4f       	sbci	r31, 0xFF	; 255
 34e:	60 81       	ld	r22, Z
 350:	82 e1       	ldi	r24, 0x12	; 18
 352:	0e 94 bb 00 	call	0x176	; 0x176 <twi_write_8>
 356:	13 c0       	rjmp	.+38     	; 0x37e <__vector_11+0xc8>
			}
		else if(stmp=='z')
 358:	80 91 92 00 	lds	r24, 0x0092
 35c:	8a 37       	cpi	r24, 0x7A	; 122
 35e:	49 f4       	brne	.+18     	; 0x372 <__vector_11+0xbc>
			{
				twi_write_8(0x14,inbuffer[inbufcount-1]);
 360:	e0 91 90 00 	lds	r30, 0x0090

⌨️ 快捷键说明

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