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

📄 main.lss

📁 基于两片atmega128之间的SPI通信
💻 LSS
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         00000008  00800100  0000015a  000001ce  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         0000015a  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .debug_aranges 00000020  00000000  00000000  000001d6  2**0
                  CONTENTS, READONLY, DEBUGGING
  3 .debug_pubnames 00000033  00000000  00000000  000001f6  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_info   000001be  00000000  00000000  00000229  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_abbrev 00000163  00000000  00000000  000003e7  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_line   000001f3  00000000  00000000  0000054a  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_frame  00000040  00000000  00000000  00000740  2**2
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_str    000000e5  00000000  00000000  00000780  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_loc    00000050  00000000  00000000  00000865  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_ranges 00000048  00000000  00000000  000008b5  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 46 00 	jmp	0x8c	; 0x8c <__ctors_end>
   4:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
   8:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
   c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  10:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  14:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  18:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  1c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  20:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  24:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  28:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  2c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  30:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  34:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  38:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  3c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  40:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  44:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  48:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  4c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  50:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  54:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  58:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  5c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  60:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  64:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  68:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  6c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  70:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  74:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  78:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  7c:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  80:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  84:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>
  88:	0c 94 66 00 	jmp	0xcc	; 0xcc <__bad_interrupt>

0000008c <__ctors_end>:
  8c:	11 24       	eor	r1, r1
  8e:	1f be       	out	0x3f, r1	; 63
  90:	cf ef       	ldi	r28, 0xFF	; 255
  92:	d0 e1       	ldi	r29, 0x10	; 16
  94:	de bf       	out	0x3e, r29	; 62
  96:	cd bf       	out	0x3d, r28	; 61

00000098 <__do_copy_data>:
  98:	11 e0       	ldi	r17, 0x01	; 1
  9a:	a0 e0       	ldi	r26, 0x00	; 0
  9c:	b1 e0       	ldi	r27, 0x01	; 1
  9e:	ea e5       	ldi	r30, 0x5A	; 90
  a0:	f1 e0       	ldi	r31, 0x01	; 1
  a2:	00 e0       	ldi	r16, 0x00	; 0
  a4:	0b bf       	out	0x3b, r16	; 59
  a6:	02 c0       	rjmp	.+4      	; 0xac <__do_copy_data+0x14>
  a8:	07 90       	elpm	r0, Z+
  aa:	0d 92       	st	X+, r0
  ac:	a8 30       	cpi	r26, 0x08	; 8
  ae:	b1 07       	cpc	r27, r17
  b0:	d9 f7       	brne	.-10     	; 0xa8 <__do_copy_data+0x10>
  b2:	1b be       	out	0x3b, r1	; 59

000000b4 <__do_clear_bss>:
  b4:	11 e0       	ldi	r17, 0x01	; 1
  b6:	a8 e0       	ldi	r26, 0x08	; 8
  b8:	b1 e0       	ldi	r27, 0x01	; 1
  ba:	01 c0       	rjmp	.+2      	; 0xbe <.do_clear_bss_start>

000000bc <.do_clear_bss_loop>:
  bc:	1d 92       	st	X+, r1

000000be <.do_clear_bss_start>:
  be:	a8 30       	cpi	r26, 0x08	; 8
  c0:	b1 07       	cpc	r27, r17
  c2:	e1 f7       	brne	.-8      	; 0xbc <.do_clear_bss_loop>
  c4:	0e 94 76 00 	call	0xec	; 0xec <main>
  c8:	0c 94 ab 00 	jmp	0x156	; 0x156 <_exit>

000000cc <__bad_interrupt>:
  cc:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

000000d0 <spi_init>:
#include<util/delay.h>

void spi_init(void)
{
//PORTB |= (1<<PB4); //按照spi协议的握手方式手动操作ss(低):在开始传输前将其拉低,传输结束后再将其抬高。
PORTB |= (1<<PB0);
  d0:	c0 9a       	sbi	0x18, 0	; 24
//DDRB |= (1<<DDB4) | (1<<DDB5) | (1<<DDB7);//ss(低)、sck、mosi 输出方式
DDRB |= (1<<DDB0) | (1<<DDB1) | (1<<DDB2);
  d2:	87 b3       	in	r24, 0x17	; 23
  d4:	87 60       	ori	r24, 0x07	; 7
  d6:	87 bb       	out	0x17, r24	; 23
SPCR = 0x70; //使能spi、主机模式、低位在先、模式0、fosc/2
  d8:	80 e7       	ldi	r24, 0x70	; 112
  da:	8d b9       	out	0x0d, r24	; 13
}
  dc:	08 95       	ret

000000de <spi_mt>:

void spi_mt(char cData)
{
  //PORTB &=~ (1<<PB4); //开始传输前拉低ss
  PORTB &=~ (1<<PB0);
  de:	c0 98       	cbi	0x18, 0	; 24
  SPCR |= (1<<MSTR); //设主机模式
  e0:	6c 9a       	sbi	0x0d, 4	; 13
  SPDR = cData;
  e2:	8f b9       	out	0x0f, r24	; 15
  while(!(SPSR & (1<<SPIF)))//等待传送完毕
  e4:	77 9b       	sbis	0x0e, 7	; 14
  e6:	fe cf       	rjmp	.-4      	; 0xe4 <spi_mt+0x6>
  ;
  //PORTB |= (1<<PB4);//传输结束后太高ss
  PORTB |= (1<<PB0);
  e8:	c0 9a       	sbi	0x18, 0	; 24
}
  ea:	08 95       	ret

