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

📄 main.lss

📁 我学习AVR的代码例子
💻 LSS
📖 第 1 页 / 共 5 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00001c3e  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000006  00800060  00001c3e  00001cd2  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000026  00800066  00800066  00001cd8  2**0
                  ALLOC
  3 .noinit       00000000  0080008c  0080008c  00001cd8  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00001cd8  2**0
                  CONTENTS
  5 .stab         000021b4  00000000  00000000  00001cd8  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000b97  00000000  00000000  00003e8c  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:	0c 94 30 00 	jmp	0x60
       4:	0c 94 4b 00 	jmp	0x96
       8:	0c 94 46 08 	jmp	0x108c
       c:	0c 94 4b 00 	jmp	0x96
      10:	0c 94 51 08 	jmp	0x10a2
      14:	0c 94 4b 00 	jmp	0x96
      18:	0c 94 4b 00 	jmp	0x96
      1c:	0c 94 4b 00 	jmp	0x96
      20:	0c 94 6a 08 	jmp	0x10d4
      24:	0c 94 bf 08 	jmp	0x117e
      28:	0c 94 4b 00 	jmp	0x96
      2c:	0c 94 4b 00 	jmp	0x96
      30:	0c 94 4b 00 	jmp	0x96
      34:	0c 94 4b 00 	jmp	0x96
      38:	0c 94 f2 08 	jmp	0x11e4
      3c:	0c 94 4b 00 	jmp	0x96
      40:	0c 94 4b 00 	jmp	0x96
      44:	0c 94 4b 00 	jmp	0x96
      48:	0c 94 4b 00 	jmp	0x96
      4c:	0c 94 4b 00 	jmp	0x96
      50:	0c 94 4b 00 	jmp	0x96

00000054 <S>:
      54:	af 06 6d 4f c6 cb eb 0e ef cf 00 00                 ..mO........

00000060 <__init>:
      60:	11 24       	eor	r1, r1
      62:	1f be       	out	0x3f, r1	; 63
      64:	cf e5       	ldi	r28, 0x5F	; 95
      66:	d4 e0       	ldi	r29, 0x04	; 4
      68:	de bf       	out	0x3e, r29	; 62
      6a:	cd bf       	out	0x3d, r28	; 61

0000006c <__do_copy_data>:
      6c:	10 e0       	ldi	r17, 0x00	; 0
      6e:	a0 e6       	ldi	r26, 0x60	; 96
      70:	b0 e0       	ldi	r27, 0x00	; 0
      72:	ee e3       	ldi	r30, 0x3E	; 62
      74:	fc e1       	ldi	r31, 0x1C	; 28
      76:	02 c0       	rjmp	.+4      	; 0x7c

00000078 <.do_copy_data_loop>:
      78:	05 90       	lpm	r0, Z+
      7a:	0d 92       	st	X+, r0

0000007c <.do_copy_data_start>:
      7c:	a6 36       	cpi	r26, 0x66	; 102
      7e:	b1 07       	cpc	r27, r17
      80:	d9 f7       	brne	.-10     	; 0x78

00000082 <__do_clear_bss>:
      82:	10 e0       	ldi	r17, 0x00	; 0
      84:	a6 e6       	ldi	r26, 0x66	; 102
      86:	b0 e0       	ldi	r27, 0x00	; 0
      88:	01 c0       	rjmp	.+2      	; 0x8c

0000008a <.do_clear_bss_loop>:
      8a:	1d 92       	st	X+, r1

0000008c <.do_clear_bss_start>:
      8c:	ac 38       	cpi	r26, 0x8C	; 140
      8e:	b1 07       	cpc	r27, r17
      90:	e1 f7       	brne	.-8      	; 0x8a
      92:	0c 94 94 0b 	jmp	0x1728

00000096 <__bad_interrupt>:
      96:	0c 94 00 00 	jmp	0x0

