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

📄 uart1.lst

📁 avr usart sample (interrupt)
💻 LST
📖 第 1 页 / 共 2 页
字号:
   1               		.file	"uart1.c"
   2               		.arch attiny2313
   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:
  83               	.global	__vector_9
  85               	__vector_9:
   1:uart1.c       **** #include <avr/io.h>
   2:uart1.c       **** #include <avr/interrupt.h>
   3:uart1.c       **** #include <stdlib.h>
   4:uart1.c       **** #include <string.h>
   5:uart1.c       **** 
   6:uart1.c       **** #define UART_BAUD_RATE 19200
   7:uart1.c       **** #define UART_BAUD_SELECT (((((F_CPU+(UART_BAUD_RATE/2))/UART_BAUD_RATE)+8)/16)-1)
   8:uart1.c       **** 
   9:uart1.c       **** #ifdef _AVR_IOTN2313_H_
  10:uart1.c       **** #define UART_TX_vect USART_TX_vect
  11:uart1.c       **** #define UART_RX_vect USART_RX_vect
  12:uart1.c       **** #define UCR UCSRB
  13:uart1.c       **** #define UBRR UBRRL
  14:uart1.c       **** #endif //attiny2313
  15:uart1.c       **** 
  16:uart1.c       **** uint8_t *uart_data_ptr;
  17:uart1.c       **** uint8_t uart_counter;
  18:uart1.c       **** uint8_t led;
  19:uart1.c       **** static volatile uint8_t flag;
  20:uart1.c       **** 
  21:uart1.c       **** ISR(UART_TX_vect)
  22:uart1.c       **** {
  87               	.LM1:
  88               	/* prologue: frame size=0 */
  89 0000 1F92      		push __zero_reg__
  90 0002 0F92      		push __tmp_reg__
  91 0004 0FB6      		in __tmp_reg__,__SREG__
  92 0006 0F92      		push __tmp_reg__
  93 0008 1124      		clr __zero_reg__
  94 000a 8F93      		push r24
  95 000c EF93      		push r30
  96 000e FF93      		push r31
  97               	/* prologue end (size=8) */
  23:uart1.c       **** 	uart_data_ptr++;
  99               	.LM2:
 100 0010 E091 0000 		lds r30,uart_data_ptr
 101 0014 F091 0000 		lds r31,(uart_data_ptr)+1
 102 0018 3196      		adiw r30,1
 103 001a F093 0000 		sts (uart_data_ptr)+1,r31
 104 001e E093 0000 		sts uart_data_ptr,r30
 105 0022 3197      		sbiw r30,1
  24:uart1.c       **** 
  25:uart1.c       **** 	if(--uart_counter)
 107               	.LM3:
 108 0024 8091 0000 		lds r24,uart_counter
 109 0028 8150      		subi r24,lo8(-(-1))
 110 002a 8093 0000 		sts uart_counter,r24
 111 002e 8823      		tst r24
 112 0030 11F0      		breq .L1
  26:uart1.c       **** 		UDR = *uart_data_ptr;
 114               	.LM4:
 115 0032 8181      		ldd r24,Z+1
 116 0034 8CB9      		out 44-0x20,r24
 117               	.L1:
 118               	/* epilogue: frame size=0 */
 119 0036 FF91      		pop r31
 120 0038 EF91      		pop r30
 121 003a 8F91      		pop r24
 122 003c 0F90      		pop __tmp_reg__
 123 003e 0FBE      		out __SREG__,__tmp_reg__
 124 0040 0F90      		pop __tmp_reg__
 125 0042 1F90      		pop __zero_reg__
 126 0044 1895      		reti
 127               	/* epilogue end (size=8) */
 128               	/* function __vector_9 size 35 (19) */
 130               	.Lscope0:
 132               	.global	__vector_7
 134               	__vector_7:
  27:uart1.c       **** }
  28:uart1.c       **** 
  29:uart1.c       **** ISR(UART_RX_vect)
  30:uart1.c       **** {
 136               	.LM5:
 137               	/* prologue: frame size=0 */
 138 0046 1F92      		push __zero_reg__
 139 0048 0F92      		push __tmp_reg__
 140 004a 0FB6      		in __tmp_reg__,__SREG__
 141 004c 0F92      		push __tmp_reg__
 142 004e 1124      		clr __zero_reg__
 143 0050 8F93      		push r24
 144               	/* prologue end (size=6) */
  31:uart1.c       **** 	led = UDR;
 146               	.LM6:
 147 0052 8CB1      		in r24,44-0x20
 148 0054 8093 0000 		sts led,r24
  32:uart1.c       **** 	PORTB = ~led;
 150               	.LM7:
 151 0058 8095      		com r24
 152 005a 88BB      		out 56-0x20,r24
  33:uart1.c       **** 	flag = 1;
 154               	.LM8:
 155 005c 81E0      		ldi r24,lo8(1)
 156 005e 8093 0000 		sts flag,r24
 157               	/* epilogue: frame size=0 */
 158 0062 8F91      		pop r24
 159 0064 0F90      		pop __tmp_reg__
 160 0066 0FBE      		out __SREG__,__tmp_reg__
 161 0068 0F90      		pop __tmp_reg__
 162 006a 1F90      		pop __zero_reg__
 163 006c 1895      		reti
 164               	/* epilogue end (size=6) */
 165               	/* function __vector_7 size 20 (8) */
 167               	.Lscope1:
 171               	.global	uart_send
 173               	uart_send:
  34:uart1.c       **** }
  35:uart1.c       **** 
  36:uart1.c       **** 
  37:uart1.c       **** void uart_send(uint8_t* buff, uint8_t size)
  38:uart1.c       **** {
 175               	.LM9:
 176               	/* prologue: frame size=0 */
 177               	/* prologue end (size=0) */
 178 006e F92F      		mov r31,r25
 179 0070 E82F      		mov r30,r24
  39:uart1.c       **** 	if(!uart_counter) {
 181               	.LM10:
 182 0072 8091 0000 		lds r24,uart_counter
 183 0076 8823      		tst r24
 184 0078 41F4      		brne .L5
  40:uart1.c       **** 		uart_data_ptr = buff;
 186               	.LM11:
 187 007a F093 0000 		sts (uart_data_ptr)+1,r31
 188 007e E093 0000 		sts uart_data_ptr,r30
  41:uart1.c       **** 		uart_counter = size;
 190               	.LM12:
 191 0082 6093 0000 		sts uart_counter,r22
  42:uart1.c       **** 		UDR = *buff;
 193               	.LM13:
 194 0086 8081      		ld r24,Z
 195 0088 8CB9      		out 44-0x20,r24
 196               	.L5:
 197 008a 0895      		ret
 198               	/* epilogue: frame size=0 */
 199               	/* epilogue: noreturn */
 200               	/* epilogue end (size=0) */
 201               	/* function uart_send size 15 (15) */
 203               	.Lscope2:
 205               	.global	uart_init
 207               	uart_init:
  43:uart1.c       **** 	}
  44:uart1.c       **** }
  45:uart1.c       **** 
  46:uart1.c       **** 
  47:uart1.c       **** void uart_init(void)
  48:uart1.c       **** {
 209               	.LM14:
 210               	/* prologue: frame size=0 */
 211               	/* prologue end (size=0) */
  49:uart1.c       **** 	UCR = _BV(RXCIE) | _BV(TXCIE) | _BV(RXEN) | _BV(TXEN);
 213               	.LM15:
 214 008c 88ED      		ldi r24,lo8(-40)
 215 008e 8AB9      		out 42-0x20,r24
  50:uart1.c       **** #ifdef _AVR_IOTN2313_H_
  51:uart1.c       **** 	UBRRH  = (uint8_t)(UART_BAUD_SELECT >> 8);
 217               	.LM16:
 218 0090 12B8      		out 34-0x20,__zero_reg__
  52:uart1.c       **** #endif //attiny2313
  53:uart1.c       **** 	UBRR = (uint8_t)UART_BAUD_SELECT;
 220               	.LM17:
 221 0092 8CE0      		ldi r24,lo8(12)
 222 0094 89B9      		out 41-0x20,r24
 223               	/* epilogue: frame size=0 */
 224 0096 0895      		ret
 225               	/* epilogue end (size=1) */
 226               	/* function uart_init size 6 (5) */
 228               	.Lscope3:
 232               	.global	int2str
 234               	int2str:
  54:uart1.c       **** }
  55:uart1.c       **** 
  56:uart1.c       **** char* int2str(uint8_t num, char* str_val)
  57:uart1.c       **** {
 236               	.LM18:
 237               	/* prologue: frame size=0 */
 238               	/* prologue end (size=0) */
 239 0098 B72F      		mov r27,r23
 240 009a A62F      		mov r26,r22
  58:uart1.c       **** 	uint8_t i;
  59:uart1.c       **** 	uint8_t hi = num >> 4;
 242               	.LM19:
 243 009c 282F      		mov r18,r24
 244 009e 2295      		swap r18
 245 00a0 2F70      		andi r18,0x0f
  60:uart1.c       **** 	str_val[0] = '0';
 247               	.LM20:
 248 00a2 90E3      		ldi r25,lo8(48)
 249 00a4 9C93      		st X,r25
  61:uart1.c       **** 	str_val[1] = 'x';
 251               	.LM21:
 252 00a6 98E7      		ldi r25,lo8(120)
 253 00a8 F72F      		mov r31,r23
 254 00aa E62F      		mov r30,r22
 255 00ac 9183      		std Z+1,r25
  62:uart1.c       **** 	str_val[4] = 0;
 257               	.LM22:
 258 00ae 1482      		std Z+4,__zero_reg__
 259 00b0 8F70      		andi r24,lo8(15)
 260 00b2 3296      		adiw r30,2
 261 00b4 91E0      		ldi r25,lo8(1)
 262               	.L14:
  63:uart1.c       **** 	for(i=2; i<4; i++) {
  64:uart1.c       **** 		if(hi > 9) str_val[i] = hi + 55;

⌨️ 快捷键说明

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