000000ec <main>:
					 _delay_loop_2(50000);// 50ms
	             }
	}		 
*/
int main(void)
{
  ec:	df 93       	push	r29
  ee:	cf 93       	push	r28
  f0:	cd b7       	in	r28, 0x3d	; 61
  f2:	de b7       	in	r29, 0x3e	; 62
  f4:	28 97       	sbiw	r28, 0x08	; 8
  f6:	0f b6       	in	r0, 0x3f	; 63
  f8:	f8 94       	cli
  fa:	de bf       	out	0x3e, r29	; 62
  fc:	0f be       	out	0x3f, r0	; 63
  fe:	cd bf       	out	0x3d, r28	; 61
    // unsigned char shuma[10] = {0x81,0xf3,0x49,0x61,0x33,0x25,0x05,0xf1,0x01,0x21};
	unsigned char shuma[8] = {0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80};
 100:	de 01       	movw	r26, r28
 102:	11 96       	adiw	r26, 0x01	; 1
 104:	e0 e0       	ldi	r30, 0x00	; 0
 106:	f1 e0       	ldi	r31, 0x01	; 1
 108:	88 e0       	ldi	r24, 0x08	; 8
 10a:	01 90       	ld	r0, Z+
 10c:	0d 92       	st	X+, r0
 10e:	81 50       	subi	r24, 0x01	; 1
 110:	e1 f7       	brne	.-8      	; 0x10a <main+0x1e>
#include<util/delay.h>

void spi_init(void)
{
//PORTB |= (1<<PB4); //按照spi协议的握手方式手动操作ss(低):在开始传输前将其拉低,传输结束后再将其抬高。
PORTB |= (1<<PB0);
 112:	c0 9a       	sbi	0x18, 0	; 24
//DDRB |= (1<<DDB4) | (1<<DDB5) | (1<<DDB7);//ss(低)、sck、mosi 输出方式
DDRB |= (1<<DDB0) | (1<<DDB1) | (1<<DDB2);
 114:	87 b3       	in	r24, 0x17	; 23
 116:	87 60       	ori	r24, 0x07	; 7
 118:	87 bb       	out	0x17, r24	; 23
SPCR = 0x70; //使能spi、主机模式、低位在先、模式0、fosc/2
 11a:	80 e7       	ldi	r24, 0x70	; 112
 11c:	8d b9       	out	0x0d, r24	; 13
 11e:	20 e0       	ldi	r18, 0x00	; 0
     while(1)
         {
             //for(tmp=0;tmp<10;tmp++)
			 for(tmp=0;tmp<8;tmp++)
              {
                 spi_mt(shuma[tmp]);
 120:	be 01       	movw	r22, r28
 122:	6f 5f       	subi	r22, 0xFF	; 255
 124:	7f 4f       	sbci	r23, 0xFF	; 255
    milliseconds can be achieved.
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 126:	40 e9       	ldi	r20, 0x90	; 144
 128:	51 e0       	ldi	r21, 0x01	; 1
 12a:	fb 01       	movw	r30, r22
 12c:	e2 0f       	add	r30, r18
 12e:	f1 1d       	adc	r31, r1
 130:	80 81       	ld	r24, Z
}

void spi_mt(char cData)
{
  //PORTB &=~ (1<<PB4); //开始传输前拉低ss
  PORTB &=~ (1<<PB0);
 132:	c0 98       	cbi	0x18, 0	; 24
  SPCR |= (1<<MSTR); //设主机模式
 134:	6c 9a       	sbi	0x0d, 4	; 13
  SPDR = cData;
 136:	8f b9       	out	0x0f, r24	; 15
  while(!(SPSR & (1<<SPIF)))//等待传送完毕
 138:	77 9b       	sbis	0x0e, 7	; 14
 13a:	fe cf       	rjmp	.-4      	; 0x138 <main+0x4c>
  ;
  //PORTB |= (1<<PB4);//传输结束后太高ss
  PORTB |= (1<<PB0);
 13c:	c0 9a       	sbi	0x18, 0	; 24
 13e:	80 e1       	ldi	r24, 0x10	; 16
 140:	97 e2       	ldi	r25, 0x27	; 39
 142:	fa 01       	movw	r30, r20
 144:	31 97       	sbiw	r30, 0x01	; 1
 146:	f1 f7       	brne	.-4      	; 0x144 <main+0x58>
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
		{
			// wait 1/10 ms
			_delay_loop_2(((F_CPU) / 4e3) / 10);
			__ticks --;
 148:	01 97       	sbiw	r24, 0x01	; 1
		__ticks = 1;
	else if (__tmp > 65535)
	{
		//	__ticks = requested delay in 1/10 ms
		__ticks = (uint16_t) (__ms * 10.0);
		while(__ticks)
 14a:	d9 f7       	brne	.-10     	; 0x142 <main+0x56>
	 spi_init();
     unsigned char tmp;
     while(1)
         {
             //for(tmp=0;tmp<10;tmp++)
			 for(tmp=0;tmp<8;tmp++)
 14c:	2f 5f       	subi	r18, 0xFF	; 255
 14e:	28 30       	cpi	r18, 0x08	; 8
 150:	60 f3       	brcs	.-40     	; 0x12a <main+0x3e>
 152:	20 e0       	ldi	r18, 0x00	; 0
 154:	ea cf       	rjmp	.-44     	; 0x12a <main+0x3e>

00000156 <_exit>:
 156:	f8 94       	cli

00000158 <__stop_program>:
 158:	ff cf       	rjmp	.-2      	; 0x158 <__stop_program>

⌨️ 快捷键说明

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