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

📄 main.lss

📁 atmega32对ch375的读写程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00003edc  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000136  00800060  00003edc  00003f70  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000680  00800196  00800196  000040a6  2**0
                  ALLOC
  3 .noinit       00000000  00800816  00800816  000040a6  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000040a6  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  000040a8  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  00004414  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  00004498  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 000003a5  00000000  00000000  000044ac  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00001334  00000000  00000000  00004851  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 0000029f  00000000  00000000  00005b85  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   00000e5f  00000000  00000000  00005e24  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    000005d0  00000000  00000000  00006c83  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 e6 09 	jmp	0x13cc <__vector_2>
       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 98 09 	jmp	0x1330 <__vector_13>
      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:	d8 e0       	ldi	r29, 0x08	; 8
      5c:	de bf       	out	0x3e, r29	; 62
      5e:	cd bf       	out	0x3d, r28	; 61

00000060 <__do_copy_data>:
      60:	11 e0       	ldi	r17, 0x01	; 1
      62:	a0 e6       	ldi	r26, 0x60	; 96
      64:	b0 e0       	ldi	r27, 0x00	; 0
      66:	ec ed       	ldi	r30, 0xDC	; 220
      68:	fe e3       	ldi	r31, 0x3E	; 62
      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:	a6 39       	cpi	r26, 0x96	; 150
      72:	b1 07       	cpc	r27, r17
      74:	d9 f7       	brne	.-10     	; 0x6c <.do_copy_data_loop>

00000076 <__do_clear_bss>:
      76:	18 e0       	ldi	r17, 0x08	; 8
      78:	a6 e9       	ldi	r26, 0x96	; 150
      7a:	b1 e0       	ldi	r27, 0x01	; 1
      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:	a6 31       	cpi	r26, 0x16	; 22
      82:	b1 07       	cpc	r27, r17
      84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
      86:	0c 94 ea 05 	jmp	0xbd4 <main>

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

0000008e <Usart_init>:


void Usart_init(void)  //串口初始化
{ 
	 UCSRA = 0x00;
      8e:	1b b8       	out	0x0b, r1	; 11
	 UCSRB =0x08;  //发送接收使能,使用中断方式
      90:	88 e0       	ldi	r24, 0x08	; 8
      92:	8a b9       	out	0x0a, r24	; 10
	 UCSRC =0X86;/* 设置帧格式: 8 个数据位, 1 个停止位*/
      94:	86 e8       	ldi	r24, 0x86	; 134
      96:	80 bd       	out	0x20, r24	; 32
	 UBRRH =0;//8Mhz频率,设置波特率9.6k
      98:	10 bc       	out	0x20, r1	; 32
	 UBRRL =51;
      9a:	83 e3       	ldi	r24, 0x33	; 51
      9c:	89 b9       	out	0x09, r24	; 9
      9e:	08 95       	ret

000000a0 <Usart_Send_Str>:
} 


void Usart_Send_Str(char *p) //串口发送字符串 
{		 
      a0:	dc 01       	movw	r26, r24
	for(uchar j=0;*(p+j)!='\0';j++)
      a2:	90 e0       	ldi	r25, 0x00	; 0
      a4:	8c 91       	ld	r24, X
      a6:	88 23       	and	r24, r24
      a8:	69 f0       	breq	.+26     	; 0xc4 <Usart_Send_Str+0x24>
	{
		 UDR=*(p+j);//发送数据
      aa:	fd 01       	movw	r30, r26
      ac:	e9 0f       	add	r30, r25
      ae:	f1 1d       	adc	r31, r1
      b0:	80 81       	ld	r24, Z
      b2:	8c b9       	out	0x0c, r24	; 12
		 while(!(UCSRA&0x20));//等待发送完成
      b4:	5d 9b       	sbis	0x0b, 5	; 11
      b6:	fe cf       	rjmp	.-4      	; 0xb4 <Usart_Send_Str+0x14>
      b8:	9f 5f       	subi	r25, 0xFF	; 255
      ba:	fd 01       	movw	r30, r26
      bc:	e9 0f       	add	r30, r25
      be:	f1 1d       	adc	r31, r1
      c0:	80 81       	ld	r24, Z
      c2:	f1 cf       	rjmp	.-30     	; 0xa6 <Usart_Send_Str+0x6>
      c4:	08 95       	ret

000000c6 <Usart_Send_Data>:
	}
}

