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

📄 shiyan5.lss

📁 串口通讯程序
💻 LSS
📖 第 1 页 / 共 2 页
字号:
	{
		UCSR1A|=(1<<UDRE1);
 218:	80 91 9b 00 	lds	r24, 0x009B
 21c:	80 62       	ori	r24, 0x20	; 32
 21e:	80 93 9b 00 	sts	0x009B, r24
	}
	while(!(UCSR1A&(1<<UDRE1)))//等待发送缓冲器空
 222:	80 91 9b 00 	lds	r24, 0x009B
 226:	99 27       	eor	r25, r25
 228:	80 72       	andi	r24, 0x20	; 32
 22a:	90 70       	andi	r25, 0x00	; 0
 22c:	00 97       	sbiw	r24, 0x00	; 0
 22e:	c9 f3       	breq	.-14     	; 0x222
	{;}
	UDR1=data;//发送数据
 230:	89 81       	ldd	r24, Y+1	; 0x01
 232:	80 93 9c 00 	sts	0x009C, r24
        while(!(UCSR1A&(1<<TXC1))){;}
 236:	80 91 9b 00 	lds	r24, 0x009B
 23a:	99 27       	eor	r25, r25
 23c:	80 74       	andi	r24, 0x40	; 64
 23e:	90 70       	andi	r25, 0x00	; 0
 240:	00 97       	sbiw	r24, 0x00	; 0
 242:	c9 f3       	breq	.-14     	; 0x236
	//loop_until_bit_is_set(UCSR1A,TXC1);//查询发送是否结束
	UCSR1A=UCSR1A|(1<<TXC1);//因为没有使用发送结束中断,所以通过置数将TXC清零
 244:	80 91 9b 00 	lds	r24, 0x009B
 248:	80 64       	ori	r24, 0x40	; 64
 24a:	80 93 9b 00 	sts	0x009B, r24
	cbi(PORTD,PD4);//改为接收状态
 24e:	80 91 32 00 	lds	r24, 0x0032
 252:	8f 7e       	andi	r24, 0xEF	; 239
 254:	80 93 32 00 	sts	0x0032, r24
    return;
} 
 258:	21 96       	adiw	r28, 0x01	; 1
 25a:	0f b6       	in	r0, 0x3f	; 63
 25c:	f8 94       	cli
 25e:	de bf       	out	0x3e, r29	; 62
 260:	0f be       	out	0x3f, r0	; 63
 262:	cd bf       	out	0x3d, r28	; 61
 264:	df 91       	pop	r29
 266:	cf 91       	pop	r28
 268:	08 95       	ret

0000026a <__vector_30>:
SIGNAL(SIG_UART1_RECV)//当RXCIE1=1,SREG=0X80,接收结束时有RXC1也为1
{
 26a:	1f 92       	push	r1
 26c:	0f 92       	push	r0
 26e:	0f b6       	in	r0, 0x3f	; 63
 270:	0f 92       	push	r0
 272:	11 24       	eor	r1, r1
 274:	8f 93       	push	r24
 276:	9f 93       	push	r25
 278:	ef 93       	push	r30
 27a:	ff 93       	push	r31
 27c:	cf 93       	push	r28
 27e:	df 93       	push	r29
 280:	cd b7       	in	r28, 0x3d	; 61
 282:	de b7       	in	r29, 0x3e	; 62
  cli();
 284:	f8 94       	cli
  global_uart1_data=UDR1;
 286:	80 91 9c 00 	lds	r24, 0x009C
 28a:	80 93 12 01 	sts	0x0112, r24
  data_receive[ii]=global_uart1_data;
 28e:	80 91 13 01 	lds	r24, 0x0113
 292:	90 91 14 01 	lds	r25, 0x0114
 296:	fc 01       	movw	r30, r24
 298:	eb 5e       	subi	r30, 0xEB	; 235
 29a:	fe 4f       	sbci	r31, 0xFE	; 254
 29c:	80 91 12 01 	lds	r24, 0x0112
 2a0:	80 83       	st	Z, r24
  ii++;
 2a2:	80 91 13 01 	lds	r24, 0x0113
 2a6:	90 91 14 01 	lds	r25, 0x0114
 2aa:	01 96       	adiw	r24, 0x01	; 1
 2ac:	90 93 14 01 	sts	0x0114, r25
 2b0:	80 93 13 01 	sts	0x0113, r24
  if(ii>14) 
 2b4:	80 91 13 01 	lds	r24, 0x0113
 2b8:	90 91 14 01 	lds	r25, 0x0114
 2bc:	8f 30       	cpi	r24, 0x0F	; 15
 2be:	91 05       	cpc	r25, r1
 2c0:	24 f0       	brlt	.+8      	; 0x2ca
  {
  ii=0;
 2c2:	10 92 14 01 	sts	0x0114, r1
 2c6:	10 92 13 01 	sts	0x0113, r1
  }
  sei();
 2ca:	78 94       	sei
}
 2cc:	df 91       	pop	r29
 2ce:	cf 91       	pop	r28
 2d0:	ff 91       	pop	r31
 2d2:	ef 91       	pop	r30
 2d4:	9f 91       	pop	r25
 2d6:	8f 91       	pop	r24
 2d8:	0f 90       	pop	r0
 2da:	0f be       	out	0x3f, r0	; 63
 2dc:	0f 90       	pop	r0
 2de:	1f 90       	pop	r1
 2e0:	18 95       	reti

