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

📄 camel.lss

📁 一个出口非洲的骑骆驼机器人的控制程序。采用工业手机模块作为通讯模块;AVR单片机作为控制中心;工业用马达作为骆驼机器人驱动动力。通过控制中心通过AT指令集连接通讯模块
💻 LSS
📖 第 1 页 / 共 3 页
字号:

camel.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000006a6  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000001a  00800060  000006a6  0000073a  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000144  0080007a  0080007a  00000754  2**0
                  ALLOC
  3 .stab         00000378  00000000  00000000  00000754  2**2
                  CONTENTS, READONLY, DEBUGGING
  4 .stabstr      00000071  00000000  00000000  00000acc  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_aranges 00000020  00000000  00000000  00000b3d  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 00000321  00000000  00000000  00000b5d  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   00000552  00000000  00000000  00000e7e  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 00000182  00000000  00000000  000013d0  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   00000760  00000000  00000000  00001552  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_frame  00000130  00000000  00000000  00001cb4  2**2
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_str    0000033d  00000000  00000000  00001de4  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_loc    0000006e  00000000  00000000  00002121  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	12 c0       	rjmp	.+36     	; 0x26 <__ctors_end>
   2:	2c c0       	rjmp	.+88     	; 0x5c <__bad_interrupt>
   4:	2b c0       	rjmp	.+86     	; 0x5c <__bad_interrupt>
   6:	2a c0       	rjmp	.+84     	; 0x5c <__bad_interrupt>
   8:	29 c0       	rjmp	.+82     	; 0x5c <__bad_interrupt>
   a:	28 c0       	rjmp	.+80     	; 0x5c <__bad_interrupt>
   c:	27 c0       	rjmp	.+78     	; 0x5c <__bad_interrupt>
   e:	26 c0       	rjmp	.+76     	; 0x5c <__bad_interrupt>
  10:	5d c1       	rjmp	.+698    	; 0x2cc <__vector_8>
  12:	24 c0       	rjmp	.+72     	; 0x5c <__bad_interrupt>
  14:	23 c0       	rjmp	.+70     	; 0x5c <__bad_interrupt>
  16:	11 c1       	rjmp	.+546    	; 0x23a <__vector_11>
  18:	21 c0       	rjmp	.+66     	; 0x5c <__bad_interrupt>
  1a:	cc c0       	rjmp	.+408    	; 0x1b4 <__vector_13>
  1c:	1f c0       	rjmp	.+62     	; 0x5c <__bad_interrupt>
  1e:	1e c0       	rjmp	.+60     	; 0x5c <__bad_interrupt>
  20:	1d c0       	rjmp	.+58     	; 0x5c <__bad_interrupt>
  22:	1c c0       	rjmp	.+56     	; 0x5c <__bad_interrupt>
  24:	1b c0       	rjmp	.+54     	; 0x5c <__bad_interrupt>

00000026 <__ctors_end>:
  26:	11 24       	eor	r1, r1
  28:	1f be       	out	0x3f, r1	; 63
  2a:	cf e5       	ldi	r28, 0x5F	; 95
  2c:	d4 e0       	ldi	r29, 0x04	; 4
  2e:	de bf       	out	0x3e, r29	; 62
  30:	cd bf       	out	0x3d, r28	; 61

00000032 <__do_copy_data>:
  32:	10 e0       	ldi	r17, 0x00	; 0
  34:	a0 e6       	ldi	r26, 0x60	; 96
  36:	b0 e0       	ldi	r27, 0x00	; 0
  38:	e6 ea       	ldi	r30, 0xA6	; 166
  3a:	f6 e0       	ldi	r31, 0x06	; 6
  3c:	02 c0       	rjmp	.+4      	; 0x42 <.do_copy_data_start>

0000003e <.do_copy_data_loop>:
  3e:	05 90       	lpm	r0, Z+
  40:	0d 92       	st	X+, r0

00000042 <.do_copy_data_start>:
  42:	aa 37       	cpi	r26, 0x7A	; 122
  44:	b1 07       	cpc	r27, r17
  46:	d9 f7       	brne	.-10     	; 0x3e <.do_copy_data_loop>

00000048 <__do_clear_bss>:
  48:	11 e0       	ldi	r17, 0x01	; 1
  4a:	aa e7       	ldi	r26, 0x7A	; 122
  4c:	b0 e0       	ldi	r27, 0x00	; 0
  4e:	01 c0       	rjmp	.+2      	; 0x52 <.do_clear_bss_start>

