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

📄 keyboard.lss

📁 AVR Devolpment Board
💻 LSS
📖 第 1 页 / 共 2 页
字号:

keyboard.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000002a0  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  000002a0  00000334  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000000b  00800060  00800060  00000334  2**0
                  ALLOC
  3 .noinit       00000000  0080006b  0080006b  00000334  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000334  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  00000334  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  000006a0  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  00000724  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 00000051  00000000  00000000  00000738  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000274  00000000  00000000  00000789  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 00000127  00000000  00000000  000009fd  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000002a9  00000000  00000000  00000b24  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    00000168  00000000  00000000  00000dcd  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 32 00 	jmp	0x64 <__init>
   4:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
   8:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
   c:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  10:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  14:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  18:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  1c:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  20:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  24:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  28:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  2c:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  30:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  34:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  38:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  3c:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  40:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  44:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  48:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  4c:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>
  50:	0c 94 4d 00 	jmp	0x9a <__bad_interrupt>

00000054 <SegCode>:
  54:	3f 06 5b 4f 66 6d 7d 07 7f 6f 77 7c 39 5e 79 71     ?.[Ofm}..ow|9^yq

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

00000070 <__do_copy_data>:
  70:	10 e0       	ldi	r17, 0x00	; 0
  72:	a0 e6       	ldi	r26, 0x60	; 96
  74:	b0 e0       	ldi	r27, 0x00	; 0
  76:	e0 ea       	ldi	r30, 0xA0	; 160
  78:	f2 e0       	ldi	r31, 0x02	; 2
  7a:	02 c0       	rjmp	.+4      	; 0x80 <.do_copy_data_start>

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

00000080 <.do_copy_data_start>:
  80:	a0 36       	cpi	r26, 0x60	; 96
  82:	b1 07       	cpc	r27, r17
  84:	d9 f7       	brne	.-10     	; 0x7c <.do_copy_data_loop>

00000086 <__do_clear_bss>:
  86:	10 e0       	ldi	r17, 0x00	; 0
  88:	a0 e6       	ldi	r26, 0x60	; 96
  8a:	b0 e0       	ldi	r27, 0x00	; 0
  8c:	01 c0       	rjmp	.+2      	; 0x90 <.do_clear_bss_start>

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

00000090 <.do_clear_bss_start>:
  90:	ab 36       	cpi	r26, 0x6B	; 107
  92:	b1 07       	cpc	r27, r17
  94:	e1 f7       	brne	.-8      	; 0x8e <.do_clear_bss_loop>
  96:	0c 94 39 01 	jmp	0x272 <main>

0000009a <__bad_interrupt>:
  9a:	0c 94 00 00 	jmp	0x0 <__vectors>

0000009e <read_keyboard>:

char read_keyboard()
{
	static char key_state = 0, key_value, key_line;
	char key_return = No_key,i;
  9e:	6f ef       	ldi	r22, 0xFF	; 255
	switch (key_state)
  a0:	50 91 68 00 	lds	r21, 0x0068
  a4:	85 2f       	mov	r24, r21
  a6:	99 27       	eor	r25, r25
  a8:	81 30       	cpi	r24, 0x01	; 1
  aa:	91 05       	cpc	r25, r1
  ac:	11 f1       	breq	.+68     	; 0xf2 <read_keyboard+0x54>
  ae:	82 30       	cpi	r24, 0x02	; 2
  b0:	91 05       	cpc	r25, r1
  b2:	1c f4       	brge	.+6      	; 0xba <read_keyboard+0x1c>
  b4:	89 2b       	or	r24, r25
  b6:	29 f0       	breq	.+10     	; 0xc2 <read_keyboard+0x24>
  b8:	a8 c0       	rjmp	.+336    	; 0x20a <read_keyboard+0x16c>
  ba:	02 97       	sbiw	r24, 0x02	; 2
  bc:	09 f4       	brne	.+2      	; 0xc0 <read_keyboard+0x22>
  be:	9a c0       	rjmp	.+308    	; 0x1f4 <read_keyboard+0x156>
  c0:	a4 c0       	rjmp	.+328    	; 0x20a <read_keyboard+0x16c>
	{
		case 0:
			key_line = 0b00010000;
  c2:	80 e1       	ldi	r24, 0x10	; 16
  c4:	80 93 6a 00 	sts	0x006A, r24
			for (i=0; i<4; i++) // 扫描键盘
  c8:	20 e0       	ldi	r18, 0x00	; 0
			{
				PORTD = ~key_line; // 输出行线电平
  ca:	90 91 6a 00 	lds	r25, 0x006A
  ce:	89 2f       	mov	r24, r25
  d0:	80 95       	com	r24
  d2:	82 bb       	out	0x12, r24	; 18
				PORTD = ~key_line; // 必须送2次!!!(注1)
  d4:	82 bb       	out	0x12, r24	; 18
				key_value = Key_mask & PIND; // 读列电平
  d6:	80 b3       	in	r24, 0x10	; 16
  d8:	8f 70       	andi	r24, 0x0F	; 15
  da:	80 93 69 00 	sts	0x0069, r24
				if (key_value == Key_mask)
  de:	8f 30       	cpi	r24, 0x0F	; 15
  e0:	09 f0       	breq	.+2      	; 0xe4 <read_keyboard+0x46>
  e2:	82 c0       	rjmp	.+260    	; 0x1e8 <read_keyboard+0x14a>
					key_line <<= 1; // 没有按键,继续扫描
  e4:	99 0f       	add	r25, r25
  e6:	90 93 6a 00 	sts	0x006A, r25
  ea:	2f 5f       	subi	r18, 0xFF	; 255
  ec:	24 30       	cpi	r18, 0x04	; 4
  ee:	68 f3       	brcs	.-38     	; 0xca <read_keyboard+0x2c>
				else
				{
					key_state++; // 有按键,停止扫描
					break; // 转消抖确认状态
				}
			}
			break;
  f0:	8c c0       	rjmp	.+280    	; 0x20a <read_keyboard+0x16c>
		case 1:
			if (key_value == (Key_mask & PIND)) // 再次读列电平,
  f2:	40 91 69 00 	lds	r20, 0x0069
  f6:	24 2f       	mov	r18, r20
  f8:	33 27       	eor	r19, r19
  fa:	80 b3       	in	r24, 0x10	; 16
  fc:	99 27       	eor	r25, r25
  fe:	8f 70       	andi	r24, 0x0F	; 15
 100:	90 70       	andi	r25, 0x00	; 0
 102:	28 17       	cp	r18, r24
 104:	39 07       	cpc	r19, r25
 106:	09 f0       	breq	.+2      	; 0x10a <read_keyboard+0x6c>
 108:	71 c0       	rjmp	.+226    	; 0x1ec <read_keyboard+0x14e>
			{
				switch (key_line | key_value) // 与状态0的相同,确认按键
 10a:	80 91 6a 00 	lds	r24, 0x006A
 10e:	84 2b       	or	r24, r20
 110:	99 27       	eor	r25, r25
 112:	8e 32       	cpi	r24, 0x2E	; 46
 114:	91 05       	cpc	r25, r1
 116:	09 f4       	brne	.+2      	; 0x11a <read_keyboard+0x7c>
 118:	50 c0       	rjmp	.+160    	; 0x1ba <read_keyboard+0x11c>
 11a:	8f 32       	cpi	r24, 0x2F	; 47
 11c:	91 05       	cpc	r25, r1
 11e:	04 f5       	brge	.+64     	; 0x160 <read_keyboard+0xc2>
 120:	8e 31       	cpi	r24, 0x1E	; 30
 122:	91 05       	cpc	r25, r1
 124:	09 f4       	brne	.+2      	; 0x128 <read_keyboard+0x8a>
 126:	41 c0       	rjmp	.+130    	; 0x1aa <read_keyboard+0x10c>
 128:	8f 31       	cpi	r24, 0x1F	; 31
 12a:	91 05       	cpc	r25, r1
 12c:	6c f4       	brge	.+26     	; 0x148 <read_keyboard+0xaa>
 12e:	8b 31       	cpi	r24, 0x1B	; 27
 130:	91 05       	cpc	r25, r1
 132:	09 f4       	brne	.+2      	; 0x136 <read_keyboard+0x98>
 134:	3e c0       	rjmp	.+124    	; 0x1b2 <read_keyboard+0x114>
 136:	8c 31       	cpi	r24, 0x1C	; 28
 138:	91 05       	cpc	r25, r1
 13a:	1c f4       	brge	.+6      	; 0x142 <read_keyboard+0xa4>
 13c:	47 97       	sbiw	r24, 0x17	; 23
 13e:	d9 f1       	breq	.+118    	; 0x1b6 <read_keyboard+0x118>
 140:	53 c0       	rjmp	.+166    	; 0x1e8 <read_keyboard+0x14a>
 142:	4d 97       	sbiw	r24, 0x1d	; 29
 144:	a1 f1       	breq	.+104    	; 0x1ae <read_keyboard+0x110>
 146:	50 c0       	rjmp	.+160    	; 0x1e8 <read_keyboard+0x14a>
 148:	8b 32       	cpi	r24, 0x2B	; 43
 14a:	91 05       	cpc	r25, r1
 14c:	d1 f1       	breq	.+116    	; 0x1c2 <read_keyboard+0x124>
 14e:	8c 32       	cpi	r24, 0x2C	; 44
 150:	91 05       	cpc	r25, r1
 152:	1c f4       	brge	.+6      	; 0x15a <read_keyboard+0xbc>
 154:	87 97       	sbiw	r24, 0x27	; 39
 156:	b9 f1       	breq	.+110    	; 0x1c6 <read_keyboard+0x128>
 158:	47 c0       	rjmp	.+142    	; 0x1e8 <read_keyboard+0x14a>
 15a:	8d 97       	sbiw	r24, 0x2d	; 45
 15c:	81 f1       	breq	.+96     	; 0x1be <read_keyboard+0x120>
 15e:	44 c0       	rjmp	.+136    	; 0x1e8 <read_keyboard+0x14a>
 160:	8e 34       	cpi	r24, 0x4E	; 78
 162:	91 05       	cpc	r25, r1
 164:	91 f1       	breq	.+100    	; 0x1ca <read_keyboard+0x12c>
 166:	8f 34       	cpi	r24, 0x4F	; 79
 168:	91 05       	cpc	r25, r1
 16a:	74 f4       	brge	.+28     	; 0x188 <read_keyboard+0xea>
 16c:	8b 34       	cpi	r24, 0x4B	; 75
 16e:	91 05       	cpc	r25, r1
 170:	81 f1       	breq	.+96     	; 0x1d2 <read_keyboard+0x134>
 172:	8c 34       	cpi	r24, 0x4C	; 76
 174:	91 05       	cpc	r25, r1
 176:	24 f4       	brge	.+8      	; 0x180 <read_keyboard+0xe2>
 178:	87 34       	cpi	r24, 0x47	; 71
 17a:	91 05       	cpc	r25, r1
 17c:	61 f1       	breq	.+88     	; 0x1d6 <read_keyboard+0x138>
 17e:	34 c0       	rjmp	.+104    	; 0x1e8 <read_keyboard+0x14a>
 180:	8d 34       	cpi	r24, 0x4D	; 77
 182:	91 05       	cpc	r25, r1
 184:	21 f1       	breq	.+72     	; 0x1ce <read_keyboard+0x130>
 186:	30 c0       	rjmp	.+96     	; 0x1e8 <read_keyboard+0x14a>
 188:	8b 38       	cpi	r24, 0x8B	; 139
 18a:	91 05       	cpc	r25, r1
 18c:	51 f1       	breq	.+84     	; 0x1e2 <read_keyboard+0x144>
 18e:	8c 38       	cpi	r24, 0x8C	; 140
 190:	91 05       	cpc	r25, r1
 192:	24 f4       	brge	.+8      	; 0x19c <read_keyboard+0xfe>
 194:	87 38       	cpi	r24, 0x87	; 135
 196:	91 05       	cpc	r25, r1

⌨️ 快捷键说明

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