void Usart_Send_Data(char *p,unsigned int n) //串口发送数据 
{		 
	for(unsigned int  l=0;l<n;l++)
      c6:	20 e0       	ldi	r18, 0x00	; 0
      c8:	30 e0       	ldi	r19, 0x00	; 0
      ca:	26 17       	cp	r18, r22
      cc:	37 07       	cpc	r19, r23
      ce:	58 f4       	brcc	.+22     	; 0xe6 <Usart_Send_Data+0x20>
      d0:	fc 01       	movw	r30, r24
	{
		 UDR=*(p+l);//发送数据
      d2:	80 81       	ld	r24, Z
      d4:	8c b9       	out	0x0c, r24	; 12
		 while(!(UCSRA&0x20));//等待发送完成
      d6:	5d 9b       	sbis	0x0b, 5	; 11
      d8:	fe cf       	rjmp	.-4      	; 0xd6 <Usart_Send_Data+0x10>
      da:	2f 5f       	subi	r18, 0xFF	; 255
      dc:	3f 4f       	sbci	r19, 0xFF	; 255
      de:	31 96       	adiw	r30, 0x01	; 1
      e0:	26 17       	cp	r18, r22
      e2:	37 07       	cpc	r19, r23
      e4:	b0 f3       	brcs	.-20     	; 0xd2 <Usart_Send_Data+0xc>
      e6:	08 95       	ret

000000e8 <TWI_init>:
void TWI_init( void ) 
{  
	//DDRC|=0x00;
	//PORTC|=0x03;
	TWBR = 0x03;//设置波特率 
      e8:	83 e0       	ldi	r24, 0x03	; 3
      ea:	80 b9       	out	0x00, r24	; 0
	TWSR= 0X1;//设置预分频因子,则SCL频率为92160Hz 
      ec:	81 e0       	ldi	r24, 0x01	; 1
      ee:	81 b9       	out	0x01, r24	; 1
      f0:	08 95       	ret

000000f2 <twi_write_byte>:
} 

uchar twi_write_byte(uchar sla,uchar address,uchar write_data) //
{ 
      f2:	78 2f       	mov	r23, r24
   uchar twst,n=0x0,rv=0xff; 
      f4:	50 e0       	ldi	r21, 0x00	; 0
      f6:	9f ef       	ldi	r25, 0xFF	; 255
   restart: 
      if(n++>=max) 
      f8:	85 2f       	mov	r24, r21
      fa:	5f 5f       	subi	r21, 0xFF	; 255
      fc:	83 30       	cpi	r24, 0x03	; 3
      fe:	08 f0       	brcs	.+2      	; 0x102 <twi_write_byte+0x10>
     100:	47 c0       	rjmp	.+142    	; 0x190 <twi_write_byte+0x9e>
         goto error; 
   begin: 
      TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN);//发送开始信号 
     102:	84 ea       	ldi	r24, 0xA4	; 164
     104:	86 bf       	out	0x36, r24	; 54
      while((TWCR & _BV(TWINT))==0x0);//等待发送完毕 
     106:	06 b6       	in	r0, 0x36	; 54
     108:	07 fe       	sbrs	r0, 7
     10a:	fd cf       	rjmp	.-6      	; 0x106 <twi_write_byte+0x14>
      switch(twst = (TWSR&0xf8)) 
     10c:	81 b1       	in	r24, 0x01	; 1
     10e:	88 7f       	andi	r24, 0xF8	; 248
     110:	28 2f       	mov	r18, r24
     112:	33 27       	eor	r19, r19
     114:	20 31       	cpi	r18, 0x10	; 16
     116:	31 05       	cpc	r19, r1
     118:	31 f0       	breq	.+12     	; 0x126 <twi_write_byte+0x34>
     11a:	21 31       	cpi	r18, 0x11	; 17
     11c:	31 05       	cpc	r19, r1
     11e:	54 f5       	brge	.+84     	; 0x174 <twi_write_byte+0x82>
     120:	28 30       	cpi	r18, 0x08	; 8
     122:	31 05       	cpc	r19, r1
     124:	a9 f5       	brne	.+106    	; 0x190 <twi_write_byte+0x9e>
      { 
         case 0x10:  			//TW_REP_START://有可能出现 
         case  0x08: 				//TW_START: 
               break; 
         case   0x38:				//TW_MT_ARB_LOST: 
               goto   begin; 
         default: 
               goto   error; 
      } 
      TWDR = sla | TW_WRITE;//发送SLA+W 
     126:	73 b9       	out	0x03, r23	; 3
      TWCR = _BV(TWINT) | _BV(TWEN);//清TWINT,开始传输 
     128:	84 e8       	ldi	r24, 0x84	; 132
     12a:	86 bf       	out	0x36, r24	; 54
      while((TWCR & _BV(TWINT))==0x0);//等待传输完毕 
     12c:	06 b6       	in	r0, 0x36	; 54
     12e:	07 fe       	sbrs	r0, 7
     130:	fd cf       	rjmp	.-6      	; 0x12c <twi_write_byte+0x3a>
      switch(twst = (TWSR&0xf8)) 
     132:	81 b1       	in	r24, 0x01	; 1
     134:	88 7f       	andi	r24, 0xF8	; 248
     136:	28 2f       	mov	r18, r24
     138:	33 27       	eor	r19, r19
     13a:	20 32       	cpi	r18, 0x20	; 32
     13c:	31 05       	cpc	r19, r1
     13e:	e1 f2       	breq	.-72     	; 0xf8 <twi_write_byte+0x6>
     140:	21 32       	cpi	r18, 0x21	; 33
     142:	31 05       	cpc	r19, r1
     144:	bc f4       	brge	.+46     	; 0x174 <twi_write_byte+0x82>
     146:	28 31       	cpi	r18, 0x18	; 24
     148:	31 05       	cpc	r19, r1
     14a:	11 f5       	brne	.+68     	; 0x190 <twi_write_byte+0x9e>
      { 
         case  0x18: 		//TW_MT_SLA_ACK: 
               break; 
         case   0x20:			//TW_MT_SLA_NACK://器件忙,有可能处于内部写周期 
               goto   restart; 
         case  0x38:			// TW_MT_ARB_LOST: 
               goto   begin; 
         default: 
               goto   error; 
      } 
     /* TWDR = address>>8;//传输地址高8位 
      TWCR = _BV(TWINT) | _BV(TWEN);//清TWINT,开始传输 
      while((TWCR & _BV(TWINT))==0x0);//等待传输完毕 
      switch((twst = TW_STATUS)) 
      { 
         case   TW_MT_DATA_ACK: 
               break; 
         case   TW_MT_DATA_NACK: 
               goto   quit; 
         case   TW_MT_ARB_LOST: 
               goto   begin; 
         default: 
               goto   error; 
      } */
      TWDR = address;//传输地址低8位 
     14c:	63 b9       	out	0x03, r22	; 3
      TWCR = _BV(TWINT) | _BV(TWEN);//清TWINT,开始传输 
     14e:	84 e8       	ldi	r24, 0x84	; 132
     150:	86 bf       	out	0x36, r24	; 54
      while((TWCR & _BV(TWINT))==0x0);//等待传输完毕 
     152:	06 b6       	in	r0, 0x36	; 54
     154:	07 fe       	sbrs	r0, 7
     156:	fd cf       	rjmp	.-6      	; 0x152 <twi_write_byte+0x60>
      switch(twst = (TWSR&0xf8)) 
     158:	81 b1       	in	r24, 0x01	; 1
     15a:	88 7f       	andi	r24, 0xF8	; 248
     15c:	28 2f       	mov	r18, r24
     15e:	33 27       	eor	r19, r19
     160:	20 33       	cpi	r18, 0x30	; 48
     162:	31 05       	cpc	r19, r1
     164:	b1 f0       	breq	.+44     	; 0x192 <twi_write_byte+0xa0>
     166:	21 33       	cpi	r18, 0x31	; 49
     168:	31 05       	cpc	r19, r1
     16a:	24 f4       	brge	.+8      	; 0x174 <twi_write_byte+0x82>
     16c:	28 32       	cpi	r18, 0x28	; 40
     16e:	31 05       	cpc	r19, r1
     170:	29 f0       	breq	.+10     	; 0x17c <twi_write_byte+0x8a>
     172:	0e c0       	rjmp	.+28     	; 0x190 <twi_write_byte+0x9e>
     174:	28 33       	cpi	r18, 0x38	; 56
     176:	31 05       	cpc	r19, r1
     178:	21 f2       	breq	.-120    	; 0x102 <twi_write_byte+0x10>
     17a:	0a c0       	rjmp	.+20     	; 0x190 <twi_write_byte+0x9e>
      { 
         case   0x28:			//TW_MT_DATA_ACK: 
               break; 
         case   0x30:			//TW_MT_DATA_NACK: 
               goto   quit; 
         case   0x38:				//TW_MT_ARB_LOST: 
               goto   begin; 
         default: 
               goto   error; 
      } 
      TWDR = write_data; 
     17c:	43 b9       	out	0x03, r20	; 3
      TWCR = _BV(TWINT) | _BV(TWEN);//清TWINT,开始传输 
     17e:	84 e8       	ldi	r24, 0x84	; 132
     180:	86 bf       	out	0x36, r24	; 54
      while((TWCR & _BV(TWINT))==0x0);//等待传输完毕 
     182:	06 b6       	in	r0, 0x36	; 54
     184:	07 fe       	sbrs	r0, 7
     186:	fd cf       	rjmp	.-6      	; 0x182 <twi_write_byte+0x90>
      switch(twst = (TWSR&0xf8)) 
     188:	81 b1       	in	r24, 0x01	; 1
     18a:	88 7f       	andi	r24, 0xF8	; 248
     18c:	88 32       	cpi	r24, 0x28	; 40
     18e:	09 f0       	breq	.+2      	; 0x192 <twi_write_byte+0xa0>
      { 
         case   0x28:		//TW_MT_DATA_ACK: 
               break; 
         default: 
               goto   error; 
      } 
   quit: 
      TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN);//发送停止信号 
      return   rv; 
   error: 
      rv=0x00; 

⌨️ 快捷键说明

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