00000050 <.do_clear_bss_loop>:
  50:	1d 92       	st	X+, r1

00000052 <.do_clear_bss_start>:
  52:	ae 3b       	cpi	r26, 0xBE	; 190
  54:	b1 07       	cpc	r27, r17
  56:	e1 f7       	brne	.-8      	; 0x50 <.do_clear_bss_loop>
  58:	9c d2       	rcall	.+1336   	; 0x592 <main>
  5a:	24 c3       	rjmp	.+1608   	; 0x6a4 <_exit>

0000005c <__bad_interrupt>:
  5c:	d1 cf       	rjmp	.-94     	; 0x0 <__vectors>

0000005e <SpeakerPlay>:
#define GSMTalkingNo   	0

/////////////////////////////////////////////////////////
void SpeakerPlay(void)
{
  5e:	80 91 7f 00 	lds	r24, 0x007F
  62:	88 23       	and	r24, r24
  64:	39 f5       	brne	.+78     	; 0xb4 <SpeakerPlay+0x56>
	if(speakerPlayInitSet==0)
	{
		if(speakerPlayflag==speaker_first)
  66:	80 91 87 00 	lds	r24, 0x0087
  6a:	88 23       	and	r24, r24
  6c:	49 f4       	brne	.+18     	; 0x80 <SpeakerPlay+0x22>
		{
			speakerResetPlay();
  6e:	c2 9a       	sbi	0x18, 2	; 24
			speakerPlayflag=speaker_Enable;
  70:	81 e0       	ldi	r24, 0x01	; 1
  72:	80 93 87 00 	sts	0x0087, r24
			speakerPlayTemp=0;
  76:	10 92 85 00 	sts	0x0085, r1
  7a:	10 92 84 00 	sts	0x0084, r1
  7e:	08 95       	ret
		}
		else if(speakerPlayflag==speaker_Enable)
  80:	20 91 87 00 	lds	r18, 0x0087
  84:	21 30       	cpi	r18, 0x01	; 1
  86:	b1 f4       	brne	.+44     	; 0xb4 <SpeakerPlay+0x56>
		{
			
			speakerPlayTemp++;
  88:	80 91 84 00 	lds	r24, 0x0084
  8c:	90 91 85 00 	lds	r25, 0x0085
  90:	01 96       	adiw	r24, 0x01	; 1
  92:	90 93 85 00 	sts	0x0085, r25
  96:	80 93 84 00 	sts	0x0084, r24
			if(speakerPlayTemp<20)
  9a:	80 91 84 00 	lds	r24, 0x0084
  9e:	90 91 85 00 	lds	r25, 0x0085
  a2:	44 97       	sbiw	r24, 0x14	; 20
  a4:	10 f4       	brcc	.+4      	; 0xaa <SpeakerPlay+0x4c>
			{
				speakerSetPlay();
  a6:	c2 98       	cbi	0x18, 2	; 24
  a8:	08 95       	ret
			}
			else
			{
				speakerResetPlay();
  aa:	c2 9a       	sbi	0x18, 2	; 24
				speakerPlayflag=speaker_first;
  ac:	10 92 87 00 	sts	0x0087, r1
				speakerPlayInitSet=1;
  b0:	20 93 7f 00 	sts	0x007F, r18
  b4:	08 95       	ret

000000b6 <SpeakerRec>:
			}		
		}
	}
}


