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

📄 tem.lss

📁 DS18B20做的温度计
💻 LSS
📖 第 1 页 / 共 2 页
字号:

tem.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000494  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000001a  00800060  00000494  00000528  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000000  0080007a  000004ae  00000542  2**0
                  ALLOC
  3 .noinit       00000000  0080007a  0080007a  00000542  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000542  2**0
                  CONTENTS
  5 .stab         00001344  00000000  00000000  00000544  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000ad7  00000000  00000000  00001888  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:	e4 e9       	ldi	r30, 0x94	; 148
  68:	f4 e0       	ldi	r31, 0x04	; 4
  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:	aa 37       	cpi	r26, 0x7A	; 122
  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:	aa e7       	ldi	r26, 0x7A	; 122
  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:	aa 37       	cpi	r26, 0x7A	; 122
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 b8 01 	jmp	0x370 <main>

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

0000008e <delay>:

void delay(uint t)  		//1mS延时7.3728M
{ulong i;
  while(t--)
   {for(i=0;i<50000;i++)
  8e:	01 97       	sbiw	r24, 0x01	; 1
  90:	2f ef       	ldi	r18, 0xFF	; 255
  92:	8f 3f       	cpi	r24, 0xFF	; 255
  94:	92 07       	cpc	r25, r18
  96:	59 f0       	breq	.+22     	; 0xae <delay+0x20>
  98:	2f e4       	ldi	r18, 0x4F	; 79
  9a:	33 ec       	ldi	r19, 0xC3	; 195
  9c:	40 e0       	ldi	r20, 0x00	; 0
  9e:	50 e0       	ldi	r21, 0x00	; 0
  a0:	22 53       	subi	r18, 0x32	; 50
  a2:	30 40       	sbci	r19, 0x00	; 0
  a4:	40 40       	sbci	r20, 0x00	; 0
  a6:	50 40       	sbci	r21, 0x00	; 0
  a8:	57 ff       	sbrs	r21, 7
  aa:	fa cf       	rjmp	.-12     	; 0xa0 <delay+0x12>
  ac:	f0 cf       	rjmp	.-32     	; 0x8e <delay>
  ae:	08 95       	ret

000000b0 <busy>:
     ;}
}

void busy(void)		//检查BF信号
{DR=0x00;			//设置为输入	
  b0:	17 ba       	out	0x17, r1	; 23
 do
   {rs_c;rw_s;e_s;}
  b2:	df 98       	cbi	0x1b, 7	; 27
  b4:	de 9a       	sbi	0x1b, 6	; 27
  b6:	dd 9a       	sbi	0x1b, 5	; 27
  b8:	b7 99       	sbic	0x16, 7	; 22
  ba:	fb cf       	rjmp	.-10     	; 0xb2 <busy+0x2>
 while((PP&0x80)!=0);					   //BUSY
 e_c;
  bc:	dd 98       	cbi	0x1b, 5	; 27
 delay(3);
  be:	83 e0       	ldi	r24, 0x03	; 3
  c0:	90 e0       	ldi	r25, 0x00	; 0
  c2:	0e 94 47 00 	call	0x8e <delay>
 DR=0xff;
  c6:	8f ef       	ldi	r24, 0xFF	; 255
  c8:	87 bb       	out	0x17, r24	; 23
  ca:	08 95       	ret

000000cc <w_lcd>:
}

void w_lcd(uchar a,uchar dat_com)		//向LCD写命令或数据,由dat_com决定
 {busy();
  cc:	1f 93       	push	r17
  ce:	cf 93       	push	r28
  d0:	c8 2f       	mov	r28, r24
  d2:	16 2f       	mov	r17, r22
  d4:	0e 94 58 00 	call	0xb0 <busy>
  if(dat_com==0)
  d8:	11 23       	and	r17, r17
  da:	11 f4       	brne	.+4      	; 0xe0 <w_lcd+0x14>
     rs_c;
  dc:	df 98       	cbi	0x1b, 7	; 27
  de:	01 c0       	rjmp	.+2      	; 0xe2 <w_lcd+0x16>
  else rs_s;
  e0:	df 9a       	sbi	0x1b, 7	; 27
  rw_c;
  e2:	de 98       	cbi	0x1b, 6	; 27
  DP=a;
  e4:	c8 bb       	out	0x18, r28	; 24
  e_s;
  e6:	dd 9a       	sbi	0x1b, 5	; 27
  e_c;
  e8:	dd 98       	cbi	0x1b, 5	; 27
  ea:	cf 91       	pop	r28
  ec:	1f 91       	pop	r17
  ee:	08 95       	ret

000000f0 <ww>:
}