0000009a <port_init>:
WORD ADC_rel;
BYTE a,b,c;
void port_init(void)//口方向设置
 {  
   DDRA  = 0x00;
      9a:	1a ba       	out	0x1a, r1	; 26
   PORTA = 0x00;
      9c:	1b ba       	out	0x1b, r1	; 27
   DDRB  = 0xff;
      9e:	8f ef       	ldi	r24, 0xFF	; 255
      a0:	87 bb       	out	0x17, r24	; 23
   DDRC = 0XFC;
      a2:	8c ef       	ldi	r24, 0xFC	; 252
      a4:	84 bb       	out	0x14, r24	; 20
   DDRD  = 0xF0;
      a6:	80 ef       	ldi	r24, 0xF0	; 240
      a8:	81 bb       	out	0x11, r24	; 17
      aa:	08 95       	ret

000000ac <T_init>:
 }
void T_init(void)
 {
   TCCR2=0x00;        //停止定时器2
      ac:	15 bc       	out	0x25, r1	; 37
   TCCR1B=0x00;       //停止定时器1
      ae:	1e bc       	out	0x2e, r1	; 46
   TCCR0=0x00;        //停止定时器0
      b0:	13 be       	out	0x33, r1	; 51
   TCNT2=0X64;        //定时~20ms
      b2:	84 e6       	ldi	r24, 0x64	; 100
      b4:	84 bd       	out	0x24, r24	; 36
   TCNT1H=0xc2;
      b6:	82 ec       	ldi	r24, 0xC2	; 194
      b8:	8d bd       	out	0x2d, r24	; 45
   TCNT1L=0xf7;       //定时0.5s
      ba:	87 ef       	ldi	r24, 0xF7	; 247
      bc:	8c bd       	out	0x2c, r24	; 44
   TCNT0=6;           //定时32ms
      be:	86 e0       	ldi	r24, 0x06	; 6
      c0:	82 bf       	out	0x32, r24	; 50
   TCCR2=0x05;        //1024分频
      c2:	95 e0       	ldi	r25, 0x05	; 5
      c4:	95 bd       	out	0x25, r25	; 37
   TCCR1B=0x04;       //256分频
      c6:	84 e0       	ldi	r24, 0x04	; 4
      c8:	8e bd       	out	0x2e, r24	; 46
   TCCR0=0x05;        //1024分频
      ca:	93 bf       	out	0x33, r25	; 51
      cc:	08 95       	ret

000000ce <Delay>:
 }
void Delay(void)
 {
   unsigned char i;
   for(i=0;i<10;i++); /*用于调整CLK 脉冲宽度*/
      ce:	80 e0       	ldi	r24, 0x00	; 0
      d0:	8f 5f       	subi	r24, 0xFF	; 255
      d2:	8a 30       	cpi	r24, 0x0A	; 10
      d4:	e8 f3       	brcs	.-6      	; 0xd0
      d6:	08 95       	ret

000000d8 <SendBit>:
 }
void SendBit(unsigned char dat,unsigned char bitcnt)
 {
      d8:	0f 93       	push	r16
      da:	1f 93       	push	r17
      dc:	cf 93       	push	r28
      de:	c8 2f       	mov	r28, r24
      e0:	06 2f       	mov	r16, r22
   unsigned char i;
   cli();
      e2:	f8 94       	cli
   for(i=0;i<bitcnt;i++)
      e4:	10 e0       	ldi	r17, 0x00	; 0
      e6:	16 17       	cp	r17, r22
      e8:	78 f4       	brcc	.+30     	; 0x108
     {
       if(( dat & 0X80 ) == 0)
      ea:	cc 23       	and	r28, r28
      ec:	14 f0       	brlt	.+4      	; 0xf2
       PORTB &=(~(1<<MOSI));
      ee:	c5 98       	cbi	0x18, 5	; 24
      f0:	01 c0       	rjmp	.+2      	; 0xf4
       else
       PORTB |=(1<<MOSI); /*发送数据由高位到低位传送*/
      f2:	c5 9a       	sbi	0x18, 5	; 24
       Delay();
      f4:	0e 94 67 00 	call	0xce
       PORTB |=(1<<SCK); /*置时钟线为高通知被控器开始接收数位*/
      f8:	c7 9a       	sbi	0x18, 7	; 24
       Delay();
      fa:	0e 94 67 00 	call	0xce
       PORTB &=(~(1<<SCK)); /*钳住总线准备下一个数据位*/
      fe:	c7 98       	cbi	0x18, 7	; 24
       dat=dat<<1; /*发送数据左移一位*/
     100:	cc 0f       	add	r28, r28
     102:	1f 5f       	subi	r17, 0xFF	; 255
     104:	10 17       	cp	r17, r16
     106:	88 f3       	brcs	.-30     	; 0xea
     }
   sei();
     108:	78 94       	sei
     10a:	cf 91       	pop	r28
     10c:	1f 91       	pop	r17
     10e:	0f 91       	pop	r16
     110:	08 95       	ret

00000112 <Start_spi>:
 }