void SpeakerRec(void)
{
  b6:	80 91 80 00 	lds	r24, 0x0080
  ba:	88 23       	and	r24, r24
  bc:	39 f5       	brne	.+78     	; 0x10c <SpeakerRec+0x56>
	if(speakerRecInitSet==0)
	{
		if(speakerRecflag==speaker_first)
  be:	80 91 88 00 	lds	r24, 0x0088
  c2:	88 23       	and	r24, r24
  c4:	49 f4       	brne	.+18     	; 0xd8 <SpeakerRec+0x22>
		{
			speakerResetREC();
  c6:	c1 9a       	sbi	0x18, 1	; 24
			speakerRecflag=speaker_Enable;
  c8:	81 e0       	ldi	r24, 0x01	; 1
  ca:	80 93 88 00 	sts	0x0088, r24
			speakerRecTemp=0;
  ce:	10 92 83 00 	sts	0x0083, r1
  d2:	10 92 82 00 	sts	0x0082, r1
  d6:	08 95       	ret
		}
		else if(speakerRecflag==speaker_Enable)
  d8:	20 91 88 00 	lds	r18, 0x0088
  dc:	21 30       	cpi	r18, 0x01	; 1
  de:	b1 f4       	brne	.+44     	; 0x10c <SpeakerRec+0x56>
		{
			speakerRecTemp++;
  e0:	80 91 82 00 	lds	r24, 0x0082
  e4:	90 91 83 00 	lds	r25, 0x0083
  e8:	01 96       	adiw	r24, 0x01	; 1
  ea:	90 93 83 00 	sts	0x0083, r25
  ee:	80 93 82 00 	sts	0x0082, r24
			if(speakerRecTemp<20)
  f2:	80 91 82 00 	lds	r24, 0x0082
  f6:	90 91 83 00 	lds	r25, 0x0083
  fa:	44 97       	sbiw	r24, 0x14	; 20
  fc:	10 f4       	brcc	.+4      	; 0x102 <SpeakerRec+0x4c>
			{
				speakerSetREC();
  fe:	c1 98       	cbi	0x18, 1	; 24
 100:	08 95       	ret
			}
			else
			{
				speakerResetREC();
 102:	c1 9a       	sbi	0x18, 1	; 24
				speakerRecflag=speaker_first;
 104:	10 92 88 00 	sts	0x0088, r1
				speakerRecInitSet=1;
 108:	20 93 80 00 	sts	0x0080, r18
 10c:	08 95       	ret

0000010e <checkKey>:
			}		
		}
	}
}