void ww(uchar word[16])				//写n个字符
{uchar i;
  f0:	1f 93       	push	r17
  f2:	cf 93       	push	r28
  f4:	df 93       	push	r29
  f6:	ec 01       	movw	r28, r24
 for(i=0;word[i]!='\0';i++)
  f8:	10 e0       	ldi	r17, 0x00	; 0
  fa:	88 81       	ld	r24, Y
  fc:	88 23       	and	r24, r24
  fe:	71 f0       	breq	.+28     	; 0x11c <ww+0x2c>
   w_lcd(word[i],dat);
 100:	fe 01       	movw	r30, r28
 102:	e1 0f       	add	r30, r17
 104:	f1 1d       	adc	r31, r1
 106:	61 e0       	ldi	r22, 0x01	; 1
 108:	80 81       	ld	r24, Z
 10a:	0e 94 66 00 	call	0xcc <w_lcd>
 10e:	1f 5f       	subi	r17, 0xFF	; 255
 110:	fe 01       	movw	r30, r28
 112:	e1 0f       	add	r30, r17
 114:	f1 1d       	adc	r31, r1
 116:	80 81       	ld	r24, Z
 118:	88 23       	and	r24, r24
 11a:	91 f7       	brne	.-28     	; 0x100 <ww+0x10>
 11c:	df 91       	pop	r29
 11e:	cf 91       	pop	r28
 120:	1f 91       	pop	r17
 122:	08 95       	ret

00000124 <wn>:
}

void wn(uchar num)				//写数字
{w_lcd(num+0x30,dat);
 124:	61 e0       	ldi	r22, 0x01	; 1
 126:	80 5d       	subi	r24, 0xD0	; 208
 128:	0e 94 66 00 	call	0xcc <w_lcd>
 12c:	08 95       	ret

0000012e <go>:
}

void go(uchar xxx,uchar yyy)				//光标移到(xxxx,yyy)
{ uchar tmp;
 12e:	98 2f       	mov	r25, r24
  if(yyy==0)
 130:	66 23       	and	r22, r22
 132:	19 f4       	brne	.+6      	; 0x13a <go+0xc>
    tmp=0x80+xxx;
 134:	89 2f       	mov	r24, r25
 136:	80 58       	subi	r24, 0x80	; 128
 138:	02 c0       	rjmp	.+4      	; 0x13e <go+0x10>
  else
    tmp=0xc0+xxx;
 13a:	89 2f       	mov	r24, r25
 13c:	80 54       	subi	r24, 0x40	; 64
  w_lcd(tmp,com);
 13e:	60 e0       	ldi	r22, 0x00	; 0
 140:	0e 94 66 00 	call	0xcc <w_lcd>
 144:	08 95       	ret

00000146 <ini>:
}

