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

📄 main.lss

📁 1602基于AVRMEGA的液晶显示
💻 LSS
📖 第 1 页 / 共 2 页
字号:
 1d0:	1f 91       	pop	r17
 1d2:	08 95       	ret

000001d4 <BFRead>:
}

unsigned char BFRead(void)
{
 1d4:	1f 93       	push	r17
   unsigned char bf;
   RS_0;
 1d6:	94 98       	cbi	0x12, 4	; 18
   RW_1;  
 1d8:	95 9a       	sbi	0x12, 5	; 18
   delay_us(100);
 1da:	84 e6       	ldi	r24, 0x64	; 100
 1dc:	90 e0       	ldi	r25, 0x00	; 0
 1de:	0e 94 70 01 	call	0x2e0 <delay_us>
   EN_1;
 1e2:	97 9a       	sbi	0x12, 7	; 18
   delay_us(100);
 1e4:	84 e6       	ldi	r24, 0x64	; 100
 1e6:	90 e0       	ldi	r25, 0x00	; 0
 1e8:	0e 94 70 01 	call	0x2e0 <delay_us>
   DataIn;
 1ec:	1a ba       	out	0x1a, r1	; 26
   bf = DataLcdIn;
 1ee:	19 b3       	in	r17, 0x19	; 25
   EN_0;
 1f0:	97 98       	cbi	0x12, 7	; 18
   delay_us(100);
 1f2:	84 e6       	ldi	r24, 0x64	; 100
 1f4:	90 e0       	ldi	r25, 0x00	; 0
 1f6:	0e 94 70 01 	call	0x2e0 <delay_us>
   RS_1;
 1fa:	94 9a       	sbi	0x12, 4	; 18
   RW_0;
 1fc:	95 98       	cbi	0x12, 5	; 18
   
   return bf;
}
 1fe:	81 2f       	mov	r24, r17
 200:	99 27       	eor	r25, r25
 202:	1f 91       	pop	r17
 204:	08 95       	ret

00000206 <LCDReady>:

void LCDReady(void)
{
   unsigned char bf;
   do
      {bf = BFRead();
 206:	0e 94 ea 00 	call	0x1d4 <BFRead>
	  //PORTA = bf;       //just for debug
	  }
 20a:	88 23       	and	r24, r24
 20c:	e4 f3       	brlt	.-8      	; 0x206 <LCDReady>
   while((bf&0x80)==0x80);
   DataOut;
 20e:	8f ef       	ldi	r24, 0xFF	; 255
 210:	8a bb       	out	0x1a, r24	; 26
 212:	08 95       	ret

00000214 <CharWrite>:
}

void CharWrite(unsigned char data)
{
 214:	1f 93       	push	r17
 216:	18 2f       	mov	r17, r24
   LCDReady();
 218:	0e 94 03 01 	call	0x206 <LCDReady>
   RS_1;
 21c:	94 9a       	sbi	0x12, 4	; 18
   RW_0;
 21e:	95 98       	cbi	0x12, 5	; 18
   DataLcd = data;   //
 220:	1b bb       	out	0x1b, r17	; 27
   delay_us(100);
 222:	84 e6       	ldi	r24, 0x64	; 100
 224:	90 e0       	ldi	r25, 0x00	; 0
 226:	0e 94 70 01 	call	0x2e0 <delay_us>
   EN_1;
 22a:	97 9a       	sbi	0x12, 7	; 18
   delay_us(100);
 22c:	84 e6       	ldi	r24, 0x64	; 100
 22e:	90 e0       	ldi	r25, 0x00	; 0
 230:	0e 94 70 01 	call	0x2e0 <delay_us>
   EN_0;
 234:	97 98       	cbi	0x12, 7	; 18
   delay_us(100); 
 236:	84 e6       	ldi	r24, 0x64	; 100
 238:	90 e0       	ldi	r25, 0x00	; 0
 23a:	0e 94 70 01 	call	0x2e0 <delay_us>
   RS_0;
 23e:	94 98       	cbi	0x12, 4	; 18
   RW_1;
 240:	95 9a       	sbi	0x12, 5	; 18
 242:	1f 91       	pop	r17
 244:	08 95       	ret

00000246 <LcdInit>:
}

void LcdInit(void)
{
   FunctionSet();
 246:	0e 94 ad 00 	call	0x15a <FunctionSet>
   LCDReady();
 24a:	0e 94 03 01 	call	0x206 <LCDReady>
   DdramSet(0);
 24e:	80 e0       	ldi	r24, 0x00	; 0
 250:	0e 94 cd 00 	call	0x19a <DdramSet>
   LCDReady();
 254:	0e 94 03 01 	call	0x206 <LCDReady>
   VisionSet();
 258:	0e 94 90 00 	call	0x120 <VisionSet>
   LCDReady();
 25c:	0e 94 03 01 	call	0x206 <LCDReady>
   InputSet();
 260:	0e 94 7b 00 	call	0xf6 <InputSet>
   LCDReady();
 264:	0e 94 03 01 	call	0x206 <LCDReady>
   ClearLcd();
 268:	0e 94 47 00 	call	0x8e <ClearLcd>
   LCDReady();
 26c:	0e 94 03 01 	call	0x206 <LCDReady>
   home();
 270:	0e 94 66 00 	call	0xcc <home>
   delay_us(10);
 274:	8a e0       	ldi	r24, 0x0A	; 10
 276:	90 e0       	ldi	r25, 0x00	; 0
 278:	0e 94 70 01 	call	0x2e0 <delay_us>
 27c:	08 95       	ret

0000027e <CharsWrite>:
}

