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

📄 main.lss

📁 8个数码管显示时钟程序,LED数字钟,流水灯程序,红外遥控,键控看门狗程序
💻 LSS
📖 第 1 页 / 共 3 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000474  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000006c  00800060  00000474  00000508  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000000a  008000cc  008000cc  00000574  2**0
                  ALLOC
  3 .noinit       00000000  008000d6  008000d6  00000574  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000574  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  00000574  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 00000187  00000000  00000000  00000588  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   00000514  00000000  00000000  0000070f  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 00000187  00000000  00000000  00000c23  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   0000060d  00000000  00000000  00000daa  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    000001fc  00000000  00000000  000013b7  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	10 c0       	rjmp	.+32     	; 0x22
   2:	29 c0       	rjmp	.+82     	; 0x56
   4:	28 c0       	rjmp	.+80     	; 0x56
   6:	27 c0       	rjmp	.+78     	; 0x56
   8:	26 c0       	rjmp	.+76     	; 0x56
   a:	25 c0       	rjmp	.+74     	; 0x56
   c:	24 c0       	rjmp	.+72     	; 0x56
   e:	23 c0       	rjmp	.+70     	; 0x56
  10:	22 c0       	rjmp	.+68     	; 0x56
  12:	21 c0       	rjmp	.+66     	; 0x56
  14:	20 c0       	rjmp	.+64     	; 0x56
  16:	1f c0       	rjmp	.+62     	; 0x56
  18:	1e c0       	rjmp	.+60     	; 0x56
  1a:	1d c0       	rjmp	.+58     	; 0x56
  1c:	1c c0       	rjmp	.+56     	; 0x56
  1e:	1b c0       	rjmp	.+54     	; 0x56
  20:	1a c0       	rjmp	.+52     	; 0x56

00000022 <__ctors_end>:
  22:	11 24       	eor	r1, r1
  24:	1f be       	out	0x3f, r1	; 63
  26:	cf e5       	ldi	r28, 0x5F	; 95
  28:	d2 e0       	ldi	r29, 0x02	; 2
  2a:	de bf       	out	0x3e, r29	; 62
  2c:	cd bf       	out	0x3d, r28	; 61

0000002e <__do_copy_data>:
  2e:	10 e0       	ldi	r17, 0x00	; 0
  30:	a0 e6       	ldi	r26, 0x60	; 96
  32:	b0 e0       	ldi	r27, 0x00	; 0
  34:	e4 e7       	ldi	r30, 0x74	; 116
  36:	f4 e0       	ldi	r31, 0x04	; 4
  38:	02 c0       	rjmp	.+4      	; 0x3e

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

0000003e <.do_copy_data_start>:
  3e:	ac 3c       	cpi	r26, 0xCC	; 204
  40:	b1 07       	cpc	r27, r17
  42:	d9 f7       	brne	.-10     	; 0x3a

00000044 <__do_clear_bss>:
  44:	10 e0       	ldi	r17, 0x00	; 0
  46:	ac ec       	ldi	r26, 0xCC	; 204
  48:	b0 e0       	ldi	r27, 0x00	; 0
  4a:	01 c0       	rjmp	.+2      	; 0x4e

0000004c <.do_clear_bss_loop>:
  4c:	1d 92       	st	X+, r1

0000004e <.do_clear_bss_start>:
  4e:	a6 3d       	cpi	r26, 0xD6	; 214
  50:	b1 07       	cpc	r27, r17
  52:	e1 f7       	brne	.-8      	; 0x4c
  54:	e3 c1       	rjmp	.+966    	; 0x41c

00000056 <__bad_interrupt>:
  56:	d4 cf       	rjmp	.-88     	; 0x0