void ini(void)							//初始化
{ delay(15);
 146:	8f e0       	ldi	r24, 0x0F	; 15
 148:	90 e0       	ldi	r25, 0x00	; 0
 14a:	0e 94 47 00 	call	0x8e <delay>
  w_lcd(0x38,com);
 14e:	60 e0       	ldi	r22, 0x00	; 0
 150:	88 e3       	ldi	r24, 0x38	; 56
 152:	0e 94 66 00 	call	0xcc <w_lcd>
  delay(5);
 156:	85 e0       	ldi	r24, 0x05	; 5
 158:	90 e0       	ldi	r25, 0x00	; 0
 15a:	0e 94 47 00 	call	0x8e <delay>
  w_lcd(0x38,com);
 15e:	60 e0       	ldi	r22, 0x00	; 0
 160:	88 e3       	ldi	r24, 0x38	; 56
 162:	0e 94 66 00 	call	0xcc <w_lcd>
  delay(5);
 166:	85 e0       	ldi	r24, 0x05	; 5
 168:	90 e0       	ldi	r25, 0x00	; 0
 16a:	0e 94 47 00 	call	0x8e <delay>
  w_lcd(0x38,com);
 16e:	60 e0       	ldi	r22, 0x00	; 0
 170:	88 e3       	ldi	r24, 0x38	; 56
 172:	0e 94 66 00 	call	0xcc <w_lcd>
  delay(10);
 176:	8a e0       	ldi	r24, 0x0A	; 10
 178:	90 e0       	ldi	r25, 0x00	; 0
 17a:	0e 94 47 00 	call	0x8e <delay>
  w_lcd(0x01,com);					//显示清0
 17e:	60 e0       	ldi	r22, 0x00	; 0
 180:	81 e0       	ldi	r24, 0x01	; 1
 182:	0e 94 66 00 	call	0xcc <w_lcd>
 186:	08 95       	ret

00000188 <set>:
  
}
/*显视方式参数说明:
  0:关显视
  1:不显示光标,写一个字符光标加1,指针加1
  2:显示光标,写一个字符光标加1,指针加1
  3:不显示光标,写一个字符光标不变,指针加1,整屏显视左移
  4:显示光标,写一个字符光标不变,指针加1,整屏显视左移
*/
void set(uchar way)					//显视方式设置,其中way是方式参数
{if(way==0)							//关显视
 188:	68 2f       	mov	r22, r24
 18a:	88 23       	and	r24, r24
 18c:	11 f4       	brne	.+4      	; 0x192 <set+0xa>
   w_lcd(0x08,com);
 18e:	88 e0       	ldi	r24, 0x08	; 8
 190:	08 c0       	rjmp	.+16     	; 0x1a2 <set+0x1a>
 else if(way==1)							//不显视光标,光标、数据指针加1
 192:	81 30       	cpi	r24, 0x01	; 1
 194:	49 f4       	brne	.+18     	; 0x1a8 <set+0x20>
   w_lcd(0x0c,com),
 196:	60 e0       	ldi	r22, 0x00	; 0
 198:	8c e0       	ldi	r24, 0x0C	; 12
 19a:	0e 94 66 00 	call	0xcc <w_lcd>
 19e:	60 e0       	ldi	r22, 0x00	; 0
 1a0:	86 e0       	ldi	r24, 0x06	; 6
 1a2:	0e 94 66 00 	call	0xcc <w_lcd>
 1a6:	08 95       	ret
   w_lcd(0x06,com);
 else if(way==2)							//显视光标,光标交烁,光标、数据指针加1;
 1a8:	82 30       	cpi	r24, 0x02	; 2
 1aa:	19 f4       	brne	.+6      	; 0x1b2 <set+0x2a>
   w_lcd(0x0f,com),
 1ac:	60 e0       	ldi	r22, 0x00	; 0
 1ae:	8f e0       	ldi	r24, 0x0F	; 15
 1b0:	f4 cf       	rjmp	.-24     	; 0x19a <set+0x12>
   w_lcd(0x06,com);
 else if(way==3)							//不显视光标,光标不移动,屏幕左移
 1b2:	83 30       	cpi	r24, 0x03	; 3
 1b4:	39 f4       	brne	.+14     	; 0x1c4 <set+0x3c>
   w_lcd(0x0c,com),
 1b6:	60 e0       	ldi	r22, 0x00	; 0
 1b8:	8c e0       	ldi	r24, 0x0C	; 12
 1ba:	0e 94 66 00 	call	0xcc <w_lcd>
 1be:	60 e0       	ldi	r22, 0x00	; 0
 1c0:	87 e0       	ldi	r24, 0x07	; 7
 1c2:	ef cf       	rjmp	.-34     	; 0x1a2 <set+0x1a>
   w_lcd(0x07,com);
 else if(way==4)							//显视光标,光标不移动,屏幕左移
 1c4:	84 30       	cpi	r24, 0x04	; 4
 1c6:	41 f4       	brne	.+16     	; 0x1d8 <set+0x50>
   w_lcd(0x0f,com),
 1c8:	60 e0       	ldi	r22, 0x00	; 0
 1ca:	8f e0       	ldi	r24, 0x0F	; 15
 1cc:	0e 94 66 00 	call	0xcc <w_lcd>
 1d0:	60 e0       	ldi	r22, 0x00	; 0
 1d2:	87 e0       	ldi	r24, 0x07	; 7
 1d4:	0e 94 66 00 	call	0xcc <w_lcd>
 1d8:	08 95       	ret

000001da <wsc>:
   w_lcd(0x07,com);
}
  
/*void ws(uchar str0[40],char str1[40])			//写字符串
{ uchar i;
  ini();		//初始化
  set(1);		//设置显视方式
  go(0,0);
  for(i=0;str0[i]!='\0';i++)
    w_lcd(str0[i],dat);
  go(0,1);
  for(i=0;str1[i]!='\0';i++)
   w_lcd(str1[i],dat);
 } 					  		  					//*/