void checkKey(void)
{
 10e:	80 91 7a 00 	lds	r24, 0x007A
 112:	88 23       	and	r24, r24
 114:	09 f0       	breq	.+2      	; 0x118 <checkKey+0xa>
 116:	49 c0       	rjmp	.+146    	; 0x1aa <checkKey+0x9c>
	//在可以检测的状态下,假如键盘状态有电平输出
	if((keyLevel==0)&&keyPress())
 118:	84 9b       	sbis	0x10, 4	; 16
 11a:	47 c0       	rjmp	.+142    	; 0x1aa <checkKey+0x9c>
	{
		//修改电平状态,直到客户放开按钮
		keyLevel=1;
 11c:	91 e0       	ldi	r25, 0x01	; 1
 11e:	90 93 7a 00 	sts	0x007A, r25
		
		if(key1())                    
 122:	83 b3       	in	r24, 0x13	; 19
 124:	8f 70       	andi	r24, 0x0F	; 15
 126:	81 30       	cpi	r24, 0x01	; 1
 128:	29 f4       	brne	.+10     	; 0x134 <checkKey+0x26>
			{
				KeyFlag=1;KeyNum=1;
 12a:	90 93 7b 00 	sts	0x007B, r25
 12e:	90 93 7c 00 	sts	0x007C, r25
 132:	08 95       	ret
			}
		else if(key2())
 134:	83 b3       	in	r24, 0x13	; 19
 136:	8f 70       	andi	r24, 0x0F	; 15
 138:	82 30       	cpi	r24, 0x02	; 2
 13a:	01 f1       	breq	.+64     	; 0x17c <checkKey+0x6e>
			{
				KeyFlag=1;KeyNum=2;
			}
		else if(key3())
 13c:	83 b3       	in	r24, 0x13	; 19
 13e:	8f 70       	andi	r24, 0x0F	; 15
 140:	83 30       	cpi	r24, 0x03	; 3
 142:	e1 f0       	breq	.+56     	; 0x17c <checkKey+0x6e>
			{
				KeyFlag=1;KeyNum=3;
			}
		else if(key4())
 144:	83 b3       	in	r24, 0x13	; 19
 146:	8f 70       	andi	r24, 0x0F	; 15
 148:	84 30       	cpi	r24, 0x04	; 4
 14a:	c1 f0       	breq	.+48     	; 0x17c <checkKey+0x6e>
			{
				KeyFlag=1;KeyNum=4;
			}
		else if(key5())
 14c:	83 b3       	in	r24, 0x13	; 19
 14e:	8f 70       	andi	r24, 0x0F	; 15
 150:	85 30       	cpi	r24, 0x05	; 5
 152:	a1 f0       	breq	.+40     	; 0x17c <checkKey+0x6e>
			{
				KeyFlag=1;KeyNum=5;
			}
		else if(key6())
 154:	83 b3       	in	r24, 0x13	; 19
 156:	8f 70       	andi	r24, 0x0F	; 15
 158:	86 30       	cpi	r24, 0x06	; 6
 15a:	81 f0       	breq	.+32     	; 0x17c <checkKey+0x6e>
			{
				KeyFlag=1;KeyNum=6;
			}
		else if(key7())
 15c:	83 b3       	in	r24, 0x13	; 19
 15e:	8f 70       	andi	r24, 0x0F	; 15
 160:	87 30       	cpi	r24, 0x07	; 7
 162:	61 f0       	breq	.+24     	; 0x17c <checkKey+0x6e>
			{
				KeyFlag=1;KeyNum=7;
			}
		else if(key8())
 164:	83 b3       	in	r24, 0x13	; 19
 166:	8f 70       	andi	r24, 0x0F	; 15
 168:	88 30       	cpi	r24, 0x08	; 8
 16a:	41 f0       	breq	.+16     	; 0x17c <checkKey+0x6e>
			{
				KeyFlag=1;KeyNum=8;
			}
		else if(key9())
 16c:	83 b3       	in	r24, 0x13	; 19
 16e:	8f 70       	andi	r24, 0x0F	; 15
 170:	89 30       	cpi	r24, 0x09	; 9
 172:	21 f0       	breq	.+8      	; 0x17c <checkKey+0x6e>
			{
				KeyFlag=1;KeyNum=9;
			}		
		else if(key10())
 174:	83 b3       	in	r24, 0x13	; 19
 176:	8f 70       	andi	r24, 0x0F	; 15
 178:	8a 30       	cpi	r24, 0x0A	; 10
 17a:	19 f4       	brne	.+6      	; 0x182 <checkKey+0x74>
			{
				KeyFlag=1;KeyNum=10;
 17c:	90 93 7b 00 	sts	0x007B, r25
 180:	11 c0       	rjmp	.+34     	; 0x1a4 <checkKey+0x96>
			}
		else if(key11())
 182:	83 b3       	in	r24, 0x13	; 19
 184:	8f 70       	andi	r24, 0x0F	; 15
 186:	8b 30       	cpi	r24, 0x0B	; 11
 188:	29 f4       	brne	.+10     	; 0x194 <checkKey+0x86>
			{
				KeyFlag=1;KeyNum=11; 
 18a:	81 e0       	ldi	r24, 0x01	; 1
 18c:	80 93 7b 00 	sts	0x007B, r24
 190:	8b e0       	ldi	r24, 0x0B	; 11
 192:	08 c0       	rjmp	.+16     	; 0x1a4 <checkKey+0x96>
			}
		else if(key12())
 194:	83 b3       	in	r24, 0x13	; 19
 196:	8f 70       	andi	r24, 0x0F	; 15
 198:	8c 30       	cpi	r24, 0x0C	; 12
 19a:	59 f4       	brne	.+22     	; 0x1b2 <checkKey+0xa4>
			{
				KeyFlag=1;KeyNum=12; 
 19c:	81 e0       	ldi	r24, 0x01	; 1
 19e:	80 93 7b 00 	sts	0x007B, r24
 1a2:	8c e0       	ldi	r24, 0x0C	; 12
 1a4:	80 93 7c 00 	sts	0x007C, r24
 1a8:	08 95       	ret
			}		
	}

	//没有状态输出
	else if(keyPress()==0)
 1aa:	84 99       	sbic	0x10, 4	; 16
 1ac:	02 c0       	rjmp	.+4      	; 0x1b2 <checkKey+0xa4>
	{
		keyLevel=0;
 1ae:	10 92 7a 00 	sts	0x007A, r1
 1b2:	08 95       	ret

000001b4 <__vector_13>:
	}
    
}