00000058 <delay_nms>:
/********************************************************/    
void delay_nms(uint n)        
   { 
      uint i=0 ; 
      for (i=0 ;i<n ;i++) 
  58:	00 97       	sbiw	r24, 0x00	; 0
  5a:	41 f0       	breq	.+16     	; 0x6c
  5c:	9c 01       	movw	r18, r24
    milliseconds can be achieved.
 */
static __inline__ void
_delay_loop_2(uint16_t __count)
{
  5e:	80 ed       	ldi	r24, 0xD0	; 208
  60:	97 e0       	ldi	r25, 0x07	; 7
	__asm__ volatile (
  62:	01 97       	sbiw	r24, 0x01	; 1
  64:	f1 f7       	brne	.-4      	; 0x62
  66:	21 50       	subi	r18, 0x01	; 1
  68:	30 40       	sbci	r19, 0x00	; 0
  6a:	c9 f7       	brne	.-14     	; 0x5e
  6c:	08 95       	ret

0000006e <Delay>:
    milliseconds can be achieved.
 */
static __inline__ void
_delay_loop_2(uint16_t __count)
{
  6e:	88 0f       	add	r24, r24
  70:	99 1f       	adc	r25, r25
	__asm__ volatile (
  72:	01 97       	sbiw	r24, 0x01	; 1
  74:	f1 f7       	brne	.-4      	; 0x72
  76:	08 95       	ret

00000078 <beep>:
      _delay_loop_2(250*FREQ) ;
   }
 
/********************************************************/
/*                                                      */
/* y*us延时函数                                         */
/*                                                      */
/********************************************************/   
void  Delay(uint y)
  { 
    _delay_loop_2(2*y);
  }
  
/********************************************************/
/*                                                      */
/* 蜂鸣器驱动函数                                       */
/*                                                      */
/********************************************************/
void beep(void)
  {
  78:	cf 93       	push	r28
  7a:	c3 e6       	ldi	r28, 0x63	; 99
    uchar i;
    for (i=0;i<100;i++)
    {
      PORTD&=~_BV(BEEP);
  7c:	97 98       	cbi	0x12, 7	; 18
      Delay(500);
  7e:	84 ef       	ldi	r24, 0xF4	; 244
  80:	91 e0       	ldi	r25, 0x01	; 1
  82:	f5 df       	rcall	.-22     	; 0x6e
      PORTD=_BV(BEEP);
  84:	80 e8       	ldi	r24, 0x80	; 128
  86:	82 bb       	out	0x12, r24	; 18
      Delay(500);
  88:	84 ef       	ldi	r24, 0xF4	; 244
  8a:	91 e0       	ldi	r25, 0x01	; 1
  8c:	f0 df       	rcall	.-32     	; 0x6e
  8e:	c1 50       	subi	r28, 0x01	; 1
  90:	c7 ff       	sbrs	r28, 7
  92:	f4 cf       	rjmp	.-24     	; 0x7c
    } 
    PORTD|=_BV(BEEP);           //关闭蜂鸣器
  94:	97 9a       	sbi	0x12, 7	; 18
	delay_nms(200); 
  96:	88 ec       	ldi	r24, 0xC8	; 200
  98:	90 e0       	ldi	r25, 0x00	; 0
  9a:	de df       	rcall	.-68     	; 0x58
  9c:	cf 91       	pop	r28
  9e:	08 95       	ret

000000a0 <init_io>:
  } 
   
/********************************************************/
/*                                                      */
/* IO口初始化                                            */
/*                                                      */
/********************************************************/
void  init_io(void)
  {
    DDRA=0xFF;       //置PA口输出
  a0:	8f ef       	ldi	r24, 0xFF	; 255
  a2:	8a bb       	out	0x1a, r24	; 26
    PORTA=0xFF;      //PA口设置内部上拉电阻 
  a4:	8b bb       	out	0x1b, r24	; 27
    DDRB=0xFF;       //置PB口输出
  a6:	87 bb       	out	0x17, r24	; 23
    PORTB=0xFF;      //PB口设置内部上拉电阻
  a8:	88 bb       	out	0x18, r24	; 24
    DDRC=0xFF;       //置PC口输出
  aa:	84 bb       	out	0x14, r24	; 20
    PORTC=0xFF;      //PC口设置内部上拉电阻
  ac:	85 bb       	out	0x15, r24	; 21
    DDRD=0xFF;       //置PD口输出
  ae:	81 bb       	out	0x11, r24	; 17
    PORTD=0xFF;      //PD口设置内部上拉电阻
  b0:	82 bb       	out	0x12, r24	; 18
  b2:	08 95       	ret

000000b4 <Init_DS18B20>:
  }

/*********************************************************/
/*                                                       */
/* 初始化DS18B20                                         */ 
/*                                                       */ 
/*********************************************************/
int Init_DS18B20(void)
{    
    PORTD|=_BV(DQ);       //DQ复位
  b4:	93 9a       	sbi	0x12, 3	; 18
    Delay(70);            //稍做延时70us    
  b6:	86 e4       	ldi	r24, 0x46	; 70
  b8:	90 e0       	ldi	r25, 0x00	; 0
  ba:	d9 df       	rcall	.-78     	; 0x6e

    PORTD&=~_BV(DQ);      //将DQ拉低  
  bc:	93 98       	cbi	0x12, 3	; 18
    Delay(780);           //精确延时780us 大于 480us
  be:	8c e0       	ldi	r24, 0x0C	; 12
  c0:	93 e0       	ldi	r25, 0x03	; 3
  c2:	d5 df       	rcall	.-86     	; 0x6e
    PORTD|=_BV(DQ);       //拉高总线
  c4:	93 9a       	sbi	0x12, 3	; 18
    
    DDRD&=~_BV(DQ);       //置PD3为输入
  c6:	8b 98       	cbi	0x11, 3	; 17
    Delay(70);            //稍做延时
  c8:	86 e4       	ldi	r24, 0x46	; 70
  ca:	90 e0       	ldi	r25, 0x00	; 0
  cc:	d0 df       	rcall	.-96     	; 0x6e
   
    if(PIND&_BV(DQ))      //如果=0则初始化成功 =1则初始化失败
  ce:	83 9b       	sbis	0x10, 3	; 16
  d0:	04 c0       	rjmp	.+8      	; 0xda
     presence = 1;
  d2:	81 e0       	ldi	r24, 0x01	; 1
  d4:	80 93 d4 00 	sts	0x00D4, r24
  d8:	02 c0       	rjmp	.+4      	; 0xde
    else  
	 presence = 0;
  da:	10 92 d4 00 	sts	0x00D4, r1
          
    Delay(870);           //精确延时870us
  de:	86 e6       	ldi	r24, 0x66	; 102
  e0:	93 e0       	ldi	r25, 0x03	; 3
  e2:	c5 df       	rcall	.-118    	; 0x6e
    DDRD  |=_BV(DQ);      //置PD3为输出 
  e4:	8b 9a       	sbi	0x11, 3	; 17
    PORTD |=_BV(DQ);      //释放总线 
  e6:	93 9a       	sbi	0x12, 3	; 18
     
    return(presence);    //返回信号,0=presence,1= no presence
  e8:	80 91 d4 00 	lds	r24, 0x00D4
}
  ec:	99 27       	eor	r25, r25
  ee:	08 95       	ret

000000f0 <ReadOneChar>:
/*********************************************************/
/*                                                       */
/* 读一个字节                                            */
/*                                                       */
/*********************************************************/
int ReadOneChar(void)
 {
  f0:	1f 93       	push	r17
  f2:	cf 93       	push	r28
    uchar i = 0;
  f4:	c0 e0       	ldi	r28, 0x00	; 0
    uchar dat = 0;

    for (i = 8; i > 0; i--)
  f6:	18 e0       	ldi	r17, 0x08	; 8
    {
      PORTD&=~_BV(DQ);      //总线为低电平
  f8:	93 98       	cbi	0x12, 3	; 18
      dat >>= 1;
  fa:	c6 95       	lsr	r28
    
      PORTD|=_BV(DQ);       //总线为高电平(释放总线)   
  fc:	93 9a       	sbi	0x12, 3	; 18
      DDRD&=~_BV(DQ);       //置PD3为输入
  fe:	8b 98       	cbi	0x11, 3	; 17
        
      if(PIND&_BV(DQ))
 100:	83 99       	sbic	0x10, 3	; 16
      dat |= 0x80;
 102:	c0 68       	ori	r28, 0x80	; 128
      Delay(70);
 104:	86 e4       	ldi	r24, 0x46	; 70
 106:	90 e0       	ldi	r25, 0x00	; 0
 108:	b2 df       	rcall	.-156    	; 0x6e
      DDRD |=_BV(DQ);  
 10a:	8b 9a       	sbi	0x11, 3	; 17
      PORTD|=_BV(DQ);  
 10c:	93 9a       	sbi	0x12, 3	; 18
 10e:	11 50       	subi	r17, 0x01	; 1
 110:	99 f7       	brne	.-26     	; 0xf8
    }
    return (dat);
 }
 112:	8c 2f       	mov	r24, r28
 114:	99 27       	eor	r25, r25
 116:	cf 91       	pop	r28
 118:	1f 91       	pop	r17
 11a:	08 95       	ret

0000011c <WriteOneChar>:

/**********************************************************/
/*                                                        */
/* 写一个字节                                             */
/*                                                        */
/**********************************************************/
void WriteOneChar(uchar dat)
{
 11c:	1f 93       	push	r17
 11e:	cf 93       	push	r28
 120:	c8 2f       	mov	r28, r24
  uchar i = 0;
  
  for (i = 8; i > 0; i--)
 122:	18 e0       	ldi	r17, 0x08	; 8
  {
    PORTD&=~_BV(DQ);
 124:	93 98       	cbi	0x12, 3	; 18
 
    if(dat&0x01)
 126:	c0 ff       	sbrs	r28, 0
 128:	02 c0       	rjmp	.+4      	; 0x12e
     PORTD|=_BV(DQ);      //写"1" 
 12a:	93 9a       	sbi	0x12, 3	; 18
 12c:	01 c0       	rjmp	.+2      	; 0x130
	else     
	 PORTD&=~_BV(DQ);     //写"0"
 12e:	93 98       	cbi	0x12, 3	; 18

    Delay(70);
 130:	86 e4       	ldi	r24, 0x46	; 70
 132:	90 e0       	ldi	r25, 0x00	; 0
 134:	9c df       	rcall	.-200    	; 0x6e

⌨️ 快捷键说明

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