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

📄 main.lss

📁 详细讲解PS/2键盘通信接口及协议
💻 LSS
📖 第 1 页 / 共 2 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000039e  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         000000ec  00800060  0000039e  00000432  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000000b  0080014c  0080014c  0000051e  2**0
                  ALLOC
  3 .noinit       00000000  00800157  00800157  0000051e  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  0000051e  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  00000520  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  0000088c  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  00000910  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 00000140  00000000  00000000  00000924  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   000004ce  00000000  00000000  00000a64  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 00000155  00000000  00000000  00000f32  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000003e1  00000000  00000000  00001087  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    0000018e  00000000  00000000  00001468  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

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

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:	11 e0       	ldi	r17, 0x01	; 1
  62:	a0 e6       	ldi	r26, 0x60	; 96
  64:	b0 e0       	ldi	r27, 0x00	; 0
  66:	ee e9       	ldi	r30, 0x9E	; 158
  68:	f3 e0       	ldi	r31, 0x03	; 3
  6a:	02 c0       	rjmp	.+4      	; 0x70 <.do_copy_data_start>

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

00000070 <.do_copy_data_start>:
  70:	ac 34       	cpi	r26, 0x4C	; 76
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c <.do_copy_data_loop>

00000076 <__do_clear_bss>:
  76:	11 e0       	ldi	r17, 0x01	; 1
  78:	ac e4       	ldi	r26, 0x4C	; 76
  7a:	b1 e0       	ldi	r27, 0x01	; 1
  7c:	01 c0       	rjmp	.+2      	; 0x80 <.do_clear_bss_start>

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

00000080 <.do_clear_bss_start>:
  80:	a7 35       	cpi	r26, 0x57	; 87
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 b3 01 	jmp	0x366 <main>

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

0000008e <sbbi>:


void sbbi(uint8_t a)
{
 PORTB|=1<<a;
  8e:	21 e0       	ldi	r18, 0x01	; 1
  90:	30 e0       	ldi	r19, 0x00	; 0
  92:	02 c0       	rjmp	.+4      	; 0x98 <sbbi+0xa>
  94:	22 0f       	add	r18, r18
  96:	33 1f       	adc	r19, r19
  98:	8a 95       	dec	r24
  9a:	e2 f7       	brpl	.-8      	; 0x94 <sbbi+0x6>
  9c:	88 b3       	in	r24, 0x18	; 24
  9e:	82 2b       	or	r24, r18
  a0:	88 bb       	out	0x18, r24	; 24
  a2:	08 95       	ret

000000a4 <cbbi>:
 }
 void cbbi(uint8_t a)
 {
   uint8_t b=0xfe;
  a4:	9e ef       	ldi	r25, 0xFE	; 254
   for(;a>0;a--)
  a6:	88 23       	and	r24, r24
  a8:	21 f0       	breq	.+8      	; 0xb2 <cbbi+0xe>
    {
	 b<<=1;
  aa:	99 0f       	add	r25, r25
	 b|=0x01;
  ac:	91 60       	ori	r25, 0x01	; 1
  ae:	81 50       	subi	r24, 0x01	; 1
  b0:	fa cf       	rjmp	.-12     	; 0xa6 <cbbi+0x2>
	}
   PORTB&=b;
  b2:	88 b3       	in	r24, 0x18	; 24
  b4:	89 23       	and	r24, r25
  b6:	88 bb       	out	0x18, r24	; 24
  b8:	08 95       	ret

000000ba <Delay>:
 }
void Delay(uint16_t time)
{
  while(time>0)
    time--;
  ba:	00 97       	sbiw	r24, 0x00	; 0
  bc:	11 f0       	breq	.+4      	; 0xc2 <Delay+0x8>
  be:	01 97       	sbiw	r24, 0x01	; 1
  c0:	fc cf       	rjmp	.-8      	; 0xba <Delay>
  c2:	08 95       	ret

000000c4 <En_Toggle>:
}

void En_Toggle(void)
{
En_H;
  c4:	82 e0       	ldi	r24, 0x02	; 2
  c6:	0e 94 47 00 	call	0x8e <sbbi>
DelaytE;
  ca:	8a e0       	ldi	r24, 0x0A	; 10
  cc:	90 e0       	ldi	r25, 0x00	; 0
  ce:	0e 94 5d 00 	call	0xba <Delay>
En_L;
  d2:	82 e0       	ldi	r24, 0x02	; 2
  d4:	0e 94 52 00 	call	0xa4 <cbbi>
DelaytE;
  d8:	8a e0       	ldi	r24, 0x0A	; 10
  da:	90 e0       	ldi	r25, 0x00	; 0
  dc:	0e 94 5d 00 	call	0xba <Delay>
  e0:	08 95       	ret

000000e2 <Wait_Until_Ready>:
}

