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

📄 main.lss

📁 基于GSM无线温度检测系统
💻 LSS
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000001ec  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000002e  00800060  000001ec  00000280  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000002  0080008e  0080008e  000002ae  2**0
                  ALLOC
  3 .noinit       00000000  00800090  00800090  000002ae  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000002ae  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  000002b0  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  0000061c  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  000006a0  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 0000009f  00000000  00000000  000006b4  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   000002cd  00000000  00000000  00000753  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 0000015e  00000000  00000000  00000a20  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   0000024a  00000000  00000000  00000b7e  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    00000140  00000000  00000000  00000dc8  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:	ec ee       	ldi	r30, 0xEC	; 236
  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:	ae 38       	cpi	r26, 0x8E	; 142
  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:	ae e8       	ldi	r26, 0x8E	; 142
  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:	a0 39       	cpi	r26, 0x90	; 144
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 9e 00 	jmp	0x13c <main>

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

0000008e <delay>:

//uchar String_Buf[100];

void delay(uchar _delay_n)
{
  8e:	cf 93       	push	r28
  90:	df 93       	push	r29
  92:	38 2f       	mov	r19, r24
   uchar i;
   for(i=0;i<_delay_n;i++)
  94:	20 e0       	ldi	r18, 0x00	; 0
  96:	28 17       	cp	r18, r24
  98:	50 f4       	brcc	.+20     	; 0xae <delay+0x20>
  9a:	a0 e2       	ldi	r26, 0x20	; 32
  9c:	be e4       	ldi	r27, 0x4E	; 78
  9e:	c0 e0       	ldi	r28, 0x00	; 0
  a0:	d0 e0       	ldi	r29, 0x00	; 0
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  a2:	cd 01       	movw	r24, r26
  a4:	01 97       	sbiw	r24, 0x01	; 1
  a6:	f1 f7       	brne	.-4      	; 0xa4 <delay+0x16>

void delay(uchar _delay_n)
{
   uchar i;
   for(i=0;i<_delay_n;i++)
  a8:	2f 5f       	subi	r18, 0xFF	; 255
  aa:	23 17       	cp	r18, r19
  ac:	d0 f3       	brcs	.-12     	; 0xa2 <delay+0x14>
  ae:	df 91       	pop	r29
  b0:	cf 91       	pop	r28
  b2:	08 95       	ret

000000b4 <Uart_Init>:
//初始化设置**************************************************************//
void Uart_Init(void)
{
	//接收使能、发送使能、接收中断允许、发送中断允许
	UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE);	  
  b4:	88 ed       	ldi	r24, 0xD8	; 216
  b6:	8a b9       	out	0x0a, r24	; 10
	UBRRL= (fosc/16/(baud+1)) % 256;
  b8:	88 e6       	ldi	r24, 0x68	; 104
  ba:	89 b9       	out	0x09, r24	; 9
	UBRRH= (fosc/16/(baud+1)) / 256;
  bc:	10 bc       	out	0x20, r1	; 32
	UCSRC= (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);  //8位数据 +1位STOP位
  be:	86 e8       	ldi	r24, 0x86	; 134
  c0:	80 bd       	out	0x20, r24	; 32
  c2:	08 95       	ret

000000c4 <Uart_PutChar>:
//	sei();											//总中断允许
}


//发送字符函数************************************************************//
void Uart_PutChar(uchar data)
{
   while ( !( UCSRA & (1<<UDRE)) )             //等待发送缓冲器为空
  c4:	5d 9b       	sbis	0x0b, 5	; 11
  c6:	fe cf       	rjmp	.-4      	; 0xc4 <Uart_PutChar>
   ;
   UDR = data;                                  //将数据放入缓冲器,发送数据
  c8:	8c b9       	out	0x0c, r24	; 12
  ca:	08 95       	ret

000000cc <Uart_PutString>:
}


//发送字符串函数**********************************************************//
void Uart_PutString(uchar* p)
{
  cc:	cf 93       	push	r28
  ce:	df 93       	push	r29
  d0:	ec 01       	movw	r28, r24
    uchar* temp;
    temp=p;
	while(!(*temp=='\0'))
	{
	   Uart_PutChar(*temp);
	   temp++;
  d2:	88 81       	ld	r24, Y
  d4:	88 23       	and	r24, r24
  d6:	21 f0       	breq	.+8      	; 0xe0 <Uart_PutString+0x14>
  d8:	89 91       	ld	r24, Y+
  da:	0e 94 62 00 	call	0xc4 <Uart_PutChar>
  de:	f9 cf       	rjmp	.-14     	; 0xd2 <Uart_PutString+0x6>
	}
	Uart_PutChar(0x0D);
  e0:	8d e0       	ldi	r24, 0x0D	; 13
  e2:	0e 94 62 00 	call	0xc4 <Uart_PutChar>
  e6:	df 91       	pop	r29
  e8:	cf 91       	pop	r28
  ea:	08 95       	ret

000000ec <Uart_Recv>:
}  


//接收字符函数************************************************************//
uchar Uart_Recv(void)
{
   if(UCSRA & (1<<RXC))
  ec:	5f 9b       	sbis	0x0b, 7	; 11
  ee:	03 c0       	rjmp	.+6      	; 0xf6 <Uart_Recv+0xa>
     return UDR;
  f0:	8c b1       	in	r24, 0x0c	; 12
  f2:	99 27       	eor	r25, r25
  f4:	08 95       	ret
	   else  return 0;
  f6:	80 e0       	ldi	r24, 0x00	; 0
  f8:	90 e0       	ldi	r25, 0x00	; 0
}
  fa:	08 95       	ret

000000fc <keyboard_Initial>:


void keyboard_Initial(void)
{
	DDR_KEYBoard &=0xC3;   
  fc:	84 b3       	in	r24, 0x14	; 20
  fe:	83 7c       	andi	r24, 0xC3	; 195
 100:	84 bb       	out	0x14, r24	; 20
	PORT_KEYBoard |=0x3C;
 102:	85 b3       	in	r24, 0x15	; 21
 104:	8c 63       	ori	r24, 0x3C	; 60
 106:	85 bb       	out	0x15, r24	; 21
 108:	08 95       	ret

0000010a <GetKey>:
}

uchar GetKey(void)
{
 10a:	cf 93       	push	r28
    uchar key=0;
 10c:	c0 e0       	ldi	r28, 0x00	; 0
	uchar key_press_status;

   	PORT_KEYBoard |=0x3C;//对键盘IO口初始化
 10e:	85 b3       	in	r24, 0x15	; 21
 110:	8c 63       	ori	r24, 0x3C	; 60
 112:	85 bb       	out	0x15, r24	; 21
	
	delay(5);
 114:	85 e0       	ldi	r24, 0x05	; 5
 116:	0e 94 47 00 	call	0x8e <delay>
    key_press_status =PIN_KEYBoard;
 11a:	83 b3       	in	r24, 0x13	; 19
	key_press_status &=0x3C;//将键值提出来
 11c:	8c 73       	andi	r24, 0x3C	; 60
   	
 	if((~key_press_status) & 0x20) 
 11e:	99 27       	eor	r25, r25
 120:	80 95       	com	r24
 122:	90 95       	com	r25
 124:	85 fd       	sbrc	r24, 5
	{
		key=PLAY_KEYBOARD;
 126:	c1 e0       	ldi	r28, 0x01	; 1
	}                          

 	if((~key_press_status) & 0x10)
 128:	84 fd       	sbrc	r24, 4
 	{
		key=REC_KEYBOARD;
 12a:	c2 e0       	ldi	r28, 0x02	; 2
	}
	if((~key_press_status) & 0x08)
 12c:	83 fd       	sbrc	r24, 3
	{
		key=SET_KEYBOARD;
 12e:	c3 e0       	ldi	r28, 0x03	; 3
	}                          

 	if((~key_press_status) & 0x04)
 130:	82 fd       	sbrc	r24, 2
 	{
		key=STOP_KEYBOARD;
 132:	c4 e0       	ldi	r28, 0x04	; 4
	}

	return key;
} 
 134:	8c 2f       	mov	r24, r28
 136:	99 27       	eor	r25, r25
 138:	cf 91       	pop	r28
 13a:	08 95       	ret

0000013c <main>:
#include "UART.c"
#include"keyboard.c"

int main(void)
{
 13c:	c2 e3       	ldi	r28, 0x32	; 50
 13e:	d4 e0       	ldi	r29, 0x04	; 4
 140:	de bf       	out	0x3e, r29	; 62
 142:	cd bf       	out	0x3d, r28	; 61
  uchar key=0;
  uchar commond_AT[3]="AT";
 144:	83 e0       	ldi	r24, 0x03	; 3
 146:	a0 e6       	ldi	r26, 0x60	; 96
 148:	b0 e0       	ldi	r27, 0x00	; 0
 14a:	fe 01       	movw	r30, r28
 14c:	31 96       	adiw	r30, 0x01	; 1
 14e:	0d 90       	ld	r0, X+
 150:	01 92       	st	Z+, r0
 152:	8a 95       	dec	r24
 154:	e1 f7       	brne	.-8      	; 0x14e <main+0x12>
  uchar AT_CMGF[]="AT+CMGF=1";
 156:	94 e0       	ldi	r25, 0x04	; 4
 158:	c9 2e       	mov	r12, r25
 15a:	d1 2c       	mov	r13, r1
 15c:	cc 0e       	add	r12, r28
 15e:	dd 1e       	adc	r13, r29
 160:	8a e0       	ldi	r24, 0x0A	; 10
 162:	e3 e6       	ldi	r30, 0x63	; 99
 164:	f0 e0       	ldi	r31, 0x00	; 0
 166:	d6 01       	movw	r26, r12
 168:	01 90       	ld	r0, Z+
 16a:	0d 92       	st	X+, r0
 16c:	8a 95       	dec	r24
 16e:	e1 f7       	brne	.-8      	; 0x168 <main+0x2c>
  uchar AT_CMGS[24]={'A','T','+','C','M','G','S','=','"','1','3','8','8','6','8','3','2','2','6','9','"'};
 170:	8e e0       	ldi	r24, 0x0E	; 14
 172:	e8 2e       	mov	r14, r24
 174:	f1 2c       	mov	r15, r1
 176:	ec 0e       	add	r14, r28
 178:	fd 1e       	adc	r15, r29
 17a:	88 e1       	ldi	r24, 0x18	; 24
 17c:	ed e6       	ldi	r30, 0x6D	; 109
 17e:	f0 e0       	ldi	r31, 0x00	; 0
 180:	d7 01       	movw	r26, r14
 182:	01 90       	ld	r0, Z+
 184:	0d 92       	st	X+, r0
 186:	8a 95       	dec	r24
 188:	e1 f7       	brne	.-8      	; 0x182 <main+0x46>
  //  "AT+CMGS="
  uchar SMS[8]="temp:";
 18a:	8e 01       	movw	r16, r28
 18c:	0a 5d       	subi	r16, 0xDA	; 218
 18e:	1f 4f       	sbci	r17, 0xFF	; 255
 190:	86 e0       	ldi	r24, 0x06	; 6
 192:	e5 e8       	ldi	r30, 0x85	; 133
 194:	f0 e0       	ldi	r31, 0x00	; 0
 196:	d8 01       	movw	r26, r16
 198:	01 90       	ld	r0, Z+
 19a:	0d 92       	st	X+, r0
 19c:	8a 95       	dec	r24
 19e:	e1 f7       	brne	.-8      	; 0x198 <main+0x5c>
 1a0:	1d a6       	std	Y+45, r1	; 0x2d
 1a2:	1c a6       	std	Y+44, r1	; 0x2c
  SMS[5]=0x1A;
 1a4:	8a e1       	ldi	r24, 0x1A	; 26
 1a6:	8b a7       	std	Y+43, r24	; 0x2b
  Uart_Init();
 1a8:	0e 94 5a 00 	call	0xb4 <Uart_Init>
  keyboard_Initial();
 1ac:	0e 94 7e 00 	call	0xfc <keyboard_Initial>
  while(1)
  {   
     key=GetKey();
 1b0:	0e 94 85 00 	call	0x10a <GetKey>
     if(key==PLAY_KEYBOARD)
 1b4:	81 30       	cpi	r24, 0x01	; 1
 1b6:	e1 f7       	brne	.-8      	; 0x1b0 <main+0x74>
	 {
	   Uart_PutString(commond_AT);
 1b8:	ce 01       	movw	r24, r28
 1ba:	01 96       	adiw	r24, 0x01	; 1
 1bc:	0e 94 66 00 	call	0xcc <Uart_PutString>
       delay(20);
 1c0:	84 e1       	ldi	r24, 0x14	; 20
 1c2:	0e 94 47 00 	call	0x8e <delay>
       Uart_PutString(AT_CMGF);
 1c6:	c6 01       	movw	r24, r12
 1c8:	0e 94 66 00 	call	0xcc <Uart_PutString>
       delay(20);
 1cc:	84 e1       	ldi	r24, 0x14	; 20
 1ce:	0e 94 47 00 	call	0x8e <delay>
       Uart_PutString(AT_CMGS);
 1d2:	c7 01       	movw	r24, r14
 1d4:	0e 94 66 00 	call	0xcc <Uart_PutString>
       delay(20);
 1d8:	84 e1       	ldi	r24, 0x14	; 20
 1da:	0e 94 47 00 	call	0x8e <delay>
 	   Uart_PutString(SMS);
 1de:	c8 01       	movw	r24, r16
 1e0:	0e 94 66 00 	call	0xcc <Uart_PutString>
	   delay(20);
 1e4:	84 e1       	ldi	r24, 0x14	; 20
 1e6:	0e 94 47 00 	call	0x8e <delay>
 1ea:	e2 cf       	rjmp	.-60     	; 0x1b0 <main+0x74>

⌨️ 快捷键说明

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