📄 uart.lst
字号:
166:UART.c **** //参 数:
167:UART.c **** //返 回 值:
168:UART.c **** //***********************************************************************
169:UART.c **** SIGNAL(SIG_UART_TRANS)
170:UART.c **** {
575 .LM44:
576 /* prologue: frame size=0 */
577 0304 1F92 push __zero_reg__
578 0306 0F92 push __tmp_reg__
579 0308 0FB6 in __tmp_reg__,__SREG__
580 030a 0F92 push __tmp_reg__
581 030c 1124 clr __zero_reg__
582 030e 2F93 push r18
583 0310 3F93 push r19
584 0312 8F93 push r24
585 0314 9F93 push r25
586 0316 EF93 push r30
587 0318 FF93 push r31
588 031a CF93 push r28
589 031c DF93 push r29
590 031e CDB7 in r28,__SP_L__
591 0320 DEB7 in r29,__SP_H__
592 /* prologue end (size=15) */
171:UART.c **** UCSRA|=(1<<TXC); //清发送中断标志
594 .LM45:
595 0322 8091 2B00 lds r24,43
596 0326 8064 ori r24,lo8(64)
597 0328 8093 2B00 sts 43,r24
172:UART.c **** if (outbufsign)
599 .LM46:
600 032c 8091 0000 lds r24,bit_flag
601 0330 8695 lsr r24
602 0332 9927 clr r25
603 0334 8170 andi r24,lo8(1)
604 0336 9070 andi r25,hi8(1)
605 0338 0097 sbiw r24,0
606 033a 79F1 breq .L25
173:UART.c **** {
174:UART.c **** UDR=*outlast; //未发送完继续发送
608 .LM47:
609 033c E091 0000 lds r30,outlast
610 0340 F091 0000 lds r31,(outlast)+1
611 0344 8081 ld r24,Z
612 0346 8093 2C00 sts 44,r24
175:UART.c **** outlast++; //最后传出去的字节位置加1
614 .LM48:
615 034a 8091 0000 lds r24,outlast
616 034e 9091 0000 lds r25,(outlast)+1
617 0352 0196 adiw r24,1
618 0354 9093 0000 sts (outlast)+1,r25
619 0358 8093 0000 sts outlast,r24
176:UART.c **** if (outlast==outbuf+OLEN) outlast=outbuf;//地址到顶部回到底部
621 .LM49:
622 035c 8091 0000 lds r24,outlast
623 0360 9091 0000 lds r25,(outlast)+1
624 0364 20E0 ldi r18,hi8(outbuf+12)
625 0366 8030 cpi r24,lo8(outbuf+12)
626 0368 9207 cpc r25,r18
627 036a 31F4 brne .L26
628 036c 80E0 ldi r24,lo8(outbuf)
629 036e 90E0 ldi r25,hi8(outbuf)
630 0370 9093 0000 sts (outlast)+1,r25
631 0374 8093 0000 sts outlast,r24
632 .L26:
177:UART.c **** if (putlast==outlast) outbufsign=0; //数据发送完置发送缓冲区空标志
634 .LM50:
635 0378 2091 0000 lds r18,putlast
636 037c 3091 0000 lds r19,(putlast)+1
637 0380 8091 0000 lds r24,outlast
638 0384 9091 0000 lds r25,(outlast)+1
639 0388 2817 cp r18,r24
640 038a 3907 cpc r19,r25
641 038c 59F4 brne .L24
642 038e 8091 0000 lds r24,bit_flag
643 0392 8D7F andi r24,lo8(-3)
644 0394 8093 0000 sts bit_flag,r24
645 0398 05C0 rjmp .L24
646 .L25:
178:UART.c **** }
179:UART.c **** else
180:UART.c **** {
181:UART.c **** outbufsign0=0;
648 .LM51:
649 039a 8091 0000 lds r24,bit_flag
650 039e 8E7F andi r24,lo8(-2)
651 03a0 8093 0000 sts bit_flag,r24
652 .L24:
653 /* epilogue: frame size=0 */
654 03a4 DF91 pop r29
655 03a6 CF91 pop r28
656 03a8 FF91 pop r31
657 03aa EF91 pop r30
658 03ac 9F91 pop r25
659 03ae 8F91 pop r24
660 03b0 3F91 pop r19
661 03b2 2F91 pop r18
662 03b4 0F90 pop __tmp_reg__
663 03b6 0FBE out __SREG__,__tmp_reg__
664 03b8 0F90 pop __tmp_reg__
665 03ba 1F90 pop __zero_reg__
666 03bc 1895 reti
667 /* epilogue end (size=13) */
668 /* function __vector_13 size 93 (65) */
671 .global __vector_11
673 __vector_11:
182:UART.c **** }
183:UART.c **** }
184:UART.c ****
185:UART.c ****
186:UART.c **** //**********************************************************************
187:UART.c **** //函 数 名: void SerialIncept_handler (void)
188:UART.c **** //功 能: 串口接收中断处理
189:UART.c **** //说 明:
190:UART.c **** //参 数:
191:UART.c **** //返 回 值:
192:UART.c **** //***********************************************************************
193:UART.c ****
194:UART.c **** SIGNAL(SIG_UART_RECV)
195:UART.c **** //void SerialIncept_handler (void)
196:UART.c **** {
675 .LM52:
676 /* prologue: frame size=0 */
677 03be 1F92 push __zero_reg__
678 03c0 0F92 push __tmp_reg__
679 03c2 0FB6 in __tmp_reg__,__SREG__
680 03c4 0F92 push __tmp_reg__
681 03c6 1124 clr __zero_reg__
682 03c8 2F93 push r18
683 03ca 3F93 push r19
684 03cc 8F93 push r24
685 03ce 9F93 push r25
686 03d0 EF93 push r30
687 03d2 FF93 push r31
688 03d4 CF93 push r28
689 03d6 DF93 push r29
690 03d8 CDB7 in r28,__SP_L__
691 03da DEB7 in r29,__SP_H__
692 /* prologue end (size=15) */
197:UART.c **** if(!inbufful) //接收缓冲区未满
694 .LM53:
695 03dc 8091 0000 lds r24,bit_flag
696 03e0 8695 lsr r24
697 03e2 8695 lsr r24
698 03e4 9927 clr r25
699 03e6 8170 andi r24,lo8(1)
700 03e8 9070 andi r25,hi8(1)
701 03ea 0097 sbiw r24,0
702 03ec 89F5 brne .L29
198:UART.c **** {
199:UART.c **** *inlast= UDR; //放入数据
704 .LM54:
705 03ee E091 0000 lds r30,inlast
706 03f2 F091 0000 lds r31,(inlast)+1
707 03f6 8091 2C00 lds r24,44
708 03fa 8083 st Z,r24
200:UART.c **** inlast++; //最后放入的位置加1
710 .LM55:
711 03fc 8091 0000 lds r24,inlast
712 0400 9091 0000 lds r25,(inlast)+1
713 0404 0196 adiw r24,1
714 0406 9093 0000 sts (inlast)+1,r25
715 040a 8093 0000 sts inlast,r24
201:UART.c **** inbufsign=1;
717 .LM56:
718 040e 81E0 ldi r24,lo8(1)
719 0410 8093 0000 sts inbufsign,r24
202:UART.c **** if (inlast==inbuf+ILEN) inlast=inbuf; //地址到顶部回到底部
721 .LM57:
722 0414 8091 0000 lds r24,inlast
723 0418 9091 0000 lds r25,(inlast)+1
724 041c 20E0 ldi r18,hi8(inbuf+12)
725 041e 8030 cpi r24,lo8(inbuf+12)
726 0420 9207 cpc r25,r18
727 0422 31F4 brne .L31
728 0424 80E0 ldi r24,lo8(inbuf)
729 0426 90E0 ldi r25,hi8(inbuf)
730 0428 9093 0000 sts (inlast)+1,r25
731 042c 8093 0000 sts inlast,r24
732 .L31:
203:UART.c **** if (inlast==getlast) inbufful=1; //接收缓冲区满置满标志
734 .LM58:
735 0430 2091 0000 lds r18,inlast
736 0434 3091 0000 lds r19,(inlast)+1
737 0438 8091 0000 lds r24,getlast
738 043c 9091 0000 lds r25,(getlast)+1
739 0440 2817 cp r18,r24
740 0442 3907 cpc r19,r25
741 0444 29F4 brne .L29
742 0446 8091 0000 lds r24,bit_flag
743 044a 8460 ori r24,lo8(4)
744 044c 8093 0000 sts bit_flag,r24
745 .L29:
746 /* epilogue: frame size=0 */
747 0450 DF91 pop r29
748 0452 CF91 pop r28
749 0454 FF91 pop r31
750 0456 EF91 pop r30
751 0458 9F91 pop r25
752 045a 8F91 pop r24
753 045c 3F91 pop r19
754 045e 2F91 pop r18
755 0460 0F90 pop __tmp_reg__
756 0462 0FBE out __SREG__,__tmp_reg__
757 0464 0F90 pop __tmp_reg__
758 0466 1F90 pop __zero_reg__
759 0468 1895 reti
760 /* epilogue end (size=13) */
761 /* function __vector_11 size 86 (58) */
764 .global SerialInit
766 SerialInit:
204:UART.c **** }
205:UART.c **** }
206:UART.c ****
207:UART.c ****
208:UART.c **** /**********************************************************************
209:UART.c **** 函 数 名: void SerialInit (unsigned long)
210:UART.c **** 功 能: 串口初始化
211:UART.c **** 说 明: 串口初始化成指定波特率,开接收,发送并开相应中断
212:UART.c **** 参 数: 需要初始化的波特率
213:UART.c **** 返 回 值: 无
214:UART.c **** 示 范: SerialInit (38400);
215:UART.c **** ***********************************************************************/
216:UART.c **** void SerialInit (void)
217:UART.c **** {
768 .LM59:
769 /* prologue: frame size=0 */
770 046a CF93 push r28
771 046c DF93 push r29
772 046e CDB7 in r28,__SP_L__
773 0470 DEB7 in r29,__SP_H__
774 /* prologue end (size=4) */
218:UART.c ****
219:UART.c **** cli();
776 .LM60:
777 /* #APP */
778 0472 F894 cli
220:UART.c **** UCSRC&=(~(1<<URSEL));
780 .LM61:
781 /* #NOAPP */
782 0474 9FE7 ldi r25,lo8(127)
783 0476 8091 4000 lds r24,64
784 047a 8923 and r24,r25
785 047c 8093 4000 sts 64,r24
221:UART.c **** // UBRRH=(U8)(baud>>8);
222:UART.c **** UBRRH=0x00;
787 .LM62:
788 0480 1092 4000 sts 64,__zero_reg__
223:UART.c **** // UBRRL=(U8)baud;
224:UART.c **** UBRRL=0x5; // 115200 @ 11.0592M
790 .LM63:
791 0484 85E0 ldi r24,lo8(5)
792 0486 8093 2900 sts 41,r24
225:UART.c ****
226:UART.c **** UCSRB=(1<<RXCIE)|(1<<TXCIE)|(1<<RXEN)|(1<<TXEN);
794 .LM64:
795 048a 88ED ldi r24,lo8(-40)
796 048c 8093 2A00 sts 42,r24
227:UART.c **** //接收中断使能,发送中断使能,接收器与发送器使能
228:UART.c **** UCSRC=(1<<URSEL)|(3<<UCSZ0); //设置帧格式: 8 个数据位, 1 个停止位*/
798 .LM65:
799 0490 86E8 ldi r24,lo8(-122)
800 0492 8093 4000 sts 64,r24
229:UART.c **** sei(); //开全局中断
802 .LM66:
803 /* #APP */
804 0496 7894 sei
805 /* #NOAPP */
806 /* epilogue: frame size=0 */
807 0498 DF91 pop r29
808 049a CF91 pop r28
809 049c 0895 ret
810 /* epilogue end (size=3) */
811 /* function SerialInit size 28 (21) */
813 .comm outbuf,12,1
814 .comm inbuf,12,1
815 .comm inbufsign,1,1
816 .comm bit_flag,1,1
826 .text
828 Letext:
829 /* File "UART.c": code 599 = 0x0257 ( 441), prologues 84, epilogues 74 */
DEFINED SYMBOLS
*ABS*:00000000 UART.c
*ABS*:0000003f __SREG__
*ABS*:0000003e __SP_H__
*ABS*:0000003d __SP_L__
*ABS*:00000000 __tmp_reg__
*ABS*:00000001 __zero_reg__
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:58 .data:00000000 outlast
*COM*:0000000c outbuf
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:63 .data:00000002 putlast
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:68 .data:00000004 inlast
*COM*:0000000c inbuf
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:73 .data:00000006 getlast
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:80 .text:00000000 PutByte
*COM*:00000001 bit_flag
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:268 .text:00000160 PutString
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:326 .text:000001aa PutBytes
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:399 .data:00000008 hex_
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:406 .text:0000020a PutHEX
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:475 .text:0000026e GetByte
*COM*:00000001 inbufsign
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:573 .text:00000304 __vector_13
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:673 .text:000003be __vector_11
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:766 .text:0000046a SerialInit
C:\DOCUME~1\Guobg\LOCALS~1\Temp/ccEZaaaa.s:828 .text:0000049e Letext
UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -