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

📄 uart.lst

📁 串口转发IIC程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -