main.lss

来自「avr的I/O、串口、定时器/计数器、外部中断、LCD等的例程」· LSS 代码 · 共 170 行

LSS
170
字号

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000000d6  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  000000d6  0000016a  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000001  00800060  00800060  0000016a  2**0
                  ALLOC
  3 .noinit       00000000  00800061  00800061  0000016a  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  0000016a  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  0000016a  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 00000032  00000000  00000000  0000017e  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   0000014e  00000000  00000000  000001b0  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 000000ea  00000000  00000000  000002fe  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   000000e7  00000000  00000000  000003e8  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    000000aa  00000000  00000000  000004cf  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54
   4:	0c 94 45 00 	jmp	0x8a
   8:	0c 94 45 00 	jmp	0x8a
   c:	0c 94 45 00 	jmp	0x8a
  10:	0c 94 45 00 	jmp	0x8a
  14:	0c 94 45 00 	jmp	0x8a
  18:	0c 94 45 00 	jmp	0x8a
  1c:	0c 94 45 00 	jmp	0x8a
  20:	0c 94 45 00 	jmp	0x8a
  24:	0c 94 45 00 	jmp	0x8a
  28:	0c 94 45 00 	jmp	0x8a
  2c:	0c 94 45 00 	jmp	0x8a
  30:	0c 94 45 00 	jmp	0x8a
  34:	0c 94 45 00 	jmp	0x8a
  38:	0c 94 45 00 	jmp	0x8a
  3c:	0c 94 45 00 	jmp	0x8a
  40:	0c 94 45 00 	jmp	0x8a
  44:	0c 94 45 00 	jmp	0x8a
  48:	0c 94 45 00 	jmp	0x8a
  4c:	0c 94 45 00 	jmp	0x8a
  50:	0c 94 45 00 	jmp	0x8a

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:	e6 ed       	ldi	r30, 0xD6	; 214
  68:	f0 e0       	ldi	r31, 0x00	; 0
  6a:	02 c0       	rjmp	.+4      	; 0x70

0000006c <.do_copy_data_loop>:
  6c:	05 90       	lpm	r0, Z+
  6e:	0d 92       	st	X+, r0

00000070 <.do_copy_data_start>:
  70:	a0 36       	cpi	r26, 0x60	; 96
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	a0 e6       	ldi	r26, 0x60	; 96
  7a:	b0 e0       	ldi	r27, 0x00	; 0
  7c:	01 c0       	rjmp	.+2      	; 0x80

0000007e <.do_clear_bss_loop>:
  7e:	1d 92       	st	X+, r1

00000080 <.do_clear_bss_start>:
  80:	a1 36       	cpi	r26, 0x61	; 97
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e
  86:	0c 94 59 00 	jmp	0xb2

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

0000008e <delay_nms>:
//volatile uchar T0OCR;		//设置T0的时间值
uchar flag;
void delay_nms        (uint n);
void delay_nms(uint n)       //N ms延时函数
  {
  8e:	cf 93       	push	r28
  90:	df 93       	push	r29
	uint i=0;
	for (i=0;i<n;i++)
  92:	00 97       	sbiw	r24, 0x00	; 0
  94:	59 f0       	breq	.+22     	; 0xac
  96:	a0 ed       	ldi	r26, 0xD0	; 208
  98:	b7 e0       	ldi	r27, 0x07	; 7
  9a:	c0 e0       	ldi	r28, 0x00	; 0
  9c:	d0 e0       	ldi	r29, 0x00	; 0
  9e:	9c 01       	movw	r18, r24
 */
static __inline__ void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  a0:	cd 01       	movw	r24, r26
  a2:	01 97       	sbiw	r24, 0x01	; 1
  a4:	f1 f7       	brne	.-4      	; 0xa2
  a6:	21 50       	subi	r18, 0x01	; 1
  a8:	30 40       	sbci	r19, 0x00	; 0
  aa:	d1 f7       	brne	.-12     	; 0xa0
  ac:	df 91       	pop	r29
  ae:	cf 91       	pop	r28
  b0:	08 95       	ret

000000b2 <main>:
	_delay_ms(1);
  }
/*
    LCD_EN_PORT |= LCD_EN;    //EN=1
    LCD_EN_PORT &= ~LCD_EN;   //EN=0
	CONTROL_PORT |= LCD_RS | LCD_EN | LCD_RW; //设置控制输出
	usigned int k;
		k=0x1234;
		TCNT=k;
		k=TCNT1;
*/

//#pragma interrupt_handler TIMER0:17// 定时器/计数器0溢出中断向量 
int main(void)
{
  b2:	cf e5       	ldi	r28, 0x5F	; 95
  b4:	d4 e0       	ldi	r29, 0x04	; 4
  b6:	de bf       	out	0x3e, r29	; 62
  b8:	cd bf       	out	0x3d, r28	; 61
	PORTA=0xFF;	
  ba:	8f ef       	ldi	r24, 0xFF	; 255
  bc:	8b bb       	out	0x1b, r24	; 27
  //flag=1;		
 //DDRA=0xFF;				//PA口设为输出高电平,灯灭
 CONTROL_PORT |= LCD_EN; //out
  be:	d0 9a       	sbi	0x1a, 0	; 26
 while(1)
 {
	LCD_EN_PORT |= LCD_EN;    //EN=1
  c0:	d8 9a       	sbi	0x1b, 0	; 27
	delay_nms(1000);	//延时 30*10=300毫秒,可自行调节
  c2:	88 ee       	ldi	r24, 0xE8	; 232
  c4:	93 e0       	ldi	r25, 0x03	; 3
  c6:	0e 94 47 00 	call	0x8e
	LCD_EN_PORT &= ~LCD_EN;   //EN=0
  ca:	d8 98       	cbi	0x1b, 0	; 27
	delay_nms(1000);	//延时 30*10=300毫秒,可自行调节
  cc:	88 ee       	ldi	r24, 0xE8	; 232
  ce:	93 e0       	ldi	r25, 0x03	; 3
  d0:	0e 94 47 00 	call	0x8e
  d4:	f5 cf       	rjmp	.-22     	; 0xc0

⌨️ 快捷键说明

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