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

📄 uart.lss

📁 在winavr环境下编译的串口程序,是AVR 16单片机的
💻 LSS
字号:

uart.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000196  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  00000196  0000022a  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000004  00800060  00800060  0000022a  2**0
                  ALLOC
  3 .noinit       00000000  00800064  00800064  0000022a  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  0000022a  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  0000022c  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00000598  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  0000061c  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 0000009d  00000000  00000000  00000630  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000190  00000000  00000000  000006cd  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 000000ba  00000000  00000000  0000085d  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000001e8  00000000  00000000  00000917  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    000000af  00000000  00000000  00000aff  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54 <__ctors_end>
   4:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
   8:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
   c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  10:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  14:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  18:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  1c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  20:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  24:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  28:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  2c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  30:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  34:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  38:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  3c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  40:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  44:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  48:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  4c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  50:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>

00000054 <__ctors_end>:
  54:	11 24       	eor	r1, r1
  56:	1f be       	out	0x3f, r1	; 63
  58:	cf e5       	ldi	r28, 0x5F	; 95
  5a:	d4 e0       	ldi	r29, 0x04	; 4
  5c:	de bf       	out	0x3e, r29	; 62
  5e:	cd bf       	out	0x3d, r28	; 61

00000060 <__do_copy_data>:
  60:	10 e0       	ldi	r17, 0x00	; 0
  62:	a0 e6       	ldi	r26, 0x60	; 96
  64:	b0 e0       	ldi	r27, 0x00	; 0
  66:	e6 e9       	ldi	r30, 0x96	; 150
  68:	f1 e0       	ldi	r31, 0x01	; 1
  6a:	02 c0       	rjmp	.+4      	; 0x70 <.do_copy_data_start>

0000006c <.do_copy_data_loop>:
  6c:	05 90       	lpm	r0, Z+
  6e:	0d 92       	st	X+, r0

00000070 <.do_copy_data_start>:
  70:	a0 36       	cpi	r26, 0x60	; 96
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c <.do_copy_data_loop>

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	a0 e6       	ldi	r26, 0x60	; 96
  7a:	b0 e0       	ldi	r27, 0x00	; 0
  7c:	01 c0       	rjmp	.+2      	; 0x80 <.do_clear_bss_start>

0000007e <.do_clear_bss_loop>:
  7e:	1d 92       	st	X+, r1

00000080 <.do_clear_bss_start>:
  80:	a4 36       	cpi	r26, 0x64	; 100
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 af 00 	jmp	0x15e <main>

0000008a <__bad_interrupt>:
  8a:	0c 94 00 00 	jmp	0x0 <__vectors>

0000008e <delay>:
///////////////////////////////////
void delay(void)
{
    unsigned int i,j;
	for(i=0;i<40000;i++)
  8e:	80 e0       	ldi	r24, 0x00	; 0
  90:	90 e0       	ldi	r25, 0x00	; 0
  92:	01 96       	adiw	r24, 0x01	; 1
  94:	2c e9       	ldi	r18, 0x9C	; 156
  96:	80 34       	cpi	r24, 0x40	; 64
  98:	92 07       	cpc	r25, r18
  9a:	d8 f3       	brcs	.-10     	; 0x92 <delay+0x4>
  9c:	08 95       	ret

0000009e <port_Init>:
	   for(j=0;j<1;j++)
	      ;
}
///////////////////////////////////

//端口初始化
void port_Init(void)
{
DDRA=0xff;//A口做输出口
  9e:	8f ef       	ldi	r24, 0xFF	; 255
  a0:	8a bb       	out	0x1a, r24	; 26
PORTA=0x00;//
  a2:	1b ba       	out	0x1b, r1	; 27
DDRB=0xff; //B口做输出口
  a4:	87 bb       	out	0x17, r24	; 23
PORTB=0X00;//
  a6:	18 ba       	out	0x18, r1	; 24
DDRC=0xff;//C口作输出口
  a8:	84 bb       	out	0x14, r24	; 20
PORTC=0x00;//
  aa:	15 ba       	out	0x15, r1	; 21
DDRD=0xff;//D口作输出口
  ac:	81 bb       	out	0x11, r24	; 17
PORTD=0x00;//
  ae:	12 ba       	out	0x12, r1	; 18
  b0:	08 95       	ret

000000b2 <Usart_Init>:
}
/////////////////////////////////////////////////////
//功能:串口初始化
void Usart_Init(void)//9600,8,1,
{
 UCSRB = 0x00; //disable while setting baud rate
  b2:	1a b8       	out	0x0a, r1	; 10
 UCSRA = 0x00;
  b4:	1b b8       	out	0x0b, r1	; 11
 UCSRC = 0x86;
  b6:	86 e8       	ldi	r24, 0x86	; 134
  b8:	80 bd       	out	0x20, r24	; 32
 UBRRL = 0x33; //set baud rate lo
  ba:	83 e3       	ldi	r24, 0x33	; 51
  bc:	89 b9       	out	0x09, r24	; 9
 UBRRH = 0x00; //set baud rate hi
  be:	10 bc       	out	0x20, r1	; 32
 UCSRB = 0x18;
  c0:	88 e1       	ldi	r24, 0x18	; 24
  c2:	8a b9       	out	0x0a, r24	; 10
  c4:	08 95       	ret

000000c6 <Usart_Tx>:
}
//字符输出函数 		
void Usart_Tx(unsigned char data)
{	 
while (!(UCSRA&(1<<UDRE)));
  c6:	5d 9b       	sbis	0x0b, 5	; 11
  c8:	fe cf       	rjmp	.-4      	; 0xc6 <Usart_Tx>
UDR=data;    
  ca:	8c b9       	out	0x0c, r24	; 12
  cc:	08 95       	ret

000000ce <Usart_Rx>:
}
//字符输入函数 		
unsigned char Usart_Rx(void)
{
while(!(UCSRA& (1<<RXC)));
  ce:	5f 9b       	sbis	0x0b, 7	; 11
  d0:	fe cf       	rjmp	.-4      	; 0xce <Usart_Rx>
return UDR;
  d2:	8c b1       	in	r24, 0x0c	; 12
}
  d4:	99 27       	eor	r25, r25
  d6:	08 95       	ret