//数据发送程序
#define sendBufferSize 100
vuchar sendBuffer[sendBufferSize];		//发送临时寄存器
vuchar sendBufferReader=0;		//发送数据读个数
vuchar sendBufferCounter=0;		//发送数据个数
SIGNAL(SIG_UART_TRANS)
{
 1b4:	1f 92       	push	r1
 1b6:	0f 92       	push	r0
 1b8:	0f b6       	in	r0, 0x3f	; 63
 1ba:	0f 92       	push	r0
 1bc:	11 24       	eor	r1, r1
 1be:	8f 93       	push	r24
 1c0:	ef 93       	push	r30
 1c2:	ff 93       	push	r31
	//UDR = 0x55;
	
	if(--sendBufferCounter)
 1c4:	80 91 8e 00 	lds	r24, 0x008E
 1c8:	81 50       	subi	r24, 0x01	; 1
 1ca:	80 93 8e 00 	sts	0x008E, r24
 1ce:	80 91 8e 00 	lds	r24, 0x008E
 1d2:	88 23       	and	r24, r24
 1d4:	69 f0       	breq	.+26     	; 0x1f0 <__vector_13+0x3c>
	{
		UDR=sendBuffer[++sendBufferReader];
 1d6:	80 91 8d 00 	lds	r24, 0x008D
 1da:	8f 5f       	subi	r24, 0xFF	; 255
 1dc:	80 93 8d 00 	sts	0x008D, r24
 1e0:	e0 91 8d 00 	lds	r30, 0x008D
 1e4:	ff 27       	eor	r31, r31
 1e6:	eb 50       	subi	r30, 0x0B	; 11
 1e8:	ff 4f       	sbci	r31, 0xFF	; 255
 1ea:	80 81       	ld	r24, Z
 1ec:	8c b9       	out	0x0c, r24	; 12
 1ee:	02 c0       	rjmp	.+4      	; 0x1f4 <__vector_13+0x40>
	}
	else 
	{
		sendBufferReader=0;
 1f0:	10 92 8d 00 	sts	0x008D, r1
 1f4:	ff 91       	pop	r31
 1f6:	ef 91       	pop	r30
 1f8:	8f 91       	pop	r24
 1fa:	0f 90       	pop	r0
 1fc:	0f be       	out	0x3f, r0	; 63
 1fe:	0f 90       	pop	r0
 200:	1f 90       	pop	r1
 202:	18 95       	reti

00000204 <sendData>:
	}
}

//发送程序,参数为要发送的字符指针以及要发送的字符数量
void sendData(uchar *sendPtr,uchar sendCounter)
{
 204:	ac 01       	movw	r20, r24
	uchar sendTemp=0;
	sendBufferCounter=sendCounter;
 206:	60 93 8e 00 	sts	0x008E, r22
	sendBufferReader=0;
 20a:	10 92 8d 00 	sts	0x008D, r1
 20e:	20 e0       	ldi	r18, 0x00	; 0
 210:	0a c0       	rjmp	.+20     	; 0x226 <sendData+0x22>
	for(sendTemp=0;sendTemp<sendCounter;sendTemp++)
	{
		sendBuffer[sendTemp]=*(sendPtr+sendTemp);
 212:	e2 2f       	mov	r30, r18
 214:	ff 27       	eor	r31, r31
 216:	da 01       	movw	r26, r20
 218:	ae 0f       	add	r26, r30
 21a:	bf 1f       	adc	r27, r31
 21c:	8c 91       	ld	r24, X
 21e:	eb 50       	subi	r30, 0x0B	; 11
 220:	ff 4f       	sbci	r31, 0xFF	; 255
 222:	80 83       	st	Z, r24
 224:	2f 5f       	subi	r18, 0xFF	; 255
 226:	26 17       	cp	r18, r22
 228:	a1 f7       	brne	.-24     	; 0x212 <sendData+0xe>
	}
	UDR = sendBuffer[sendBufferReader];
 22a:	e0 91 8d 00 	lds	r30, 0x008D
 22e:	ff 27       	eor	r31, r31
 230:	eb 50       	subi	r30, 0x0B	; 11
 232:	ff 4f       	sbci	r31, 0xFF	; 255
 234:	80 81       	ld	r24, Z
 236:	8c b9       	out	0x0c, r24	; 12
 238:	08 95       	ret

0000023a <__vector_11>:
}


//数据接收程序
#define receiveBufferSize 100
vuchar receiveBuffer[receiveBufferSize];
vuchar receiveBufferWriter=0;
vuchar receiveBufferCounter=0;
SIGNAL(SIG_UART_RECV)
{
 23a:	1f 92       	push	r1
 23c:	0f 92       	push	r0
 23e:	0f b6       	in	r0, 0x3f	; 63
 240:	0f 92       	push	r0
 242:	11 24       	eor	r1, r1
 244:	8f 93       	push	r24
 246:	9f 93       	push	r25

⌨️ 快捷键说明

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