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

📄 disp.lss

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

disp.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000031c  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000002  00800060  0000031c  000003b0  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000000  00800062  0000031e  000003b2  2**0
                  ALLOC
  3 .noinit       00000000  00800062  00800062  000003b2  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000003b2  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  000003b2  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 000000ca  00000000  00000000  000003c6  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   0000031f  00000000  00000000  00000490  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 0000010a  00000000  00000000  000007af  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   00000308  00000000  00000000  000008b9  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    0000012d  00000000  00000000  00000bc1  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 4b 00 	jmp	0x96
   c:	0c 94 4b 00 	jmp	0x96
  10:	0c 94 4b 00 	jmp	0x96
  14:	0c 94 4b 00 	jmp	0x96
  18:	0c 94 4b 00 	jmp	0x96
  1c:	0c 94 4b 00 	jmp	0x96
  20:	0c 94 32 01 	jmp	0x264
  24:	0c 94 4b 00 	jmp	0x96
  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 4b 00 	jmp	0x96
  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:	ec e1       	ldi	r30, 0x1C	; 28
  74:	f3 e0       	ldi	r31, 0x03	; 3
  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:	a2 36       	cpi	r26, 0x62	; 98
  7e:	b1 07       	cpc	r27, r17
  80:	d9 f7       	brne	.-10     	; 0x78

00000082 <__do_clear_bss>:
  82:	10 e0       	ldi	r17, 0x00	; 0
  84:	a2 e6       	ldi	r26, 0x62	; 98
  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:	a2 36       	cpi	r26, 0x62	; 98
  8e:	b1 07       	cpc	r27, r17
  90:	e1 f7       	brne	.-8      	; 0x8a
  92:	0c 94 7f 01 	jmp	0x2fe

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

0000009a <port_init>:
static U8 k=1,j=1;

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 <delay_us>:
 }
void delay_us(int time)//微秒级延时程序
 {     
   do
	 {
	   time--;
  ac:	01 97       	sbiw	r24, 0x01	; 1
	 }	
  ae:	82 30       	cpi	r24, 0x02	; 2
  b0:	91 05       	cpc	r25, r1
  b2:	e4 f7       	brge	.-8      	; 0xac
  b4:	08 95       	ret

000000b6 <delay_ms>:
   while (time>1);
 }	   
void delay_ms(unsigned int time)//毫秒级延时程序
 {
  b6:	cf 93       	push	r28
  b8:	df 93       	push	r29
  ba:	ec 01       	movw	r28, r24
   while(time!=0)
	 {		
	   delay_us(1000);
	   time--;
  bc:	89 2b       	or	r24, r25
  be:	31 f0       	breq	.+12     	; 0xcc
  c0:	88 ee       	ldi	r24, 0xE8	; 232
  c2:	93 e0       	ldi	r25, 0x03	; 3
  c4:	0e 94 56 00 	call	0xac
  c8:	21 97       	sbiw	r28, 0x01	; 1
  ca:	d1 f7       	brne	.-12     	; 0xc0
  cc:	df 91       	pop	r29
  ce:	cf 91       	pop	r28
  d0:	08 95       	ret

000000d2 <SendBit>:
	 }
 }/*
void Delay()
 {
   unsigned char i;
   for(i=0;i<10;i++); /*用于调整CLK 脉冲宽度*/
 //}
void SendBit(unsigned char dat,unsigned char bitcnt)
 {
  d2:	1f 93       	push	r17
  d4:	cf 93       	push	r28
  d6:	18 2f       	mov	r17, r24
   unsigned char i;
   cli();
  d8:	f8 94       	cli
   for(i=0;i<bitcnt;i++)
  da:	66 23       	and	r22, r22
  dc:	99 f0       	breq	.+38     	; 0x104
  de:	c6 2f       	mov	r28, r22
     {
       if(( dat & 0X80 ) == 0)
  e0:	17 fd       	sbrc	r17, 7
  e2:	02 c0       	rjmp	.+4      	; 0xe8
       PORTB &=(~(1<<MOSI));
  e4:	c5 98       	cbi	0x18, 5	; 24
  e6:	01 c0       	rjmp	.+2      	; 0xea
       else
       PORTB |=(1<<MOSI); /*发送数据由高位到低位传送*/
  e8:	c5 9a       	sbi	0x18, 5	; 24
       //Delay();
	   delay_us(10);
  ea:	8a e0       	ldi	r24, 0x0A	; 10
  ec:	90 e0       	ldi	r25, 0x00	; 0
  ee:	0e 94 56 00 	call	0xac
       PORTB |=(1<<SCK); /*置时钟线为高通知被控器开始接收数位*/
  f2:	c7 9a       	sbi	0x18, 7	; 24
       //Delay();
	   delay_us(10);
  f4:	8a e0       	ldi	r24, 0x0A	; 10
  f6:	90 e0       	ldi	r25, 0x00	; 0
  f8:	0e 94 56 00 	call	0xac
       PORTB &=(~(1<<SCK)); /*钳住总线准备下一个数据位*/
  fc:	c7 98       	cbi	0x18, 7	; 24
       dat=dat<<1; /*发送数据左移一位*/
  fe:	11 0f       	add	r17, r17
 100:	c1 50       	subi	r28, 0x01	; 1
 102:	71 f7       	brne	.-36     	; 0xe0
     }
   sei();
 104:	78 94       	sei
 106:	cf 91       	pop	r28
 108:	1f 91       	pop	r17
 10a:	08 95       	ret

0000010c <Start_spi>:
 }

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

0000012e <SendByte>:
 }

void SendByte(unsigned char dat)
 {
   SendBit(dat,8); /*发送字节*/
 12e:	68 e0       	ldi	r22, 0x08	; 8
 130:	0e 94 69 00 	call	0xd2
 134:	08 95       	ret

00000136 <SENDCOMA>:
 }

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

00000150 <SENDCOMB>:
 }

void SENDCOMB(unsigned char adr)
 {
 150:	1f 93       	push	r17
 152:	18 2f       	mov	r17, r24
   Start_spi();
 154:	0e 94 86 00 	call	0x10c
   SendBit(0XA0,3); /*发送写显示RAM 命令ID=101 */
 158:	63 e0       	ldi	r22, 0x03	; 3
 15a:	80 ea       	ldi	r24, 0xA0	; 160
 15c:	0e 94 69 00 	call	0xd2
   SendBit(adr,6); /*指定写入地址*/
 160:	66 e0       	ldi	r22, 0x06	; 6
 162:	81 2f       	mov	r24, r17
 164:	0e 94 69 00 	call	0xd2

⌨️ 快捷键说明

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