void Wait_Until_Ready(void)
{
RW_R;
  e2:	81 e0       	ldi	r24, 0x01	; 1
  e4:	0e 94 47 00 	call	0x8e <sbbi>
RS_L;
  e8:	80 e0       	ldi	r24, 0x00	; 0
  ea:	0e 94 52 00 	call	0xa4 <cbbi>
LCDDDR=0X00;
  ee:	1a ba       	out	0x1a, r1	; 26
LCDPORT=0X00;
  f0:	1b ba       	out	0x1b, r1	; 27
En_H;
  f2:	82 e0       	ldi	r24, 0x02	; 2
  f4:	0e 94 47 00 	call	0x8e <sbbi>
DelaytE;
  f8:	8a e0       	ldi	r24, 0x0A	; 10
  fa:	90 e0       	ldi	r25, 0x00	; 0
  fc:	0e 94 5d 00 	call	0xba <Delay>
loop_until_bit_is_clear(LCDPIN,7);
 100:	cf 99       	sbic	0x19, 7	; 25
 102:	fe cf       	rjmp	.-4      	; 0x100 <Wait_Until_Ready+0x1e>
En_L;
 104:	82 e0       	ldi	r24, 0x02	; 2
 106:	0e 94 52 00 	call	0xa4 <cbbi>
 10a:	08 95       	ret

0000010c <Write_Command>:
}
void Write_Command(uint8_t Command)
{
 10c:	1f 93       	push	r17
 10e:	18 2f       	mov	r17, r24
RW_W;
 110:	81 e0       	ldi	r24, 0x01	; 1
 112:	0e 94 52 00 	call	0xa4 <cbbi>
RS_L;
 116:	80 e0       	ldi	r24, 0x00	; 0
 118:	0e 94 52 00 	call	0xa4 <cbbi>
LCDDDR=0XFF;
 11c:	8f ef       	ldi	r24, 0xFF	; 255
 11e:	8a bb       	out	0x1a, r24	; 26
LCDPORT=Command;
 120:	1b bb       	out	0x1b, r17	; 27
En_Toggle();
 122:	0e 94 62 00 	call	0xc4 <En_Toggle>
Wait_Until_Ready();
 126:	0e 94 71 00 	call	0xe2 <Wait_Until_Ready>
 12a:	1f 91       	pop	r17
 12c:	08 95       	ret

0000012e <Write_Data>:
}
void Write_Data(uint8_t Data)
{
 12e:	1f 93       	push	r17
 130:	18 2f       	mov	r17, r24
RW_W;
 132:	81 e0       	ldi	r24, 0x01	; 1
 134:	0e 94 52 00 	call	0xa4 <cbbi>
RS_H;
 138:	80 e0       	ldi	r24, 0x00	; 0
 13a:	0e 94 47 00 	call	0x8e <sbbi>
LCDDDR=0XFF;
 13e:	8f ef       	ldi	r24, 0xFF	; 255
 140:	8a bb       	out	0x1a, r24	; 26
LCDPORT=Data;
 142:	1b bb       	out	0x1b, r17	; 27
En_Toggle();
 144:	0e 94 62 00 	call	0xc4 <En_Toggle>
Wait_Until_Ready();
 148:	0e 94 71 00 	call	0xe2 <Wait_Until_Ready>
 14c:	1f 91       	pop	r17
 14e:	08 95       	ret

00000150 <Write_Position>:
}
void Write_Position(uint8_t row,uint8_t colum)
{
uint8_t p;
if(row==1)
 150:	81 30       	cpi	r24, 0x01	; 1
 152:	19 f4       	brne	.+6      	; 0x15a <Write_Position+0xa>
 {
   p=0x80+colum-1;
   Write_Command(p);
 154:	86 2f       	mov	r24, r22
 156:	81 58       	subi	r24, 0x81	; 129
 158:	02 c0       	rjmp	.+4      	; 0x15e <Write_Position+0xe>
   }
 else
  {
   p=0xC0+colum-1;
   Write_Command(p);
 15a:	86 2f       	mov	r24, r22
 15c:	81 54       	subi	r24, 0x41	; 65
 15e:	0e 94 86 00 	call	0x10c <Write_Command>
 162:	08 95       	ret

00000164 <Write_String>:
   }
 }
 void Write_String(uint8_t *s)
 {
 164:	cf 93       	push	r28
 166:	df 93       	push	r29
 168:	ec 01       	movw	r28, r24
 for(;*s!='\0';s++) 
 16a:	88 81       	ld	r24, Y
 16c:	88 23       	and	r24, r24
 16e:	31 f0       	breq	.+12     	; 0x17c <Write_String+0x18>
  Write_Data(*s);
 170:	89 91       	ld	r24, Y+
 172:	0e 94 97 00 	call	0x12e <Write_Data>
 176:	88 81       	ld	r24, Y
 178:	88 23       	and	r24, r24
 17a:	d1 f7       	brne	.-12     	; 0x170 <Write_String+0xc>
 17c:	df 91       	pop	r29
 17e:	cf 91       	pop	r28
 180:	08 95       	ret

00000182 <Initialize_LCD>:
  }
  void Initialize_LCD(void)
  {
  DDRB=0xff;
 182:	8f ef       	ldi	r24, 0xFF	; 255
 184:	87 bb       	out	0x17, r24	; 23
  Write_Command(0x38);
 186:	88 e3       	ldi	r24, 0x38	; 56
 188:	0e 94 86 00 	call	0x10c <Write_Command>
  Write_Command(0x06);
 18c:	86 e0       	ldi	r24, 0x06	; 6
 18e:	0e 94 86 00 	call	0x10c <Write_Command>
  Write_Command(0x0c);
 192:	8c e0       	ldi	r24, 0x0C	; 12
 194:	0e 94 86 00 	call	0x10c <Write_Command>
  Clear_Screen;
 198:	81 e0       	ldi	r24, 0x01	; 1
 19a:	0e 94 86 00 	call	0x10c <Write_Command>
 19e:	08 95       	ret

000001a0 <Write_Word>:
  }
  void Write_Word(uint8_t row,uint8_t colum ,uint8_t Data)
  {
 1a0:	1f 93       	push	r17
 1a2:	14 2f       	mov	r17, r20
   Write_Position(row,colum);
 1a4:	0e 94 a8 00 	call	0x150 <Write_Position>
   Write_Data(Data);
 1a8:	81 2f       	mov	r24, r17
 1aa:	0e 94 97 00 	call	0x12e <Write_Data>
 1ae:	1f 91       	pop	r17
 1b0:	08 95       	ret

000001b2 <ssbi>:


void ssbi(uint8_t a)
{ 
 PORTD|=1<<a;                //PB口A位置位
 1b2:	21 e0       	ldi	r18, 0x01	; 1
 1b4:	30 e0       	ldi	r19, 0x00	; 0
 1b6:	02 c0       	rjmp	.+4      	; 0x1bc <ssbi+0xa>
 1b8:	22 0f       	add	r18, r18
 1ba:	33 1f       	adc	r19, r19
 1bc:	8a 95       	dec	r24
 1be:	e2 f7       	brpl	.-8      	; 0x1b8 <ssbi+0x6>
 1c0:	82 b3       	in	r24, 0x12	; 18
 1c2:	82 2b       	or	r24, r18
 1c4:	82 bb       	out	0x12, r24	; 18
 1c6:	08 95       	ret

000001c8 <ccbi>:
 }
 void ccbi(uint8_t a)        //PB口A位复位
 {
   uint8_t b=0xfe;
 1c8:	9e ef       	ldi	r25, 0xFE	; 254
   for(;a>0;a--)
 1ca:	88 23       	and	r24, r24
 1cc:	21 f0       	breq	.+8      	; 0x1d6 <ccbi+0xe>
    {
	 b<<=1;
 1ce:	99 0f       	add	r25, r25
	 b|=0x01;
 1d0:	91 60       	ori	r25, 0x01	; 1
 1d2:	81 50       	subi	r24, 0x01	; 1
 1d4:	fa cf       	rjmp	.-12     	; 0x1ca <ccbi+0x2>
	}
   PORTD&=b;                  
 1d6:	82 b3       	in	r24, 0x12	; 18
 1d8:	89 23       	and	r24, r25
 1da:	82 bb       	out	0x12, r24	; 18
 1dc:	08 95       	ret

000001de <KB_Write>:

⌨️ 快捷键说明

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