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

📄 megalcd.lss

📁 avr128单片机液晶显示程序
💻 LSS
字号:

megalcd.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .data         0000008a  00800100  00000264  000002f8  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  1 .text         00000264  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  2 .bss          00000000  0080018a  000002ee  00000382  2**0
                  ALLOC
  3 .noinit       00000000  0080018a  0080018a  00000382  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000382  2**0
                  CONTENTS
  5 .stab         00000408  00000000  00000000  00000384  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  0000078c  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  00000810  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 0000007d  00000000  00000000  00000824  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   0000038c  00000000  00000000  000008a1  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 0000012a  00000000  00000000  00000c2d  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000001df  00000000  00000000  00000d57  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    000000fe  00000000  00000000  00000f36  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 46 00 	jmp	0x8c <__ctors_end>
   4:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
   8:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
   c:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  10:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  14:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  18:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  1c:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  20:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  24:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  28:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  2c:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  30:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  34:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  38:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  3c:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  40:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  44:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  48:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  4c:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  50:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  54:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  58:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  5c:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  60:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  64:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  68:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  6c:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  70:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  74:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  78:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  7c:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  80:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  84:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>
  88:	0c 94 63 00 	jmp	0xc6 <__bad_interrupt>

0000008c <__ctors_end>:
  8c:	11 24       	eor	r1, r1
  8e:	1f be       	out	0x3f, r1	; 63
  90:	cf ef       	ldi	r28, 0xFF	; 255
  92:	d0 e1       	ldi	r29, 0x10	; 16
  94:	de bf       	out	0x3e, r29	; 62
  96:	cd bf       	out	0x3d, r28	; 61

00000098 <__do_copy_data>:
  98:	11 e0       	ldi	r17, 0x01	; 1
  9a:	a0 e0       	ldi	r26, 0x00	; 0
  9c:	b1 e0       	ldi	r27, 0x01	; 1
  9e:	e4 e6       	ldi	r30, 0x64	; 100
  a0:	f2 e0       	ldi	r31, 0x02	; 2
  a2:	00 e0       	ldi	r16, 0x00	; 0
  a4:	0b bf       	out	0x3b, r16	; 59
  a6:	02 c0       	rjmp	.+4      	; 0xac <__do_copy_data+0x14>
  a8:	07 90       	elpm	r0, Z+
  aa:	0d 92       	st	X+, r0
  ac:	aa 38       	cpi	r26, 0x8A	; 138
  ae:	b1 07       	cpc	r27, r17
  b0:	d9 f7       	brne	.-10     	; 0xa8 <__do_copy_data+0x10>

000000b2 <__do_clear_bss>:
  b2:	11 e0       	ldi	r17, 0x01	; 1
  b4:	aa e8       	ldi	r26, 0x8A	; 138
  b6:	b1 e0       	ldi	r27, 0x01	; 1
  b8:	01 c0       	rjmp	.+2      	; 0xbc <.do_clear_bss_start>

000000ba <.do_clear_bss_loop>:
  ba:	1d 92       	st	X+, r1

000000bc <.do_clear_bss_start>:
  bc:	aa 38       	cpi	r26, 0x8A	; 138
  be:	b1 07       	cpc	r27, r17
  c0:	e1 f7       	brne	.-8      	; 0xba <.do_clear_bss_loop>
  c2:	0c 94 15 01 	jmp	0x22a <main>

000000c6 <__bad_interrupt>:
  c6:	0c 94 00 00 	jmp	0x0 <__vectors>

000000ca <delay>:

/*---------------延时子程序----------------*/ 
void delay (uint us) 
{ 
  while(us--); 
  ca:	01 97       	sbiw	r24, 0x01	; 1
  cc:	2f ef       	ldi	r18, 0xFF	; 255
  ce:	8f 3f       	cpi	r24, 0xFF	; 255
  d0:	92 07       	cpc	r25, r18
  d2:	d9 f7       	brne	.-10     	; 0xca <delay>
  d4:	08 95       	ret

000000d6 <delay1>:
} 
void delay1 (uint ms) 
{ 
  uint i,j; 
  for(i=0;i<ms;i++) 
  d6:	40 e0       	ldi	r20, 0x00	; 0
  d8:	50 e0       	ldi	r21, 0x00	; 0
  da:	48 17       	cp	r20, r24
  dc:	59 07       	cpc	r21, r25
  de:	48 f4       	brcc	.+18     	; 0xf2 <delay1+0x1c>
  e0:	27 ee       	ldi	r18, 0xE7	; 231
  e2:	33 e0       	ldi	r19, 0x03	; 3
  for(j=0;j<1000;j++) 
  e4:	22 53       	subi	r18, 0x32	; 50
  e6:	30 40       	sbci	r19, 0x00	; 0
  e8:	37 ff       	sbrs	r19, 7
  ea:	fc cf       	rjmp	.-8      	; 0xe4 <delay1+0xe>
  ec:	4f 5f       	subi	r20, 0xFF	; 255
  ee:	5f 4f       	sbci	r21, 0xFF	; 255
  f0:	f4 cf       	rjmp	.-24     	; 0xda <delay1+0x4>
  f2:	08 95       	ret

000000f4 <send>:
  ; 
} 
/*------------写命令或数据到LCD--------------*/ 
void wr_zb (uchar comm,uchar addr_x,uchar addr_y) 
{ 
  send(comm); 
  send(addr_x); 
  send(addr_y); 
} 
void send (uchar dat)               //写命令或数据 
{ 
 // while(busy); 
  while(ask); 
  f4:	0e 99       	sbic	0x01, 6	; 1
  f6:	fe cf       	rjmp	.-4      	; 0xf4 <send>
  data_port=dat; 
  f8:	8b bb       	out	0x1b, r24	; 27
  set_answer; 
  fa:	1f 9a       	sbi	0x03, 7	; 3
 // while(busy==0); 
  while((ask)==0); 
  fc:	0e 9b       	sbis	0x01, 6	; 1
  fe:	fe cf       	rjmp	.-4      	; 0xfc <send+0x8>
     
  clr_answer; 
 100:	1f 98       	cbi	0x03, 7	; 3
 102:	08 95       	ret

00000104 <wr_zb>:
 104:	0f 93       	push	r16
 106:	1f 93       	push	r17
 108:	16 2f       	mov	r17, r22
 10a:	04 2f       	mov	r16, r20
 10c:	0e 94 7a 00 	call	0xf4 <send>
 110:	81 2f       	mov	r24, r17
 112:	0e 94 7a 00 	call	0xf4 <send>
 116:	80 2f       	mov	r24, r16
 118:	0e 94 7a 00 	call	0xf4 <send>
 11c:	1f 91       	pop	r17
 11e:	0f 91       	pop	r16
 120:	08 95       	ret

00000122 <disp_chn>:
} 
/*--------------显示中文------------------*/ 
void disp_chn (uchar  *chn) 
{ 
 122:	cf 92       	push	r12
 124:	df 92       	push	r13
 126:	ef 92       	push	r14
 128:	ff 92       	push	r15
 12a:	0f 93       	push	r16
 12c:	1f 93       	push	r17
 12e:	cf 93       	push	r28
 130:	df 93       	push	r29
 132:	6c 01       	movw	r12, r24
       uchar i,j; 
  for(j=0;j<4;j++) 
 134:	ff 24       	eor	r15, r15
  { 
    for(i=2;i<10;i++) 
 136:	92 e0       	ldi	r25, 0x02	; 2
 138:	e9 2e       	mov	r14, r25
 13a:	c2 e0       	ldi	r28, 0x02	; 2
 13c:	d0 e0       	ldi	r29, 0x00	; 0
    { 
      wr_zb(0xf0,i,j); 
 13e:	4f 2d       	mov	r20, r15
 140:	6e 2d       	mov	r22, r14
 142:	80 ef       	ldi	r24, 0xF0	; 240
 144:	0e 94 82 00 	call	0x104 <wr_zb>
      send(chn[j*16+(i-2)*2]);//chn[0],chn[1]是一个汉字的区位码 。chn[2],chn[3]是一个汉字的区位码  
 148:	0f 2d       	mov	r16, r15
 14a:	11 27       	eor	r17, r17
 14c:	83 e0       	ldi	r24, 0x03	; 3
 14e:	00 0f       	add	r16, r16
 150:	11 1f       	adc	r17, r17
 152:	8a 95       	dec	r24
 154:	e1 f7       	brne	.-8      	; 0x14e <disp_chn+0x2c>
 156:	0c 0f       	add	r16, r28
 158:	1d 1f       	adc	r17, r29
 15a:	00 0f       	add	r16, r16
 15c:	11 1f       	adc	r17, r17
 15e:	0c 0d       	add	r16, r12
 160:	1d 1d       	adc	r17, r13
 162:	04 50       	subi	r16, 0x04	; 4
 164:	10 40       	sbci	r17, 0x00	; 0
 166:	f8 01       	movw	r30, r16
 168:	81 91       	ld	r24, Z+
 16a:	8f 01       	movw	r16, r30
 16c:	0e 94 7a 00 	call	0xf4 <send>
      send(chn[j*16+(i-2)*2+1]); 
 170:	f8 01       	movw	r30, r16
 172:	80 81       	ld	r24, Z
 174:	0e 94 7a 00 	call	0xf4 <send>
 178:	e3 94       	inc	r14
 17a:	21 96       	adiw	r28, 0x01	; 1
 17c:	f9 e0       	ldi	r31, 0x09	; 9
 17e:	fe 15       	cp	r31, r14
 180:	f0 f6       	brcc	.-68     	; 0x13e <disp_chn+0x1c>
 182:	f3 94       	inc	r15
 184:	83 e0       	ldi	r24, 0x03	; 3
 186:	8f 15       	cp	r24, r15
 188:	b0 f6       	brcc	.-84     	; 0x136 <disp_chn+0x14>
 18a:	df 91       	pop	r29
 18c:	cf 91       	pop	r28
 18e:	1f 91       	pop	r17
 190:	0f 91       	pop	r16
 192:	ff 90       	pop	r15
 194:	ef 90       	pop	r14
 196:	df 90       	pop	r13
 198:	cf 90       	pop	r12
 19a:	08 95       	ret

0000019c <disp_eng>:
    } 
  } 
} 
/*--------------显示字符------------------*/ 
void disp_eng (uchar  *eng)  //英文字符可以从任意点阵行开始。汉字只能在以16个点阵对齐的边界开始。 
{ 
 19c:	cf 92       	push	r12
 19e:	df 92       	push	r13
 1a0:	ef 92       	push	r14
 1a2:	ff 92       	push	r15
 1a4:	0f 93       	push	r16
 1a6:	1f 93       	push	r17
 1a8:	cf 93       	push	r28
 1aa:	df 93       	push	r29
 1ac:	6c 01       	movw	r12, r24
  uchar i,j; 
  for(j=0;j<4;j++) 
 1ae:	ee 24       	eor	r14, r14
  { 
    for(i=4;i<20;i++) 
 1b0:	34 e0       	ldi	r19, 0x04	; 4
 1b2:	f3 2e       	mov	r15, r19
 1b4:	c4 e0       	ldi	r28, 0x04	; 4
 1b6:	d0 e0       	ldi	r29, 0x00	; 0
    { 
      wr_zb(0xf9,i,j*16); 
 1b8:	0e 2d       	mov	r16, r14
 1ba:	11 27       	eor	r17, r17
 1bc:	24 e0       	ldi	r18, 0x04	; 4
 1be:	00 0f       	add	r16, r16
 1c0:	11 1f       	adc	r17, r17
 1c2:	2a 95       	dec	r18
 1c4:	e1 f7       	brne	.-8      	; 0x1be <disp_eng+0x22>
 1c6:	40 2f       	mov	r20, r16
 1c8:	6f 2d       	mov	r22, r15
 1ca:	89 ef       	ldi	r24, 0xF9	; 249
 1cc:	0e 94 82 00 	call	0x104 <wr_zb>
      send(eng[j*16+i-4]); 
 1d0:	f8 01       	movw	r30, r16
 1d2:	ec 0d       	add	r30, r12
 1d4:	fd 1d       	adc	r31, r13
 1d6:	ec 0f       	add	r30, r28
 1d8:	fd 1f       	adc	r31, r29
 1da:	34 97       	sbiw	r30, 0x04	; 4
 1dc:	80 81       	ld	r24, Z
 1de:	0e 94 7a 00 	call	0xf4 <send>
 1e2:	f3 94       	inc	r15
 1e4:	21 96       	adiw	r28, 0x01	; 1
 1e6:	83 e1       	ldi	r24, 0x13	; 19
 1e8:	8f 15       	cp	r24, r15
 1ea:	30 f7       	brcc	.-52     	; 0x1b8 <disp_eng+0x1c>
 1ec:	e3 94       	inc	r14
 1ee:	83 e0       	ldi	r24, 0x03	; 3
 1f0:	8e 15       	cp	r24, r14
 1f2:	f0 f6       	brcc	.-68     	; 0x1b0 <disp_eng+0x14>
 1f4:	df 91       	pop	r29
 1f6:	cf 91       	pop	r28
 1f8:	1f 91       	pop	r17
 1fa:	0f 91       	pop	r16
 1fc:	ff 90       	pop	r15
 1fe:	ef 90       	pop	r14
 200:	df 90       	pop	r13
 202:	cf 90       	pop	r12
 204:	08 95       	ret

00000206 <ocmj_init>:
    } 
  } 
  
} 
/*     OCMJ4X8LCD初始化     */
void ocmj_init(void)
    {
	 MCUCR=0;
 206:	15 be       	out	0x35, r1	; 53
	 DDRA=0xff;
 208:	9f ef       	ldi	r25, 0xFF	; 255
 20a:	9a bb       	out	0x1a, r25	; 26
	 PORTA=0xff;
 20c:	9b bb       	out	0x1b, r25	; 27
	 DDRE=0b10000000;
 20e:	80 e8       	ldi	r24, 0x80	; 128
 210:	82 b9       	out	0x02, r24	; 2
	 PORTE=0xff;
 212:	93 b9       	out	0x03, r25	; 3
	 clr_reset;//LCD复位
 214:	ab 98       	cbi	0x15, 3	; 21
		__ticks = 1;
	else if (__tmp > 65535)
		__ticks = 0;	/* i.e. 65536 */
	else
		__ticks = (uint16_t)__tmp;
 216:	84 ec       	ldi	r24, 0xC4	; 196
 218:	99 e0       	ldi	r25, 0x09	; 9
 21a:	fc 01       	movw	r30, r24
 21c:	31 97       	sbiw	r30, 0x01	; 1
 21e:	f1 f7       	brne	.-4      	; 0x21c <ocmj_init+0x16>
	 _delay_ms(10);
	 set_reset;
 220:	ab 9a       	sbi	0x15, 3	; 21
	 clr_answer;
 222:	1f 98       	cbi	0x03, 7	; 3
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 224:	01 97       	sbiw	r24, 0x01	; 1
 226:	f1 f7       	brne	.-4      	; 0x224 <ocmj_init+0x1e>
 228:	08 95       	ret

0000022a <main>:
	 _delay_ms(10);
	 }
