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

📄 uart.lst

📁 利用avr c编程的综合程序
💻 LST
字号:
   1               		.file	"uart.c"
   2               	__SREG__ = 0x3f
   3               	__SP_H__ = 0x3e
   4               	__SP_L__ = 0x3d
   5               	__CCP__  = 0x34
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  11               		.text
  12               	.Ltext0:
  73               	.global	__vector_11
  75               	__vector_11:
   1:uart.c        **** #include "uart.h"
   2:uart.c        **** 
   3:uart.c        **** volatile unsigned char rx_buffer[RX_BUFFER_SIZE];
   4:uart.c        **** 
   5:uart.c        **** volatile unsigned char rx_wr_index, rx_rd_index, rx_counter;
   6:uart.c        **** 
   7:uart.c        **** volatile unsigned char rx_buffer_overflow = 0;
   8:uart.c        **** 
   9:uart.c        **** ISR (USART_RXC_vect)
  10:uart.c        **** {
  76               	0,__SREG__
  77               		push r0
  78               		clr __zero_reg__
  79 0000 1F92      		push r24
  80 0002 0F92      		push r25
  81 0004 0FB6      		push r30
  82 0006 0F92      		push r31
  83 0008 1124      	/* prologue: Signal */
  84 000a 8F93      	/* frame size = 0 */
  86 000e EF93      	.LM1:
  87 0010 FF93      		in r24,43-32
  89               	.LM2:
  11:uart.c        **** 	unsigned char status,data;
  12:uart.c        **** 	status = UCSRA;
  91               	.LM3:
  92 0012 8BB1      		andi r24,lo8(28)
  13:uart.c        **** 	data = UDR;
  93               	ne .L4
  95 0014 9CB1      	.LM4:
  14:uart.c        **** 	if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
  96               	s r30,rx_wr_index
  97               		ldi r31,lo8(0)
  98 0016 8C71      		subi r30,lo8(-(rx_buffer))
  99 0018 01F4      		sbci r31,hi8(-(rx_buffer))
  15:uart.c        **** 	{
  16:uart.c        **** 		rx_buffer[rx_wr_index] = data;
 100               	Z,r25
 102 001a E091 0000 	.LM5:
 103 001e F0E0      		lds r24,rx_wr_index
 104 0020 E050      		subi r24,lo8(-(1))
 105 0022 F040      		sts rx_wr_index,r24
 106 0024 9083      		lds r24,rx_wr_index
  17:uart.c        **** 		if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index = 0;
 107               	4,lo8(8)
 108               		brne .L3
 109 0026 8091 0000 		sts rx_wr_index,__zero_reg__
 110 002a 8F5F      	.L3:
 112 0030 8091 0000 	.LM6:
 113 0034 8830      		lds r24,rx_counter
 114 0036 01F4      		subi r24,lo8(-(1))
 115 0038 1092 0000 		sts rx_counter,r24
 116               		lds r24,rx_counter
  18:uart.c        **** 		if (++rx_counter == RX_BUFFER_SIZE)
 117               	o8(8)
 118               		brne .L4
 120 0040 8F5F      	.LM7:
 121 0042 8093 0000 		sts rx_counter,__zero_reg__
 123 004a 8830      	.LM8:
 124 004c 01F4      		ldi r24,lo8(1)
  19:uart.c        **** 		{
  20:uart.c        **** 			rx_counter = 0;
 125               	_counter
 126               		subi r24,lo8(-(1))
 127 004e 1092 0000 		sts rx_counter,r24
  21:uart.c        **** 			rx_buffer_overflow = 1;
 128               	s r24,rx_counter
 129               		cpi r24,lo8(8)
 130 0052 81E0      		brne .L4
 132               	.LM7:
 133               		sts rx_counter,__zero_reg__
  22:uart.c        **** 		}
  23:uart.c        **** 	}
  24:uart.c        **** }
 134               	__
 135               	.L3:
 137 005a EF91      	.LM6:
 138 005c 9F91      		lds r24,rx_counter
 139 005e 8F91      		subi r24,lo8(-(1))
 140 0060 0F90      		sts rx_counter,r24
 141 0062 0FBE      		lds r24,rx_counter
 142 0064 0F90      		cpi r24,lo8(8)
 143 0066 1F90      		brne .L4
 145               	.LM7:
 146               		sts rx_counter,__zero_reg__
 148               	.LM8:
 149               		ldi r24,lo8(1)
 150               		sts rx_buffer_overflow,r24
 151               	.L4:
 152               	/* epilogue start */
 154               	.LM9:
  25:uart.c        **** 
  26:uart.c        **** unsigned char uartGetc(void)
  27:uart.c        **** {	
 155               	p r25
 156               		pop r24
 157               		pop r0
 158               		out __SREG__,r0
 159               		pop r0
 160               		pop __zero_reg__
  28:uart.c        **** 	unsigned char data;
  29:uart.c        **** 	while(rx_counter == 0);
 161               	M8:
 162               		ldi r24,lo8(1)
 163 006a 8091 0000 		sts rx_buffer_overflow,r24
 164 006e 8823      	.L4:
 165 0070 01F0      	/* epilogue start */
  30:uart.c        **** 	
  31:uart.c        **** 	data=rx_buffer[rx_rd_index];
 166               	,rx_counter
 167               		cpi r24,lo8(8)
 168 0072 E091 0000 		brne .L4
 170 0078 E050      	.LM7:
 171 007a F040      		sts rx_counter,__zero_reg__
  32:uart.c        **** 	if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
 173               	.LFBB1
 174               	.LM6:
 175 007e 8091 0000 		lds r24,rx_counter
 176 0082 8F5F      		subi r24,lo8(-(1))
 177 0084 8093 0000 		sts rx_counter,r24
 178 0088 8091 0000 		lds r24,rx_counter
 179 008c 8830      		cpi r24,lo8(8)
 180 008e 01F4      		brne .L4
 182               	.LM7:
  33:uart.c        **** 	cli();
 183               	unter,__zero_reg__
 185               	.LM8:
 186               		ldi r24,lo8(1)
 187 0094 F894      		sts rx_buffer_overflow,r24
 188               	.L4:
  34:uart.c        **** 	if(rx_counter)
 189               	x_counter,r24
 190               		lds r24,rx_counter
 191               		cpi r24,lo8(8)
 192 0096 8091 0000 		brne .L4
 194 009c 01F0      	.LM7:
  35:uart.c        **** 		--rx_counter;
 195               	L3
 196               		sts rx_wr_index,__zero_reg__
 197 009e 8091 0000 	.L3:
 199 00a4 8093 0000 	.LM6:
 200               		lds r24,rx_counter
  36:uart.c        **** 	sei();
 201               	r24,lo8(-(1))
 202               		sts rx_counter,r24
 203               		lds r24,rx_counter
 204               		cpi r24,lo8(8)
 205 00a8 7894      		brne .L4
  37:uart.c        **** 	return data;
  38:uart.c        **** }
 207               		sts rx_counter,__zero_reg__
 209               	.LM8:
 210 00aa 8E2F      		ldi r24,lo8(1)
 211               		sts rx_buffer_overflow,r24
 212 00ac 0895      	.L4:
 213               	/* epilogue start */
 215               	.LM9:
 216               		pop r31
 217               		pop r30
 218               		pop r25
 219               		pop r24
 220               		pop r0
 221               		out __SREG__,r0
  39:uart.c        **** 
  40:uart.c        **** void uartOpen(void)
  41:uart.c        **** {
 222               	stabn	68,0,21,.LM8-.LFBB1
 223               	.LM8:
 224               		ldi r24,lo8(1)
 225               		sts rx_buffer_overflow,r24
 226               	.L4:
  42:uart.c        **** 	UCSRB = 0x98;
 227               	x_counter,r24
 228               		lds r24,rx_counter
 229 00ae 88E9      		cpi r24,lo8(8)
 230 00b0 8AB9      		brne .L4
  43:uart.c        **** }
 232               		brne .L3
 233               		sts rx_wr_index,__zero_reg__
 234 00b2 0895      	.L3:
 236               	.LM6:
 237               		lds r24,rx_counter
 238               		subi r24,lo8(-(1))
 239               		sts rx_counter,r24
 240               		lds r24,rx_counter
  44:uart.c        **** 
  45:uart.c        **** void uartClose(void)
  46:uart.c        **** {
 241               	lo8(8)
 242               		brne .L4
 244               	.LM7:
 245               		sts rx_counter,__zero_reg__
  47:uart.c        **** 	UCSRB &= 0x00;
 246               	__
 247               	.L3:
 249 00b6 1AB8      	.LM6:
 250               		lds r24,rx_counter
  48:uart.c        **** }
 251               	 r24,lo8(-(1))
 252               		sts rx_counter,r24
 253 00b8 0895      		lds r24,rx_counter
 254               		cpi r24,lo8(8)
 255               		brne .L4
 257               	.LM7:
 258               		sts rx_counter,__zero_reg__
 260               	.LM8:
  49:uart.c        **** 
  50:uart.c        **** void uartPutc(unsigned char c)
  51:uart.c        **** {
 261               	o8(1)
 262               		sts rx_buffer_overflow,r24
 263               	.L4:
 264               	/* epilogue start */
 266               	.LM9:
  52:uart.c        **** 	while ( !( UCSRA & DATA_REGISTER_EMPTY) )
 267               	4
 269 00ba 5D9B      	.LM7:
 270 00bc 00C0      		sts rx_counter,__zero_reg__
  53:uart.c        **** 	;
  54:uart.c        **** 	UDR = c;
 271               	__
 272               	.L3:
 274               	.LM6:
  55:uart.c        **** }
 275               	 r24,rx_counter
 276               		subi r24,lo8(-(1))
 277 00c0 0895      		sts rx_counter,r24
 278               		lds r24,rx_counter
 279               		cpi r24,lo8(8)
 280               		brne .L4
 282               	.LM7:
 283               		sts rx_counter,__zero_reg__
  56:uart.c        **** 
  57:uart.c        **** void uartInit(void)
  58:uart.c        **** {
 284               	8,0,21,.LM8-.LFBB1
 285               	.LM8:
 286               		ldi r24,lo8(1)
 287               		sts rx_buffer_overflow,r24
 288               	.L4:
  59:uart.c        ****    // USART initialization
  60:uart.c        ****    // Communication Parameters: 8 Data, 1 Stop, Odd Parity
  61:uart.c        ****    // USART Receiver: On
  62:uart.c        ****    // USART Transmitter: On
  63:uart.c        ****    // USART Mode: Asynchronous
  64:uart.c        ****    // USART Baud rate: 38400
  65:uart.c        ****    UCSRA=0x00;
 289               	x_counter,r24
 290               		lds r24,rx_counter
 291 00c2 1BB8      		cpi r24,lo8(8)
  66:uart.c        ****    UCSRB=0x98;
 292               	24
 293               		lds r24,rx_wr_index
 294 00c4 88E9      		cpi r24,lo8(8)
 295 00c6 8AB9      		brne .L3
  67:uart.c        ****    UCSRC=0xB6;
 296               	 rx_wr_index,__zero_reg__
 297               	.L3:
 299 00ca 80BD      	.LM6:
  68:uart.c        ****    UBRRH=0x00;
 300               	 r24,rx_counter
 301               		subi r24,lo8(-(1))
 302 00cc 10BC      		sts rx_counter,r24
  69:uart.c        ****    UBRRL=0x19;
 303               	s r24,rx_counter
 304               		cpi r24,lo8(8)
 305 00ce 89E1      		brne .L4
  70:uart.c        **** 
  71:uart.c        ****    sei();
 307               		brne .L3
 308               		sts rx_wr_index,__zero_reg__
 309               	.L3:
 311 00d2 7894      	.LM6:
 312               		lds r24,rx_counter
 313               		subi r24,lo8(-(1))
  72:uart.c        **** }
 314               	_counter,r24
 315               		lds r24,rx_counter
 316               		cpi r24,lo8(8)
 317 00d4 0895      		brne .L4
 319               	.LM7:
 320               		sts rx_counter,__zero_reg__
 322               	.LM8:
 323               		ldi r24,lo8(1)
 324               		sts rx_buffer_overflow,r24
 325               	.L4:
 326 0000 00        	/* epilogue start */
 328               	.LM9:
 329               		pop r31
 330               		pop r30
 331               		pop r25
 332               		pop r24
 333               		pop r0
 334               		out __SREG__,r0
 335               		pop r0
 336               		pop __zero_reg__
 337               		reti
DEFINED SYMBOLS
                            *ABS*:00000000 uart.c
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:2      *ABS*:0000003f __SREG__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:3      *ABS*:0000003e __SP_H__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:4      *ABS*:0000003d __SP_L__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:5      *ABS*:00000034 __CCP__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:6      *ABS*:00000000 __tmp_reg__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:7      *ABS*:00000001 __zero_reg__
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:75     .text:00000000 __vector_11
                            *COM*:00000001 rx_wr_index
                            *COM*:00000008 rx_buffer
                            *COM*:00000001 rx_counter
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:325    .bss:00000000 rx_buffer_overflow
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:154    .text:0000006a uartGetc
                            *COM*:00000001 rx_rd_index
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:221    .text:000000ae uartOpen
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:240    .text:000000b4 uartClose
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:260    .text:000000ba uartPutc
C:\DOCUME~1\wht\LOCALS~1\Temp/cc4r5XqQ.s:283    .text:000000c2 uartInit

UNDEFINED SYMBOLS
__do_copy_data
__do_clear_bss

⌨️ 快捷键说明

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