void CharsWrite(unsigned char addrx,unsigned char addry,unsigned char *s)
{
 27e:	0f 93       	push	r16
 280:	1f 93       	push	r17
 282:	cf 93       	push	r28
 284:	8a 01       	movw	r16, r20
   unsigned char addr;
   if (addry==1)
 286:	61 30       	cpi	r22, 0x01	; 1
 288:	11 f4       	brne	.+4      	; 0x28e <CharsWrite+0x10>
   {
      addr = addrx;
 28a:	c8 2f       	mov	r28, r24
 28c:	06 c0       	rjmp	.+12     	; 0x29a <CharsWrite+0x1c>
   }
   else if (addry==2)
 28e:	62 30       	cpi	r22, 0x02	; 2
 290:	19 f4       	brne	.+6      	; 0x298 <CharsWrite+0x1a>
   {
      addr = (addrx+0x40);
 292:	c8 2f       	mov	r28, r24
 294:	c0 5c       	subi	r28, 0xC0	; 192
 296:	01 c0       	rjmp	.+2      	; 0x29a <CharsWrite+0x1c>
   }
   else
   {
      addr = 0;
 298:	c0 e0       	ldi	r28, 0x00	; 0
   }
   DdramSet(0);     //初始化ddram地址
 29a:	80 e0       	ldi	r24, 0x00	; 0
 29c:	0e 94 cd 00 	call	0x19a <DdramSet>
   LCDReady();
 2a0:	0e 94 03 01 	call	0x206 <LCDReady>
   DdramSet(addr);  //设定ddram地址
 2a4:	8c 2f       	mov	r24, r28
 2a6:	0e 94 cd 00 	call	0x19a <DdramSet>
   delay_us(80);
 2aa:	80 e5       	ldi	r24, 0x50	; 80
 2ac:	90 e0       	ldi	r25, 0x00	; 0
 2ae:	0e 94 70 01 	call	0x2e0 <delay_us>
   while(*s)
   {
     CharWrite(*s);
	 s++;
	 delay_us(80);   //等待写入操作完成
 2b2:	f8 01       	movw	r30, r16
 2b4:	80 81       	ld	r24, Z
 2b6:	88 23       	and	r24, r24
 2b8:	69 f0       	breq	.+26     	; 0x2d4 <CharsWrite+0x56>
 2ba:	f8 01       	movw	r30, r16
 2bc:	81 91       	ld	r24, Z+
 2be:	8f 01       	movw	r16, r30
 2c0:	0e 94 0a 01 	call	0x214 <CharWrite>
 2c4:	80 e5       	ldi	r24, 0x50	; 80
 2c6:	90 e0       	ldi	r25, 0x00	; 0
 2c8:	0e 94 70 01 	call	0x2e0 <delay_us>
 2cc:	f8 01       	movw	r30, r16
 2ce:	80 81       	ld	r24, Z
 2d0:	88 23       	and	r24, r24
 2d2:	99 f7       	brne	.-26     	; 0x2ba <CharsWrite+0x3c>
 2d4:	cf 91       	pop	r28
 2d6:	1f 91       	pop	r17
 2d8:	0f 91       	pop	r16
 2da:	08 95       	ret

000002dc <delay_1us>:

/*时钟为8MHZ*/
void delay_1us(void)
{
   asm("nop");
 2dc:	00 00       	nop
 2de:	08 95       	ret

000002e0 <delay_us>:
}
void delay_us(unsigned int itimes)
{
 2e0:	0f 93       	push	r16
 2e2:	1f 93       	push	r17
 2e4:	cf 93       	push	r28
 2e6:	df 93       	push	r29
 2e8:	8c 01       	movw	r16, r24
   unsigned int itemp;
   for (itemp=0;itemp<itimes;itemp++)
 2ea:	c0 e0       	ldi	r28, 0x00	; 0
 2ec:	d0 e0       	ldi	r29, 0x00	; 0
 2ee:	c8 17       	cp	r28, r24
 2f0:	d9 07       	cpc	r29, r25
 2f2:	30 f4       	brcc	.+12     	; 0x300 <delay_us+0x20>
      {
	     delay_1us();
 2f4:	0e 94 6e 01 	call	0x2dc <delay_1us>
 2f8:	21 96       	adiw	r28, 0x01	; 1
 2fa:	c0 17       	cp	r28, r16
 2fc:	d1 07       	cpc	r29, r17
 2fe:	d0 f3       	brcs	.-12     	; 0x2f4 <delay_us+0x14>
 300:	df 91       	pop	r29
 302:	cf 91       	pop	r28
 304:	1f 91       	pop	r17
 306:	0f 91       	pop	r16
 308:	08 95       	ret

0000030a <delay_1ms>:
	  }
}
void delay_1ms(void)
{
 30a:	84 e7       	ldi	r24, 0x74	; 116
 30c:	94 e0       	ldi	r25, 0x04	; 4
   unsigned int itemp;
   for(itemp=1;itemp<1142;itemp++);
 30e:	07 97       	sbiw	r24, 0x07	; 7
 310:	97 ff       	sbrs	r25, 7
 312:	fd cf       	rjmp	.-6      	; 0x30e <delay_1ms+0x4>
 314:	08 95       	ret

00000316 <delay_ms>:
}
void delay_ms(unsigned int itimes)
{
 316:	0f 93       	push	r16
 318:	1f 93       	push	r17
 31a:	cf 93       	push	r28
 31c:	df 93       	push	r29
 31e:	8c 01       	movw	r16, r24
   unsigned int itemp;
   for (itemp=0;itemp<itimes;itemp++)
 320:	c0 e0       	ldi	r28, 0x00	; 0
 322:	d0 e0       	ldi	r29, 0x00	; 0
 324:	c8 17       	cp	r28, r24
 326:	d9 07       	cpc	r29, r25
 328:	30 f4       	brcc	.+12     	; 0x336 <delay_ms+0x20>
      {
	     delay_1ms();
 32a:	0e 94 85 01 	call	0x30a <delay_1ms>
 32e:	21 96       	adiw	r28, 0x01	; 1
 330:	c0 17       	cp	r28, r16
 332:	d1 07       	cpc	r29, r17
 334:	d0 f3       	brcs	.-12     	; 0x32a <delay_ms+0x14>
 336:	df 91       	pop	r29
 338:	cf 91       	pop	r28
 33a:	1f 91       	pop	r17
 33c:	0f 91       	pop	r16
 33e:	08 95       	ret

00000340 <mcu_init>:


void mcu_init(void)
{
   DDRD = 0XFF;
 340:	8f ef       	ldi	r24, 0xFF	; 255
 342:	81 bb       	out	0x11, r24	; 17
   PORTD = 0XFF;
 344:	82 bb       	out	0x12, r24	; 18
   DDRA = 0XFF;
 346:	8a bb       	out	0x1a, r24	; 26
   PORTA = 0XFF;
 348:	8b bb       	out	0x1b, r24	; 27
//   DDRA = 0XFF;
   DDRC = 0XFF;
 34a:	84 bb       	out	0x14, r24	; 20
 34c:	08 95       	ret

0000034e <main>:
 //  PORTA = 0XFF;
 //  PORTC = 0XFF;
}
void main()
{
 34e:	cf e5       	ldi	r28, 0x5F	; 95
 350:	d4 e0       	ldi	r29, 0x04	; 4
 352:	de bf       	out	0x3e, r29	; 62
 354:	cd bf       	out	0x3d, r28	; 61
	mcu_init();
 356:	0e 94 a0 01 	call	0x340 <mcu_init>
	LCDReady();
 35a:	0e 94 03 01 	call	0x206 <LCDReady>
   LcdInit();
 35e:	0e 94 23 01 	call	0x246 <LcdInit>
   CharsWrite(3,1,"PassWord");
 362:	40 e6       	ldi	r20, 0x60	; 96
 364:	50 e0       	ldi	r21, 0x00	; 0
 366:	61 e0       	ldi	r22, 0x01	; 1
 368:	70 e0       	ldi	r23, 0x00	; 0
 36a:	83 e0       	ldi	r24, 0x03	; 3
 36c:	90 e0       	ldi	r25, 0x00	; 0
 36e:	0e 94 3f 01 	call	0x27e <CharsWrite>
   CharsWrite(6,2,"V1.0");
 372:	49 e6       	ldi	r20, 0x69	; 105
 374:	50 e0       	ldi	r21, 0x00	; 0
 376:	62 e0       	ldi	r22, 0x02	; 2
 378:	70 e0       	ldi	r23, 0x00	; 0
 37a:	86 e0       	ldi	r24, 0x06	; 6
 37c:	90 e0       	ldi	r25, 0x00	; 0
 37e:	0e 94 3f 01 	call	0x27e <CharsWrite>
   delay_ms(2000);	
 382:	80 ed       	ldi	r24, 0xD0	; 208
 384:	97 e0       	ldi	r25, 0x07	; 7
 386:	0e 94 8b 01 	call	0x316 <delay_ms>
 38a:	0c 94 c7 01 	jmp	0x38e <_exit>

0000038e <_exit>:
 38e:	ff cf       	rjmp	.-2      	; 0x38e <_exit>

⌨️ 快捷键说明

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