/*------------------主程序--------------------*/ 
int main () 
{ 
 22a:	cf ef       	ldi	r28, 0xFF	; 255
 22c:	d0 e1       	ldi	r29, 0x10	; 16
 22e:	de bf       	out	0x3e, r29	; 62
 230:	cd bf       	out	0x3d, r28	; 61
  ocmj_init();//初始化
 232:	0e 94 03 01 	call	0x206 <ocmj_init>
 // PORTC|=0X10 ; //PC4输入上拉 
  while(1){
    //send(0xf4); //清屏 
   // disp_lat(0xff,0xff); 
   // delay1(800); 
    send(0xf4); 
 236:	84 ef       	ldi	r24, 0xF4	; 244
 238:	0e 94 7a 00 	call	0xf4 <send>
    disp_chn(tab2); //用命令F0输出国标汉字 
 23c:	81 e4       	ldi	r24, 0x41	; 65
 23e:	91 e0       	ldi	r25, 0x01	; 1
 240:	0e 94 91 00 	call	0x122 <disp_chn>
	double __tmp = ((F_CPU) / 4e3) * __ms;
	if (__tmp < 1.0)
		__ticks = 1;
	else if (__tmp > 65535)
		__ticks = 0;	/* i.e. 65536 */
 244:	00 e0       	ldi	r16, 0x00	; 0
 246:	10 e0       	ldi	r17, 0x00	; 0
 248:	c8 01       	movw	r24, r16
 24a:	01 97       	sbiw	r24, 0x01	; 1
 24c:	f1 f7       	brne	.-4      	; 0x24a <main+0x20>
    _delay_ms(1000);
	//delay1(800); 
   // send(0xf4); 
    //disp_lat(0xff,0x00); 
    //delay1(800); 
    send(0xf4); 
 24e:	84 ef       	ldi	r24, 0xF4	; 244
 250:	0e 94 7a 00 	call	0xf4 <send>
   disp_eng(tab4);//?? 
 254:	80 e0       	ldi	r24, 0x00	; 0
 256:	91 e0       	ldi	r25, 0x01	; 1
 258:	0e 94 ce 00 	call	0x19c <disp_eng>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 25c:	c8 01       	movw	r24, r16
 25e:	01 97       	sbiw	r24, 0x01	; 1
 260:	f1 f7       	brne	.-4      	; 0x25e <main+0x34>
 262:	e9 cf       	rjmp	.-46     	; 0x236 <main+0xc>

⌨️ 快捷键说明

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