000000d8 <data_class>:
///////////////////////////////////////////
void data_class(unsigned char ill_num)
{   
  d8:	1f 93       	push	r17
  da:	18 2f       	mov	r17, r24
    Usart_Tx(0xff);//header
  dc:	8f ef       	ldi	r24, 0xFF	; 255
  de:	0e 94 63 00 	call	0xc6 <Usart_Tx>
 	Usart_Tx(0x07);//year
  e2:	87 e0       	ldi	r24, 0x07	; 7
  e4:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x05);//month
  e8:	85 e0       	ldi	r24, 0x05	; 5
  ea:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x01);//day
  ee:	81 e0       	ldi	r24, 0x01	; 1
  f0:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(ill_num);//ill_number
  f4:	81 2f       	mov	r24, r17
  f6:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x01);//project_name
  fa:	81 e0       	ldi	r24, 0x01	; 1
  fc:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x11);//8 正常范围
 100:	81 e1       	ldi	r24, 0x11	; 17
 102:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x22);
 106:	82 e2       	ldi	r24, 0x22	; 34
 108:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x33);
 10c:	83 e3       	ldi	r24, 0x33	; 51
 10e:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x44);
 112:	84 e4       	ldi	r24, 0x44	; 68
 114:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x55);
 118:	85 e5       	ldi	r24, 0x55	; 85
 11a:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x66);
 11e:	86 e6       	ldi	r24, 0x66	; 102
 120:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x77);
 124:	87 e7       	ldi	r24, 0x77	; 119
 126:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x88);
 12a:	88 e8       	ldi	r24, 0x88	; 136
 12c:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x11);//4浓度
 130:	81 e1       	ldi	r24, 0x11	; 17
 132:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x22);
 136:	82 e2       	ldi	r24, 0x22	; 34
 138:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x33);
 13c:	83 e3       	ldi	r24, 0x33	; 51
 13e:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x44);
 142:	84 e4       	ldi	r24, 0x44	; 68
 144:	0e 94 63 00 	call	0xc6 <Usart_Tx>
	Usart_Tx(0x01);//单位
 148:	81 e0       	ldi	r24, 0x01	; 1
 14a:	0e 94 63 00 	call	0xc6 <Usart_Tx>
 14e:	1f 91       	pop	r17
 150:	08 95       	ret

00000152 <init_devices>:
}
///////////////////////////////////////////
void init_devices(void)
{
    //CLI(); //禁止所有中断
    MCUCR  = 0x00;
 152:	15 be       	out	0x35, r1	; 53
    port_Init();
 154:	0e 94 4f 00 	call	0x9e <port_Init>
    Usart_Init();
 158:	0e 94 59 00 	call	0xb2 <Usart_Init>
 15c:	08 95       	ret

0000015e <main>:
    //SEI();//开全局中断
}
//主函数
int main(void)
{
 15e:	cf e5       	ldi	r28, 0x5F	; 95
 160:	d4 e0       	ldi	r29, 0x04	; 4
 162:	de bf       	out	0x3e, r29	; 62
 164:	cd bf       	out	0x3d, r28	; 61
 	OSCCAL=0xB8; 
 166:	88 eb       	ldi	r24, 0xB8	; 184
 168:	81 bf       	out	0x31, r24	; 49
    init_devices(); 
 16a:	0e 94 a9 00 	call	0x152 <init_devices>
	//data_class(ill_num);
	data_class(ill_num);
 16e:	80 91 60 00 	lds	r24, 0x0060
 172:	0e 94 6c 00 	call	0xd8 <data_class>
	while(1)
	{
	
       /*
	    do
		{
       
	    NOP();
	    }
	    while(temp==1);
		NOP();*/
	temp=Usart_Rx();
 176:	0e 94 67 00 	call	0xce <Usart_Rx>
 17a:	80 93 62 00 	sts	0x0062, r24
	if(temp!=0)
 17e:	88 23       	and	r24, r24
 180:	d1 f3       	breq	.-12     	; 0x176 <main+0x18>
	  if(temp==0xFF)
 182:	8f 3f       	cpi	r24, 0xFF	; 255
 184:	a1 f3       	breq	.-24     	; 0x16e <main+0x10>
			{
			data_class(ill_num);
			}
	  else if(temp==0x55)
 186:	85 35       	cpi	r24, 0x55	; 85
 188:	b1 f7       	brne	.-20     	; 0x176 <main+0x18>
			{
			ill_num++;
 18a:	80 91 60 00 	lds	r24, 0x0060
 18e:	8f 5f       	subi	r24, 0xFF	; 255
 190:	80 93 60 00 	sts	0x0060, r24
 194:	ee cf       	rjmp	.-36     	; 0x172 <main+0x14>

⌨️ 快捷键说明

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