void Start_spi(void)
 {
   PORTB |=(1<<SS);
     112:	c4 9a       	sbi	0x18, 4	; 24
   PORTB |=(1<<SCK);
     114:	c7 9a       	sbi	0x18, 7	; 24
   PORTB |=(1<<MOSI);
     116:	c5 9a       	sbi	0x18, 5	; 24
   Delay();
     118:	0e 94 67 00 	call	0xce
   PORTB &=(~(1<<SS));PORTB &=(~(1<<SS));
     11c:	c4 98       	cbi	0x18, 4	; 24
     11e:	c4 98       	cbi	0x18, 4	; 24
   PORTB &=(~(1<<SCK));PORTB &=(~(1<<SCK));
     120:	9f e7       	ldi	r25, 0x7F	; 127
     122:	88 b3       	in	r24, 0x18	; 24
     124:	89 23       	and	r24, r25
     126:	88 bb       	out	0x18, r24	; 24
     128:	88 b3       	in	r24, 0x18	; 24
     12a:	89 23       	and	r24, r25
     12c:	88 bb       	out	0x18, r24	; 24
     12e:	08 95       	ret

00000130 <SendByte>:
 }

void SendByte(unsigned char dat)
 {
   SendBit(dat,8); /*发送字节*/
     130:	68 e0       	ldi	r22, 0x08	; 8
     132:	0e 94 6c 00 	call	0xd8
     136:	08 95       	ret

00000138 <SENDCOMA>:
 }

void SENDCOMA(unsigned char com)
 {
     138:	1f 93       	push	r17
     13a:	18 2f       	mov	r17, r24
   Start_spi();
     13c:	0e 94 89 00 	call	0x112
   SendBit(0X80,4); //*发送设置命令ID=100 0*
     140:	64 e0       	ldi	r22, 0x04	; 4
     142:	80 e8       	ldi	r24, 0x80	; 128
     144:	0e 94 6c 00 	call	0xd8
   SendByte(com); //*发送命令字*
     148:	81 2f       	mov	r24, r17
     14a:	0e 94 98 00 	call	0x130
     14e:	1f 91       	pop	r17
     150:	08 95       	ret

00000152 <SENDCOMB>:
 }

void SENDCOMB(unsigned char adr)
 {
     152:	1f 93       	push	r17
     154:	18 2f       	mov	r17, r24
   Start_spi();
     156:	0e 94 89 00 	call	0x112
   SendBit(0XA0,3); /*发送写显示RAM 命令ID=101 */
     15a:	63 e0       	ldi	r22, 0x03	; 3
     15c:	80 ea       	ldi	r24, 0xA0	; 160
     15e:	0e 94 6c 00 	call	0xd8
   SendBit(adr,6); /*指定写入地址*/
     162:	66 e0       	ldi	r22, 0x06	; 6
     164:	81 2f       	mov	r24, r17
     166:	0e 94 6c 00 	call	0xd8
     16a:	1f 91       	pop	r17
     16c:	08 95       	ret

0000016e <disp_init>:
 } 