000002e2 <lrc_check>:
int lrc_check(char *p,int length)
{
 2e2:	cf 93       	push	r28
 2e4:	df 93       	push	r29
 2e6:	cd b7       	in	r28, 0x3d	; 61
 2e8:	de b7       	in	r29, 0x3e	; 62
 2ea:	2c 97       	sbiw	r28, 0x0c	; 12
 2ec:	0f b6       	in	r0, 0x3f	; 63
 2ee:	f8 94       	cli
 2f0:	de bf       	out	0x3e, r29	; 62
 2f2:	0f be       	out	0x3f, r0	; 63
 2f4:	cd bf       	out	0x3d, r28	; 61
 2f6:	89 83       	std	Y+1, r24	; 0x01
 2f8:	9a 83       	std	Y+2, r25	; 0x02
 2fa:	6b 83       	std	Y+3, r22	; 0x03
 2fc:	7c 83       	std	Y+4, r23	; 0x04
  int lrc=0;
 2fe:	1d 82       	std	Y+5, r1	; 0x05
 300:	1e 82       	std	Y+6, r1	; 0x06
  int i=0;
 302:	1f 82       	std	Y+7, r1	; 0x07
 304:	18 86       	std	Y+8, r1	; 0x08
  for(i=1;i<=length;i++)
 306:	81 e0       	ldi	r24, 0x01	; 1
 308:	90 e0       	ldi	r25, 0x00	; 0
 30a:	8f 83       	std	Y+7, r24	; 0x07
 30c:	98 87       	std	Y+8, r25	; 0x08
 30e:	2f 81       	ldd	r18, Y+7	; 0x07
 310:	38 85       	ldd	r19, Y+8	; 0x08
 312:	8b 81       	ldd	r24, Y+3	; 0x03
 314:	9c 81       	ldd	r25, Y+4	; 0x04
 316:	82 17       	cp	r24, r18
 318:	93 07       	cpc	r25, r19
 31a:	0c f4       	brge	.+2      	; 0x31e
 31c:	16 c0       	rjmp	.+44     	; 0x34a
  lrc=lrc+*(p+i);
 31e:	29 81       	ldd	r18, Y+1	; 0x01
 320:	3a 81       	ldd	r19, Y+2	; 0x02
 322:	8f 81       	ldd	r24, Y+7	; 0x07
 324:	98 85       	ldd	r25, Y+8	; 0x08
 326:	f9 01       	movw	r30, r18
 328:	e8 0f       	add	r30, r24
 32a:	f9 1f       	adc	r31, r25
 32c:	80 81       	ld	r24, Z
 32e:	28 2f       	mov	r18, r24
 330:	33 27       	eor	r19, r19
 332:	8d 81       	ldd	r24, Y+5	; 0x05
 334:	9e 81       	ldd	r25, Y+6	; 0x06
 336:	82 0f       	add	r24, r18
 338:	93 1f       	adc	r25, r19
 33a:	8d 83       	std	Y+5, r24	; 0x05
 33c:	9e 83       	std	Y+6, r25	; 0x06
 33e:	8f 81       	ldd	r24, Y+7	; 0x07
 340:	98 85       	ldd	r25, Y+8	; 0x08
 342:	01 96       	adiw	r24, 0x01	; 1
 344:	8f 83       	std	Y+7, r24	; 0x07
 346:	98 87       	std	Y+8, r25	; 0x08
 348:	e2 cf       	rjmp	.-60     	; 0x30e
  lrc=lrc%256;
 34a:	2d 81       	ldd	r18, Y+5	; 0x05
 34c:	3e 81       	ldd	r19, Y+6	; 0x06
 34e:	29 87       	std	Y+9, r18	; 0x09
 350:	3a 87       	std	Y+10, r19	; 0x0a
 352:	49 85       	ldd	r20, Y+9	; 0x09
 354:	5a 85       	ldd	r21, Y+10	; 0x0a
 356:	4b 87       	std	Y+11, r20	; 0x0b
 358:	5c 87       	std	Y+12, r21	; 0x0c
 35a:	8b 85       	ldd	r24, Y+11	; 0x0b
 35c:	9c 85       	ldd	r25, Y+12	; 0x0c
 35e:	99 23       	and	r25, r25
 360:	34 f4       	brge	.+12     	; 0x36e
 362:	2b 85       	ldd	r18, Y+11	; 0x0b
 364:	3c 85       	ldd	r19, Y+12	; 0x0c
 366:	21 50       	subi	r18, 0x01	; 1
 368:	3f 4f       	sbci	r19, 0xFF	; 255
 36a:	2b 87       	std	Y+11, r18	; 0x0b
 36c:	3c 87       	std	Y+12, r19	; 0x0c
 36e:	4b 85       	ldd	r20, Y+11	; 0x0b
 370:	5c 85       	ldd	r21, Y+12	; 0x0c
 372:	25 2f       	mov	r18, r21
 374:	33 27       	eor	r19, r19
 376:	27 fd       	sbrc	r18, 7
 378:	3a 95       	dec	r19
 37a:	80 e0       	ldi	r24, 0x00	; 0
 37c:	91 e0       	ldi	r25, 0x01	; 1
 37e:	28 9f       	mul	r18, r24
 380:	a0 01       	movw	r20, r0
 382:	29 9f       	mul	r18, r25
 384:	50 0d       	add	r21, r0
 386:	38 9f       	mul	r19, r24
 388:	50 0d       	add	r21, r0
 38a:	11 24       	eor	r1, r1
 38c:	ca 01       	movw	r24, r20
 38e:	29 85       	ldd	r18, Y+9	; 0x09
 390:	3a 85       	ldd	r19, Y+10	; 0x0a
 392:	28 1b       	sub	r18, r24
 394:	39 0b       	sbc	r19, r25
 396:	c9 01       	movw	r24, r18
 398:	8d 83       	std	Y+5, r24	; 0x05
 39a:	9e 83       	std	Y+6, r25	; 0x06
  lrc=0xff-lrc;
 39c:	2f ef       	ldi	r18, 0xFF	; 255
 39e:	30 e0       	ldi	r19, 0x00	; 0
 3a0:	8d 81       	ldd	r24, Y+5	; 0x05
 3a2:	9e 81       	ldd	r25, Y+6	; 0x06
 3a4:	28 1b       	sub	r18, r24
 3a6:	39 0b       	sbc	r19, r25
 3a8:	c9 01       	movw	r24, r18
 3aa:	8d 83       	std	Y+5, r24	; 0x05
 3ac:	9e 83       	std	Y+6, r25	; 0x06
  lrc++;
 3ae:	8d 81       	ldd	r24, Y+5	; 0x05
 3b0:	9e 81       	ldd	r25, Y+6	; 0x06
 3b2:	01 96       	adiw	r24, 0x01	; 1
 3b4:	8d 83       	std	Y+5, r24	; 0x05
 3b6:	9e 83       	std	Y+6, r25	; 0x06
  return lrc;
 3b8:	8d 81       	ldd	r24, Y+5	; 0x05
 3ba:	9e 81       	ldd	r25, Y+6	; 0x06
}
 3bc:	2c 96       	adiw	r28, 0x0c	; 12
 3be:	0f b6       	in	r0, 0x3f	; 63
 3c0:	f8 94       	cli
 3c2:	de bf       	out	0x3e, r29	; 62
 3c4:	0f be       	out	0x3f, r0	; 63
 3c6:	cd bf       	out	0x3d, r28	; 61
 3c8:	df 91       	pop	r29
 3ca:	cf 91       	pop	r28
 3cc:	08 95       	ret

000003ce <main>:
int main()
{       char *pointer;
 3ce:	c8 ef       	ldi	r28, 0xF8	; 248
 3d0:	d0 e1       	ldi	r29, 0x10	; 16
 3d2:	de bf       	out	0x3e, r29	; 62
 3d4:	cd bf       	out	0x3d, r28	; 61
        int i;
		char n;
        pointer=command_send;
 3d6:	80 e0       	ldi	r24, 0x00	; 0
 3d8:	91 e0       	ldi	r25, 0x01	; 1
 3da:	89 83       	std	Y+1, r24	; 0x01
 3dc:	9a 83       	std	Y+2, r25	; 0x02
        int lrc_check_value;
	sbi(DDRD,PD4);//配置CS485为输出
 3de:	80 91 31 00 	lds	r24, 0x0031
 3e2:	80 61       	ori	r24, 0x10	; 16
 3e4:	80 93 31 00 	sts	0x0031, r24
	cbi(PORTD,PD4);//控制max485为接收
 3e8:	80 91 32 00 	lds	r24, 0x0032
 3ec:	8f 7e       	andi	r24, 0xEF	; 239
 3ee:	80 93 32 00 	sts	0x0032, r24
	sei();
 3f2:	78 94       	sei
        usart1_init();
 3f4:	0e 94 d7 00 	call	0x1ae
        delay_ms(5);
 3f8:	85 e0       	ldi	r24, 0x05	; 5
 3fa:	90 e0       	ldi	r25, 0x00	; 0
 3fc:	0e 94 85 00 	call	0x10a
        lrc_check_value=lrc_check(command_send,12);
 400:	6c e0       	ldi	r22, 0x0C	; 12
 402:	70 e0       	ldi	r23, 0x00	; 0
 404:	80 e0       	ldi	r24, 0x00	; 0
 406:	91 e0       	ldi	r25, 0x01	; 1
 408:	0e 94 71 01 	call	0x2e2
 40c:	8e 83       	std	Y+6, r24	; 0x06
 40e:	9f 83       	std	Y+7, r25	; 0x07
        for(i=0;i<=16;i++)
 410:	1b 82       	std	Y+3, r1	; 0x03
 412:	1c 82       	std	Y+4, r1	; 0x04
 414:	8b 81       	ldd	r24, Y+3	; 0x03
 416:	9c 81       	ldd	r25, Y+4	; 0x04
 418:	81 31       	cpi	r24, 0x11	; 17
 41a:	91 05       	cpc	r25, r1
 41c:	0c f0       	brlt	.+2      	; 0x420
 41e:	14 c0       	rjmp	.+40     	; 0x448
        {sendchar(*pointer);
 420:	e9 81       	ldd	r30, Y+1	; 0x01
 422:	fa 81       	ldd	r31, Y+2	; 0x02
 424:	80 81       	ld	r24, Z
 426:	0e 94 f5 00 	call	0x1ea
		 n=*pointer;
 42a:	e9 81       	ldd	r30, Y+1	; 0x01
 42c:	fa 81       	ldd	r31, Y+2	; 0x02
 42e:	80 81       	ld	r24, Z
 430:	8d 83       	std	Y+5, r24	; 0x05
        pointer++;}
 432:	89 81       	ldd	r24, Y+1	; 0x01
 434:	9a 81       	ldd	r25, Y+2	; 0x02
 436:	01 96       	adiw	r24, 0x01	; 1
 438:	89 83       	std	Y+1, r24	; 0x01
 43a:	9a 83       	std	Y+2, r25	; 0x02
 43c:	8b 81       	ldd	r24, Y+3	; 0x03
 43e:	9c 81       	ldd	r25, Y+4	; 0x04
 440:	01 96       	adiw	r24, 0x01	; 1
 442:	8b 83       	std	Y+3, r24	; 0x03
 444:	9c 83       	std	Y+4, r25	; 0x04
 446:	e6 cf       	rjmp	.-52     	; 0x414
	while(1)
 448:	ff cf       	rjmp	.-2      	; 0x448

⌨️ 快捷键说明

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