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

📄 u2.lss

📁 M8点阵lcd程序实例
💻 LSS
字号:

u2.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000001ac  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000000  00800060  000001ac  00000240  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000000  00800060  000001ac  00000240  2**0
                  ALLOC
  3 .noinit       00000000  00800060  00800060  00000240  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000240  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  00000240  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 0000007d  00000000  00000000  00000254  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   0000021b  00000000  00000000  000002d1  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 000000e9  00000000  00000000  000004ec  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   00000254  00000000  00000000  000005d5  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    000000a9  00000000  00000000  00000829  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	12 c0       	rjmp	.+36     	; 0x26
   2:	2b c0       	rjmp	.+86     	; 0x5a
   4:	2a c0       	rjmp	.+84     	; 0x5a
   6:	29 c0       	rjmp	.+82     	; 0x5a
   8:	28 c0       	rjmp	.+80     	; 0x5a
   a:	27 c0       	rjmp	.+78     	; 0x5a
   c:	26 c0       	rjmp	.+76     	; 0x5a
   e:	25 c0       	rjmp	.+74     	; 0x5a
  10:	24 c0       	rjmp	.+72     	; 0x5a
  12:	23 c0       	rjmp	.+70     	; 0x5a
  14:	22 c0       	rjmp	.+68     	; 0x5a
  16:	21 c0       	rjmp	.+66     	; 0x5a
  18:	20 c0       	rjmp	.+64     	; 0x5a
  1a:	1f c0       	rjmp	.+62     	; 0x5a
  1c:	1e c0       	rjmp	.+60     	; 0x5a
  1e:	1d c0       	rjmp	.+58     	; 0x5a
  20:	1c c0       	rjmp	.+56     	; 0x5a
  22:	1b c0       	rjmp	.+54     	; 0x5a
  24:	1a c0       	rjmp	.+52     	; 0x5a

00000026 <__ctors_end>:
  26:	11 24       	eor	r1, r1
  28:	1f be       	out	0x3f, r1	; 63
  2a:	cf e5       	ldi	r28, 0x5F	; 95
  2c:	d4 e0       	ldi	r29, 0x04	; 4
  2e:	de bf       	out	0x3e, r29	; 62
  30:	cd bf       	out	0x3d, r28	; 61

00000032 <__do_copy_data>:
  32:	10 e0       	ldi	r17, 0x00	; 0
  34:	a0 e6       	ldi	r26, 0x60	; 96
  36:	b0 e0       	ldi	r27, 0x00	; 0
  38:	ec ea       	ldi	r30, 0xAC	; 172
  3a:	f1 e0       	ldi	r31, 0x01	; 1
  3c:	02 c0       	rjmp	.+4      	; 0x42

0000003e <.do_copy_data_loop>:
  3e:	05 90       	lpm	r0, Z+
  40:	0d 92       	st	X+, r0

00000042 <.do_copy_data_start>:
  42:	a0 36       	cpi	r26, 0x60	; 96
  44:	b1 07       	cpc	r27, r17
  46:	d9 f7       	brne	.-10     	; 0x3e

00000048 <__do_clear_bss>:
  48:	10 e0       	ldi	r17, 0x00	; 0
  4a:	a0 e6       	ldi	r26, 0x60	; 96
  4c:	b0 e0       	ldi	r27, 0x00	; 0
  4e:	01 c0       	rjmp	.+2      	; 0x52

00000050 <.do_clear_bss_loop>:
  50:	1d 92       	st	X+, r1

00000052 <.do_clear_bss_start>:
  52:	a0 36       	cpi	r26, 0x60	; 96
  54:	b1 07       	cpc	r27, r17
  56:	e1 f7       	brne	.-8      	; 0x50
  58:	78 c0       	rjmp	.+240    	; 0x14a

0000005a <__bad_interrupt>:
  5a:	d2 cf       	rjmp	.-92     	; 0x0

0000005c <delay>:

void delay(int c)
	{
	int i,j;
	for(i=0;i<c;i++)
  5c:	40 e0       	ldi	r20, 0x00	; 0
  5e:	50 e0       	ldi	r21, 0x00	; 0
  60:	48 17       	cp	r20, r24
  62:	59 07       	cpc	r21, r25
  64:	4c f4       	brge	.+18     	; 0x78
  66:	27 ee       	ldi	r18, 0xE7	; 231
  68:	33 e0       	ldi	r19, 0x03	; 3
		for(j=0;j<1000;j++)
  6a:	22 53       	subi	r18, 0x32	; 50
  6c:	30 40       	sbci	r19, 0x00	; 0
  6e:	37 ff       	sbrs	r19, 7
  70:	fc cf       	rjmp	.-8      	; 0x6a
  72:	4f 5f       	subi	r20, 0xFF	; 255
  74:	5f 4f       	sbci	r21, 0xFF	; 255
  76:	f4 cf       	rjmp	.-24     	; 0x60
  78:	08 95       	ret

0000007a <rd_state>:
			;
	}

char rd_state()	//读状态
	{
	char temp;
	DDRB=0x00;
  7a:	17 ba       	out	0x17, r1	; 23
	PORTD|=(1<<cd);
  7c:	92 9a       	sbi	0x12, 2	; 18
	PORTD&=~(1<<rd);
  7e:	91 98       	cbi	0x12, 1	; 18
	temp=PINB;
  80:	86 b3       	in	r24, 0x16	; 22
	PORTD|=(1<<rd);
  82:	91 9a       	sbi	0x12, 1	; 18
	return(temp);
	}
  84:	99 27       	eor	r25, r25
  86:	08 95       	ret

00000088 <rd_enable>:

void rd_enable()	//等待可读写
	{
	char temp;
	temp=rd_state();
  88:	f8 df       	rcall	.-16     	; 0x7a
	while((temp&0x03)!=0x03)
		temp=rd_state();
  8a:	99 27       	eor	r25, r25
  8c:	83 70       	andi	r24, 0x03	; 3
  8e:	90 70       	andi	r25, 0x00	; 0
  90:	03 97       	sbiw	r24, 0x03	; 3
  92:	d1 f7       	brne	.-12     	; 0x88
  94:	08 95       	ret

00000096 <rd_auto>:
	}

void rd_auto()	//等待自动读写
	{
	char temp;
	temp=rd_state();
  96:	f1 df       	rcall	.-30     	; 0x7a
	while((temp&0x04)!=0x04)
		temp=rd_state();
  98:	82 ff       	sbrs	r24, 2
  9a:	fd cf       	rjmp	.-6      	; 0x96
  9c:	08 95       	ret

0000009e <wr_auto>:
	}

void wr_auto()	//等待自动写
	{
	char temp;
	temp=rd_state();
  9e:	ed df       	rcall	.-38     	; 0x7a
	while((temp&0x08)!=0x08)
		temp=rd_state();
  a0:	83 ff       	sbrs	r24, 3
  a2:	fd cf       	rjmp	.-6      	; 0x9e
  a4:	08 95       	ret

000000a6 <wr_data>:
	}

/*写命令、写数据命令*********************
数据1、数据2、命令、参数个数*************
*****************************************/
void wr_data(char data1,char data2,char cmd,char num)
	{
  a6:	ff 92       	push	r15
  a8:	0f 93       	push	r16
  aa:	1f 93       	push	r17
  ac:	cf 93       	push	r28
  ae:	18 2f       	mov	r17, r24
  b0:	06 2f       	mov	r16, r22
  b2:	f4 2e       	mov	r15, r20
  b4:	c2 2f       	mov	r28, r18
	char temp;
	temp=num;
	if(temp==2)
  b6:	22 30       	cpi	r18, 0x02	; 2
  b8:	39 f4       	brne	.+14     	; 0xc8
		{
		rd_enable();
  ba:	e6 df       	rcall	.-52     	; 0x88
		DDRB=0xff;
  bc:	8f ef       	ldi	r24, 0xFF	; 255
  be:	87 bb       	out	0x17, r24	; 23
		PORTD&=~(1<<cd);
  c0:	92 98       	cbi	0x12, 2	; 18
		PORTB=data1;
  c2:	18 bb       	out	0x18, r17	; 24
		PORTD&=~(1<<wr);
  c4:	90 98       	cbi	0x12, 0	; 18
		PORTD|=(1<<wr);
  c6:	90 9a       	sbi	0x12, 0	; 18
		}
	 if(temp==2||temp==1)
  c8:	c1 50       	subi	r28, 0x01	; 1
  ca:	c2 30       	cpi	r28, 0x02	; 2
  cc:	38 f4       	brcc	.+14     	; 0xdc
	 	{
		rd_enable();
  ce:	dc df       	rcall	.-72     	; 0x88
		DDRB=0xff;
  d0:	8f ef       	ldi	r24, 0xFF	; 255
  d2:	87 bb       	out	0x17, r24	; 23
		PORTD&=~(1<<cd);
  d4:	92 98       	cbi	0x12, 2	; 18
		PORTB=data2;
  d6:	08 bb       	out	0x18, r16	; 24
		PORTD&=~(1<<wr);
  d8:	90 98       	cbi	0x12, 0	; 18
		PORTD|=(1<<wr);
  da:	90 9a       	sbi	0x12, 0	; 18
		}
	rd_enable();
  dc:	d5 df       	rcall	.-86     	; 0x88
	PORTB=0xff;
  de:	8f ef       	ldi	r24, 0xFF	; 255
  e0:	88 bb       	out	0x18, r24	; 24
	PORTD|=(1<<cd);
  e2:	92 9a       	sbi	0x12, 2	; 18
	PORTB=cmd;
  e4:	f8 ba       	out	0x18, r15	; 24
	PORTD&=~(1<<wr);
  e6:	90 98       	cbi	0x12, 0	; 18
	PORTD|=(1<<wr);
  e8:	90 9a       	sbi	0x12, 0	; 18
  ea:	cf 91       	pop	r28
  ec:	1f 91       	pop	r17
  ee:	0f 91       	pop	r16
  f0:	ff 90       	pop	r15
  f2:	08 95       	ret

000000f4 <rd_data>:
	}

char rd_data()	//读数据
	{
	char temp;
	rd_enable();
  f4:	c9 df       	rcall	.-110    	; 0x88
	PORTD&=~(1<<cd);
  f6:	92 98       	cbi	0x12, 2	; 18
	PORTD&=~(1<<rd);
  f8:	91 98       	cbi	0x12, 1	; 18
	temp=PINB;
  fa:	86 b3       	in	r24, 0x16	; 22
	PORTD|=(1<<rd);
  fc:	91 9a       	sbi	0x12, 1	; 18
	return(temp);
	}
  fe:	99 27       	eor	r25, r25
 100:	08 95       	ret

00000102 <lcd_init>:

void lcd_init()
	{
	wr_data(0x00,0x00,0x40,0x02);	//设置文本显示首地址
 102:	22 e0       	ldi	r18, 0x02	; 2
 104:	40 e4       	ldi	r20, 0x40	; 64
 106:	60 e0       	ldi	r22, 0x00	; 0
 108:	86 2f       	mov	r24, r22
 10a:	cd df       	rcall	.-102    	; 0xa6
	wr_data(0x14,0x00,0x41,0x02);	//设置文本显示宽度
 10c:	22 e0       	ldi	r18, 0x02	; 2
 10e:	41 e4       	ldi	r20, 0x41	; 65
 110:	60 e0       	ldi	r22, 0x00	; 0
 112:	84 e1       	ldi	r24, 0x14	; 20
 114:	c8 df       	rcall	.-112    	; 0xa6
	wr_data(0x40,0x01,0x42,0x02);	//设置图形显示首地址
 116:	22 e0       	ldi	r18, 0x02	; 2
 118:	42 e4       	ldi	r20, 0x42	; 66
 11a:	61 e0       	ldi	r22, 0x01	; 1
 11c:	80 e4       	ldi	r24, 0x40	; 64
 11e:	c3 df       	rcall	.-122    	; 0xa6
	wr_data(0x20,0x00,0x43,0x02);	//设置图形显示宽度
 120:	22 e0       	ldi	r18, 0x02	; 2
 122:	43 e4       	ldi	r20, 0x43	; 67
 124:	60 e0       	ldi	r22, 0x00	; 0
 126:	80 e2       	ldi	r24, 0x20	; 32
 128:	be df       	rcall	.-132    	; 0xa6
	wr_data(0x00,0x00,0xa7,0x00);	//光标形状设置
 12a:	20 e0       	ldi	r18, 0x00	; 0
 12c:	47 ea       	ldi	r20, 0xA7	; 167
 12e:	62 2f       	mov	r22, r18
 130:	82 2f       	mov	r24, r18
 132:	b9 df       	rcall	.-142    	; 0xa6
	wr_data(0x00,0x00,0x80,0x00);	//显示方式设置,“或”
 134:	20 e0       	ldi	r18, 0x00	; 0
 136:	40 e8       	ldi	r20, 0x80	; 128
 138:	62 2f       	mov	r22, r18
 13a:	82 2f       	mov	r24, r18
 13c:	b4 df       	rcall	.-152    	; 0xa6
	wr_data(0x00,0x00,0x9c,0x00);	//显示开关设置
 13e:	20 e0       	ldi	r18, 0x00	; 0
 140:	4c e9       	ldi	r20, 0x9C	; 156
 142:	62 2f       	mov	r22, r18
 144:	82 2f       	mov	r24, r18
 146:	af df       	rcall	.-162    	; 0xa6
 148:	08 95       	ret

0000014a <main>:
	}