void disp_init(void)
 {
     16e:	cf 93       	push	r28
     170:	df 93       	push	r29
     172:	cd b7       	in	r28, 0x3d	; 61
     174:	de b7       	in	r29, 0x3e	; 62
     176:	21 97       	sbiw	r28, 0x01	; 1
     178:	0f b6       	in	r0, 0x3f	; 63
     17a:	f8 94       	cli
     17c:	de bf       	out	0x3e, r29	; 62
     17e:	0f be       	out	0x3f, r0	; 63
     180:	cd bf       	out	0x3d, r28	; 61
   volatile unsigned char i;
   SENDCOMA(0X0a); /*禁止WDT溢出标志输出*/
     182:	8a e0       	ldi	r24, 0x0A	; 10
     184:	0e 94 9c 00 	call	0x138
   SENDCOMA(0X52); //设置偏压,背极数 定义1/3 偏压4背极
     188:	82 e5       	ldi	r24, 0x52	; 82
     18a:	0e 94 9c 00 	call	0x138
   SENDCOMA(0X30); //*使用内部256KRC 振荡器*
     18e:	80 e3       	ldi	r24, 0x30	; 48
     190:	0e 94 9c 00 	call	0x138
   SENDCOMA(0X02); //*启动振荡器*    
     194:	82 e0       	ldi	r24, 0x02	; 2
     196:	0e 94 9c 00 	call	0x138
   SENDCOMA(0X06); //LCDON
     19a:	86 e0       	ldi	r24, 0x06	; 6
     19c:	0e 94 9c 00 	call	0x138
   SENDCOMA(0X08);//timer dis
     1a0:	88 e0       	ldi	r24, 0x08	; 8
     1a2:	0e 94 9c 00 	call	0x138
   SENDCOMB(0x00); //*把数据指针指回0 接着写入数据*   
     1a6:	80 e0       	ldi	r24, 0x00	; 0
     1a8:	0e 94 a9 00 	call	0x152
   for(i=0;i<15;i++) /*写入16 字节数据*/
     1ac:	19 82       	std	Y+1, r1	; 0x01
     1ae:	89 81       	ldd	r24, Y+1	; 0x01
     1b0:	8f 30       	cpi	r24, 0x0F	; 15
     1b2:	48 f4       	brcc	.+18     	; 0x1c6
     {
       SendByte(0x0); /*写入数据*/
     1b4:	80 e0       	ldi	r24, 0x00	; 0
     1b6:	0e 94 98 00 	call	0x130
     1ba:	89 81       	ldd	r24, Y+1	; 0x01
     1bc:	8f 5f       	subi	r24, 0xFF	; 255
     1be:	89 83       	std	Y+1, r24	; 0x01
     1c0:	89 81       	ldd	r24, Y+1	; 0x01
     1c2:	8f 30       	cpi	r24, 0x0F	; 15
     1c4:	b8 f3       	brcs	.-18     	; 0x1b4
     1c6:	21 96       	adiw	r28, 0x01	; 1
     1c8:	0f b6       	in	r0, 0x3f	; 63
     1ca:	f8 94       	cli
     1cc:	de bf       	out	0x3e, r29	; 62
     1ce:	0f be       	out	0x3f, r0	; 63
     1d0:	cd bf       	out	0x3d, r28	; 61
     1d2:	df 91       	pop	r29
     1d4:	cf 91       	pop	r28
     1d6:	08 95       	ret

000001d8 <disp_off>:
     }
 }
void disp_off(void)
  {
    SENDCOMA(0X04);//lcdoff
     1d8:	84 e0       	ldi	r24, 0x04	; 4
     1da:	0e 94 9c 00 	call	0x138
    SENDCOMA(0X00);//sys dis
     1de:	80 e0       	ldi	r24, 0x00	; 0
     1e0:	0e 94 9c 00 	call	0x138
     1e4:	08 95       	ret

000001e6 <adc_init>:
    //SENDCOMA(0X0c);//timer en
  }
void adc_init(void)             //ADC初始化
 {
   ADCSRA=0X00;
     1e6:	16 b8       	out	0x06, r1	; 6
   ADMUX=(1<<REFS0);       //选择外部AVCC为基准
     1e8:	80 e4       	ldi	r24, 0x40	; 64
     1ea:	87 b9       	out	0x07, r24	; 7
   ACSR=(1<<ACD);          //关闭模拟比较器
     1ec:	80 e8       	ldi	r24, 0x80	; 128

⌨️ 快捷键说明

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