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

📄 uart.lst

📁 基于AVRGCC的时钟DS1302的完整应用源代码
💻 LST
字号:
   1               		.file	"uart.c"
   2               		.arch atmega162
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  59               	.global	__vector_23
  61               	__vector_23:
   1:uart.c        **** #include <stdio.h>
   2:uart.c        **** #include <avr/io.h>
   3:uart.c        **** #include <avr/interrupt.h>
   4:uart.c        **** #include <avr/signal.h>
   5:uart.c        **** #include "uart.h"
   6:uart.c        **** 
   7:uart.c        **** 
   8:uart.c        **** // USART0 Transmitter interrupt service routine
   9:uart.c        **** SIGNAL(SIG_USART0_TRANS)
  10:uart.c        **** {
  63               	.LM1:
  64               	/* prologue: frame size=0 */
  65 0000 1F92      		push __zero_reg__
  66 0002 0F92      		push __tmp_reg__
  67 0004 0FB6      		in __tmp_reg__,__SREG__
  68 0006 0F92      		push __tmp_reg__
  69 0008 1124      		clr __zero_reg__
  70 000a 8F93      		push r24
  71 000c 9F93      		push r25
  72 000e EF93      		push r30
  73 0010 FF93      		push r31
  74               	/* prologue end (size=9) */
  11:uart.c        **** 	if (UART0.counter)
  76               	.LM2:
  77 0012 8091 0000 		lds r24,UART0+102
  78 0016 8823      		tst r24
  79 0018 99F0      		breq .L1
  12:uart.c        **** 	{
  13:uart.c        **** 		--UART0.counter;
  81               	.LM3:
  82 001a 8150      		subi r24,lo8(-(-1))
  83 001c 8093 0000 		sts UART0+102,r24
  14:uart.c        **** 		UDR0 = UART0.buffer[UART0.rd];
  85               	.LM4:
  86 0020 9091 0000 		lds r25,UART0+101
  87 0024 E92F      		mov r30,r25
  88 0026 FF27      		clr r31
  89 0028 E050      		subi r30,lo8(-(UART0))
  90 002a F040      		sbci r31,hi8(-(UART0))
  91 002c 8081      		ld r24,Z
  92 002e 8CB9      		out 44-0x20,r24
  15:uart.c        **** 		if (++UART0.rd == TX_BUFFER_SIZE0) UART0.rd = 0;
  94               	.LM5:
  95 0030 892F      		mov r24,r25
  96 0032 8F5F      		subi r24,lo8(-(1))
  97 0034 8093 0000 		sts UART0+101,r24
  98 0038 8436      		cpi r24,lo8(100)
  99 003a 11F4      		brne .L1
 100 003c 1092 0000 		sts UART0+101,__zero_reg__
 101               	.L1:
 102               	/* epilogue: frame size=0 */
 103 0040 FF91      		pop r31
 104 0042 EF91      		pop r30
 105 0044 9F91      		pop r25
 106 0046 8F91      		pop r24
 107 0048 0F90      		pop __tmp_reg__
 108 004a 0FBE      		out __SREG__,__tmp_reg__
 109 004c 0F90      		pop __tmp_reg__
 110 004e 1F90      		pop __zero_reg__
 111 0050 1895      		reti
 112               	/* epilogue end (size=9) */
 113               	/* function __vector_23 size 41 (23) */
 117               	.global	uart_putchar
 119               	uart_putchar:
  16:uart.c        **** 	}
  17:uart.c        **** }
  18:uart.c        **** 
  19:uart.c        **** int uart_putchar(char c)
  20:uart.c        **** {
 121               	.LM6:
 122               	/* prologue: frame size=0 */
 123               	/* prologue end (size=0) */
 124 0052 282F      		mov r18,r24
 125 0054 9091 0000 		lds r25,UART0+102
 126               	.L5:
  21:uart.c        **** 	while (UART0.counter == TX_BUFFER_SIZE0);
 128               	.LM7:
 129 0058 9436      		cpi r25,lo8(100)
 130 005a F1F3      		breq .L5
  22:uart.c        **** 	cli();
 132               	.LM8:
 133               	/* #APP */
 134 005c F894      		cli
  23:uart.c        **** 	if (UART0.counter || bit_is_clear(UCSR0A, UDRE0))
 136               	.LM9:
 137               	/* #NOAPP */
 138 005e 9923      		tst r25
 139 0060 11F4      		brne .L9
 140 0062 5D99      		sbic 43-0x20,5
 141 0064 12C0      		rjmp .L8
 142               	.L9:
  24:uart.c        **** 	{
  25:uart.c        **** 		UART0.buffer[UART0.wr] = c;
 144               	.LM10:
 145 0066 8091 0000 		lds r24,UART0+100
 146 006a E82F      		mov r30,r24
 147 006c FF27      		clr r31
 148 006e E050      		subi r30,lo8(-(UART0))
 149 0070 F040      		sbci r31,hi8(-(UART0))
 150 0072 2083      		st Z,r18
  26:uart.c        **** 		if (++UART0.wr == TX_BUFFER_SIZE0) UART0.wr = 0;
 152               	.LM11:
 153 0074 8F5F      		subi r24,lo8(-(1))
 154 0076 8093 0000 		sts UART0+100,r24
 155 007a 8436      		cpi r24,lo8(100)
 156 007c 11F4      		brne .L10
 157 007e 1092 0000 		sts UART0+100,__zero_reg__
 158               	.L10:
  27:uart.c        **** 		++UART0.counter;
 160               	.LM12:
 161 0082 9F5F      		subi r25,lo8(-(1))
 162 0084 9093 0000 		sts UART0+102,r25
 163 0088 01C0      		rjmp .L11
 164               	.L8:
  28:uart.c        **** 	}
  29:uart.c        **** 	else
  30:uart.c        **** 	{
  31:uart.c        **** 		UDR0 = c;
 166               	.LM13:
 167 008a 2CB9      		out 44-0x20,r18
 168               	.L11:
  32:uart.c        **** 	}
  33:uart.c        **** 	sei();
 170               	.LM14:
 171               	/* #APP */
 172 008c 7894      		sei
  34:uart.c        **** 	return 0;
  35:uart.c        **** }
 174               	.LM15:
 175               	/* #NOAPP */
 176 008e 80E0      		ldi r24,lo8(0)
 177 0090 90E0      		ldi r25,hi8(0)
 178               	/* epilogue: frame size=0 */
 179 0092 0895      		ret
 180               	/* epilogue end (size=1) */
 181               	/* function uart_putchar size 35 (34) */
 184               	.global	InitIO
 186               	InitIO:
  36:uart.c        **** 
  37:uart.c        **** void InitIO(void)
  38:uart.c        **** {
 188               	.LM16:
 189               	/* prologue: frame size=0 */
 190               	/* prologue end (size=0) */
  39:uart.c        **** 	UART0.rd = 0;
 192               	.LM17:
 193 0094 1092 0000 		sts UART0+101,__zero_reg__
  40:uart.c        **** 	UART0.wr = 0;
 195               	.LM18:
 196 0098 1092 0000 		sts UART0+100,__zero_reg__
  41:uart.c        **** 	UART0.counter = 0;
 198               	.LM19:
 199 009c 1092 0000 		sts UART0+102,__zero_reg__
  42:uart.c        **** 	
  43:uart.c        **** 	// USART0 initialization
  44:uart.c        **** 	// Communication Parameters: 8 Data, 1 Stop, No Parity
  45:uart.c        **** 	// USART0 Receiver: Off
  46:uart.c        **** 	// USART0 Transmitter: On
  47:uart.c        **** 	// USART0 Mode: Asynchronous
  48:uart.c        **** 	// USART0 Baud rate: 19200
  49:uart.c        **** 	UCSR0A = 0x00;
 201               	.LM20:
 202 00a0 1BB8      		out 43-0x20,__zero_reg__
  50:uart.c        **** 	UCSR0B = 0x48;
 204               	.LM21:
 205 00a2 88E4      		ldi r24,lo8(72)
 206 00a4 8AB9      		out 42-0x20,r24
  51:uart.c        **** 	UCSR0C = 0x86;
 208               	.LM22:
 209 00a6 86E8      		ldi r24,lo8(-122)
 210 00a8 80BD      		out 64-0x20,r24
  52:uart.c        **** 	UBRR0H = 0x00;
 212               	.LM23:
 213 00aa 10BC      		out 64-0x20,__zero_reg__
  53:uart.c        **** 	UBRR0L = 0x17;
 215               	.LM24:
 216 00ac 87E1      		ldi r24,lo8(23)
 217 00ae 89B9      		out 41-0x20,r24
  54:uart.c        **** 	
  55:uart.c        **** 	fdevopen(uart_putchar, 0, 0);
 219               	.LM25:
 220 00b0 40E0      		ldi r20,lo8(0)
 221 00b2 50E0      		ldi r21,hi8(0)
 222 00b4 BA01      		movw r22,r20
 223 00b6 80E0      		ldi r24,lo8(pm(uart_putchar))
 224 00b8 90E0      		ldi r25,hi8(pm(uart_putchar))
 225 00ba 0E94 0000 		call fdevopen
 226               	/* epilogue: frame size=0 */
 227 00be 0895      		ret
 228               	/* epilogue end (size=1) */
 229               	/* function InitIO size 22 (21) */
 231               		.comm UART0,103,1
 233               		.text
 235               	Letext:
 236               	/* File "uart.c": code   98 = 0x0062 (  78), prologues   9, epilogues  11 */
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\ZHOUNA~1\LOCALS~1\Temp/ccewaaaa.s:61     .text:00000000 __vector_23
                            *COM*:00000067 UART0
C:\DOCUME~1\ZHOUNA~1\LOCALS~1\Temp/ccewaaaa.s:119    .text:00000052 uart_putchar
C:\DOCUME~1\ZHOUNA~1\LOCALS~1\Temp/ccewaaaa.s:186    .text:00000094 InitIO
C:\DOCUME~1\ZHOUNA~1\LOCALS~1\Temp/ccewaaaa.s:235    .text:000000c0 Letext

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss
fdevopen

⌨️ 快捷键说明

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