📄 shiyan5.lss
字号:
{
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 + -