void main()
	{
 14a:	cf e5       	ldi	r28, 0x5F	; 95
 14c:	d4 e0       	ldi	r29, 0x04	; 4
 14e:	de bf       	out	0x3e, r29	; 62
 150:	cd bf       	out	0x3d, r28	; 61
	char i,temp=0,row=0;
 152:	c0 e0       	ldi	r28, 0x00	; 0
	delay(50);
 154:	82 e3       	ldi	r24, 0x32	; 50
 156:	90 e0       	ldi	r25, 0x00	; 0
 158:	81 df       	rcall	.-254    	; 0x5c
	DDRD=0x07;
 15a:	87 e0       	ldi	r24, 0x07	; 7
 15c:	81 bb       	out	0x11, r24	; 17
	lcd_init();
 15e:	d1 df       	rcall	.-94     	; 0x102
	wr_data(0x00,0x00,0x24,0x02);	//设置写地址
 160:	22 e0       	ldi	r18, 0x02	; 2
 162:	44 e2       	ldi	r20, 0x24	; 36
 164:	6c 2f       	mov	r22, r28
 166:	8c 2f       	mov	r24, r28
 168:	9e df       	rcall	.-196    	; 0xa6
	wr_data(0x00,0x00,0xb0,0x00);	//设置自动写方式
 16a:	2c 2f       	mov	r18, r28
 16c:	40 eb       	ldi	r20, 0xB0	; 176
 16e:	6c 2f       	mov	r22, r28
 170:	8c 2f       	mov	r24, r28
 172:	99 df       	rcall	.-206    	; 0xa6
 174:	1e e7       	ldi	r17, 0x7E	; 126
	for(i=0;i<127;i++)
		{

		wr_auto();
 176:	93 df       	rcall	.-218    	; 0x9e
		DDRB=0xff;
 178:	8f ef       	ldi	r24, 0xFF	; 255
 17a:	87 bb       	out	0x17, r24	; 23
		PORTD&=~(1<<cd);
 17c:	92 98       	cbi	0x12, 2	; 18
		PORTB=temp;
 17e:	c8 bb       	out	0x18, r28	; 24
		PORTD&=~(1<<wr);
 180:	90 98       	cbi	0x12, 0	; 18
		PORTD|=(1<<wr);
 182:	90 9a       	sbi	0x12, 0	; 18
		temp++;
 184:	cf 5f       	subi	r28, 0xFF	; 255
 186:	18 0f       	add	r17, r24
 188:	17 ff       	sbrs	r17, 7
 18a:	f5 cf       	rjmp	.-22     	; 0x176
//		P1=temp;
		}
	wr_data(0x00,0x00,0xb2,0x00);	//自动写结束
 18c:	20 e0       	ldi	r18, 0x00	; 0
 18e:	42 eb       	ldi	r20, 0xB2	; 178
 190:	62 2f       	mov	r22, r18
 192:	82 2f       	mov	r24, r18
 194:	88 df       	rcall	.-240    	; 0xa6
	wr_data(0x40,0x01,0x24,0x02);	//设置写地址
 196:	22 e0       	ldi	r18, 0x02	; 2
 198:	44 e2       	ldi	r20, 0x24	; 36
 19a:	61 e0       	ldi	r22, 0x01	; 1
 19c:	80 e4       	ldi	r24, 0x40	; 64
 19e:	83 df       	rcall	.-250    	; 0xa6
	wr_data(0x00,0xaa,0xc4,0x01);	//写图像区
 1a0:	21 e0       	ldi	r18, 0x01	; 1
 1a2:	44 ec       	ldi	r20, 0xC4	; 196
 1a4:	6a ea       	ldi	r22, 0xAA	; 170
 1a6:	80 e0       	ldi	r24, 0x00	; 0
 1a8:	7e df       	rcall	.-260    	; 0xa6
	while(1)
 1aa:	ff cf       	rjmp	.-2      	; 0x1aa

⌨️ 快捷键说明

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