void wsc(const char str0[40],const char str1[40])			//写字符串
{ uchar i;
 1da:	ef 92       	push	r14
 1dc:	ff 92       	push	r15
 1de:	1f 93       	push	r17
 1e0:	cf 93       	push	r28
 1e2:	df 93       	push	r29
 1e4:	ec 01       	movw	r28, r24
 1e6:	7b 01       	movw	r14, r22
  ini();		//初始化
 1e8:	0e 94 a3 00 	call	0x146 <ini>
  set(1);		//设置显视方式
 1ec:	81 e0       	ldi	r24, 0x01	; 1
 1ee:	0e 94 c4 00 	call	0x188 <set>
  go(0,0);
 1f2:	60 e0       	ldi	r22, 0x00	; 0
 1f4:	86 2f       	mov	r24, r22
 1f6:	0e 94 97 00 	call	0x12e <go>
  for(i=0;str0[i]!='\0';i++)
 1fa:	10 e0       	ldi	r17, 0x00	; 0
 1fc:	88 81       	ld	r24, Y
 1fe:	88 23       	and	r24, r24
 200:	69 f0       	breq	.+26     	; 0x21c <wsc+0x42>
    w_lcd(str0[i],dat);
 202:	fe 01       	movw	r30, r28
 204:	e1 0f       	add	r30, r17
 206:	f1 1d       	adc	r31, r1
 208:	61 e0       	ldi	r22, 0x01	; 1
 20a:	80 81       	ld	r24, Z
 20c:	0e 94 66 00 	call	0xcc <w_lcd>
 210:	1f 5f       	subi	r17, 0xFF	; 255
 212:	fe 01       	movw	r30, r28
 214:	e1 0f       	add	r30, r17
 216:	f1 1d       	adc	r31, r1
 218:	80 81       	ld	r24, Z
 21a:	f1 cf       	rjmp	.-30     	; 0x1fe <wsc+0x24>
  go(0,1);
 21c:	61 e0       	ldi	r22, 0x01	; 1
 21e:	80 e0       	ldi	r24, 0x00	; 0
 220:	0e 94 97 00 	call	0x12e <go>
  for(i=0;str1[i]!='\0';i++)
 224:	10 e0       	ldi	r17, 0x00	; 0
 226:	f7 01       	movw	r30, r14
 228:	80 81       	ld	r24, Z
 22a:	88 23       	and	r24, r24
 22c:	71 f0       	breq	.+28     	; 0x24a <wsc+0x70>
   w_lcd(str1[i],dat);
 22e:	f7 01       	movw	r30, r14
 230:	e1 0f       	add	r30, r17
 232:	f1 1d       	adc	r31, r1
 234:	61 e0       	ldi	r22, 0x01	; 1
 236:	80 81       	ld	r24, Z
 238:	0e 94 66 00 	call	0xcc <w_lcd>
 23c:	1f 5f       	subi	r17, 0xFF	; 255
 23e:	f7 01       	movw	r30, r14
 240:	e1 0f       	add	r30, r17
 242:	f1 1d       	adc	r31, r1
 244:	80 81       	ld	r24, Z
 246:	88 23       	and	r24, r24
 248:	91 f7       	brne	.-28     	; 0x22e <wsc+0x54>
 24a:	df 91       	pop	r29
 24c:	cf 91       	pop	r28
 24e:	1f 91       	pop	r17
 250:	ff 90       	pop	r15
 252:	ef 90       	pop	r14
 254:	08 95       	ret

00000256 <ini_ds>:
#define Q_c DDRD|=0x08	//DQ =0
#define Q_a (PIND&0x08)	//read DQ

void ini_ds(void)
{   DDRD  &= ~0x08;   // 输入模式(上电时为高电平) 
 256:	8b 98       	cbi	0x11, 3	; 17
    PORTD &= ~0x08;   // 输出锁存器写0,以后不再更改 
 258:	93 98       	cbi	0x12, 3	; 18
 25a:	08 95       	ret

0000025c <rt_ds>:
} 

uchar rt_ds(void)		//rest ds18b20
{uchar ret;	//return data
 ret=0;
 Q_c;
 25c:	8b 9a       	sbi	0x11, 3	; 17
    milliseconds can be achieved.
 */

⌨️ 快捷键说明

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