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

📄 splc501.lss

📁 SPLC501的AVR 驱动.驱动芯片采用AVR mega16或者mega32.5根线.SPI驱动.原创作品.
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 30a:	bf 90       	pop	r11
 30c:	af 90       	pop	r10
 30e:	08 95       	ret

00000310 <Timer2Init>:
	}
}

//系统时钟:11059200Hz  分频:1024
//CTC TOP值:0x35
//误差:0.000000个系统周期
//Timer2初始化
volatile unsigned int sign_5ms=0;
void Timer2Init(void)
{
 310:	14 bc       	out	0x24, r1	; 36
	TCNT2=0x00;
	OCR2=0x35;
 312:	85 e3       	ldi	r24, 0x35	; 53
 314:	83 bd       	out	0x23, r24	; 35
	TCCR2=(1<<WGM21)|(1<<CS22)|(1<<CS21)|(1<<CS22);
 316:	8e e0       	ldi	r24, 0x0E	; 14
 318:	85 bd       	out	0x25, r24	; 37
	//TCNT2=0xcb;
	TIMSK|=1<<OCIE2;
 31a:	89 b7       	in	r24, 0x39	; 57
 31c:	80 68       	ori	r24, 0x80	; 128
 31e:	89 bf       	out	0x39, r24	; 57
 320:	08 95       	ret

00000322 <__vector_3>:
}
//Timer2 CTC中断,此中断发生周期是:5毫秒
ISR(TIMER2_COMP_vect)
{
 322:	1f 92       	push	r1
 324:	0f 92       	push	r0
 326:	0f b6       	in	r0, 0x3f	; 63
 328:	0f 92       	push	r0
 32a:	11 24       	eor	r1, r1
 32c:	8f 93       	push	r24
 32e:	9f 93       	push	r25
	sign_5ms+=1;
 330:	80 91 60 00 	lds	r24, 0x0060
 334:	90 91 61 00 	lds	r25, 0x0061
 338:	01 96       	adiw	r24, 0x01	; 1
 33a:	90 93 61 00 	sts	0x0061, r25
 33e:	80 93 60 00 	sts	0x0060, r24
 342:	9f 91       	pop	r25
 344:	8f 91       	pop	r24
 346:	0f 90       	pop	r0
 348:	0f be       	out	0x3f, r0	; 63
 34a:	0f 90       	pop	r0
 34c:	1f 90       	pop	r1
 34e:	18 95       	reti

00000350 <Timer1Init>:
}

//系统时钟:11059200Hz  分频:256
//CTC TOP值:0xA8C0
//误差:0.000000个系统周期
//Timer1初始化
volatile unsigned char sign_1s=0;
void Timer1Init(void)
{
 350:	1f bc       	out	0x2f, r1	; 47
	TCCR1A=0;
	TCCR1B=(1<<WGM12)|(1<<CS12);
 352:	8c e0       	ldi	r24, 0x0C	; 12
 354:	8e bd       	out	0x2e, r24	; 46
	OCR1A=0xA8C0;
 356:	80 ec       	ldi	r24, 0xC0	; 192
 358:	98 ea       	ldi	r25, 0xA8	; 168
 35a:	9b bd       	out	0x2b, r25	; 43
 35c:	8a bd       	out	0x2a, r24	; 42
	TIMSK|=1<<OCIE1A;
 35e:	89 b7       	in	r24, 0x39	; 57
 360:	80 61       	ori	r24, 0x10	; 16
 362:	89 bf       	out	0x39, r24	; 57
 364:	08 95       	ret

00000366 <__vector_6>:
}
//Timer1 CTC中断,此中断发生周期是:1000毫秒
ISR(TIMER1_COMPA_vect)
{
 366:	1f 92       	push	r1
 368:	0f 92       	push	r0
 36a:	0f b6       	in	r0, 0x3f	; 63
 36c:	0f 92       	push	r0
 36e:	11 24       	eor	r1, r1
 370:	8f 93       	push	r24
	sign_1s++;
 372:	80 91 62 00 	lds	r24, 0x0062
 376:	8f 5f       	subi	r24, 0xFF	; 255
 378:	80 93 62 00 	sts	0x0062, r24
 37c:	8f 91       	pop	r24
 37e:	0f 90       	pop	r0
 380:	0f be       	out	0x3f, r0	; 63
 382:	0f 90       	pop	r0
 384:	1f 90       	pop	r1
 386:	18 95       	reti

00000388 <MCU_Init>:
}

void MCU_Init(void)
{
 388:	d0 9a       	sbi	0x1a, 0	; 26
	SPLC501_CLK_DDR|=SPLC501_CLK;
	SPLC501_DIN_DDR|=SPLC501_DIN;
 38a:	d1 9a       	sbi	0x1a, 1	; 26
	SPLC501_A0_DDR|=SPLC501_A0;
 38c:	d2 9a       	sbi	0x1a, 2	; 26
	SPLC501_CS_DDR|=SPLC501_CS;
 38e:	d4 9a       	sbi	0x1a, 4	; 26
	SPLC501_RES_DDR|=SPLC501_RES;
 390:	d3 9a       	sbi	0x1a, 3	; 26
 392:	08 95       	ret

00000394 <main>:
}

int main(void)
{
 394:	0f 93       	push	r16
	unsigned char i=32;
	unsigned char j=0;
	unsigned char lie=16;
	unsigned char n=0;
	unsigned char hang=0;
	unsigned char line=0;
	MCU_Init();
 396:	0e 94 c4 01 	call	0x388	; 0x388 <MCU_Init>
	LCD_Init();
 39a:	0e 94 e3 00 	call	0x1c6	; 0x1c6 <LCD_Init>
	Timer1Init();
 39e:	0e 94 a8 01 	call	0x350	; 0x350 <Timer1Init>
	Timer2Init();
 3a2:	0e 94 88 01 	call	0x310	; 0x310 <Timer2Init>
	asm("sei");
 3a6:	78 94       	sei
	//Test(0xaa,0x55);	//全屏测试
	Test(0x00,0x00);	//数据清0
 3a8:	60 e0       	ldi	r22, 0x00	; 0
 3aa:	80 e0       	ldi	r24, 0x00	; 0
 3ac:	0e 94 10 01 	call	0x220	; 0x220 <Test>
	DisplayWords((unsigned int)HZK+(j++)*i	,hang,2,(n++)*lie,16);
 3b0:	00 e1       	ldi	r16, 0x10	; 16
 3b2:	20 e0       	ldi	r18, 0x00	; 0
 3b4:	42 e0       	ldi	r20, 0x02	; 2
 3b6:	60 e0       	ldi	r22, 0x00	; 0
 3b8:	84 e5       	ldi	r24, 0x54	; 84
 3ba:	90 e0       	ldi	r25, 0x00	; 0
 3bc:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+j*i	 	,hang,2,(n++)*lie,16);
 3c0:	20 e1       	ldi	r18, 0x10	; 16
 3c2:	42 e0       	ldi	r20, 0x02	; 2
 3c4:	60 e0       	ldi	r22, 0x00	; 0
 3c6:	84 e7       	ldi	r24, 0x74	; 116
 3c8:	90 e0       	ldi	r25, 0x00	; 0
 3ca:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+(j++)*i	,hang,2,(n++)*lie,16);
 3ce:	20 e2       	ldi	r18, 0x20	; 32
 3d0:	42 e0       	ldi	r20, 0x02	; 2
 3d2:	60 e0       	ldi	r22, 0x00	; 0
 3d4:	84 e7       	ldi	r24, 0x74	; 116
 3d6:	90 e0       	ldi	r25, 0x00	; 0
 3d8:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+j*i	 	,hang,2,(n++)*lie,16);
 3dc:	20 e3       	ldi	r18, 0x30	; 48
 3de:	42 e0       	ldi	r20, 0x02	; 2
 3e0:	60 e0       	ldi	r22, 0x00	; 0
 3e2:	84 e9       	ldi	r24, 0x94	; 148
 3e4:	90 e0       	ldi	r25, 0x00	; 0
 3e6:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+(j++)*i	,hang,2,(n++)*lie,16);
 3ea:	20 e4       	ldi	r18, 0x40	; 64
 3ec:	42 e0       	ldi	r20, 0x02	; 2
 3ee:	60 e0       	ldi	r22, 0x00	; 0
 3f0:	84 e9       	ldi	r24, 0x94	; 148
 3f2:	90 e0       	ldi	r25, 0x00	; 0
 3f4:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	n=0;
	hang+=2;
	DisplayWords((unsigned int)HZK+(j++)*i	,hang,2,(n++)*lie,16);
 3f8:	20 e0       	ldi	r18, 0x00	; 0
 3fa:	42 e0       	ldi	r20, 0x02	; 2
 3fc:	62 e0       	ldi	r22, 0x02	; 2
 3fe:	84 eb       	ldi	r24, 0xB4	; 180
 400:	90 e0       	ldi	r25, 0x00	; 0
 402:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+(j++)*i	,hang,2,(n++)*lie,16);
 406:	20 e1       	ldi	r18, 0x10	; 16
 408:	42 e0       	ldi	r20, 0x02	; 2
 40a:	62 e0       	ldi	r22, 0x02	; 2
 40c:	84 ed       	ldi	r24, 0xD4	; 212
 40e:	90 e0       	ldi	r25, 0x00	; 0
 410:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+(j++)*i	,hang,2,(n++)*lie,16);
 414:	20 e2       	ldi	r18, 0x20	; 32
 416:	42 e0       	ldi	r20, 0x02	; 2
 418:	62 e0       	ldi	r22, 0x02	; 2
 41a:	84 ef       	ldi	r24, 0xF4	; 244
 41c:	90 e0       	ldi	r25, 0x00	; 0
 41e:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+(j++)*i	,hang,2,(n++)*lie,16);
 422:	20 e3       	ldi	r18, 0x30	; 48
 424:	42 e0       	ldi	r20, 0x02	; 2
 426:	62 e0       	ldi	r22, 0x02	; 2
 428:	84 e1       	ldi	r24, 0x14	; 20
 42a:	91 e0       	ldi	r25, 0x01	; 1
 42c:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+j*i	 	,hang,2,(n++)*lie,16);
 430:	20 e4       	ldi	r18, 0x40	; 64
 432:	42 e0       	ldi	r20, 0x02	; 2
 434:	62 e0       	ldi	r22, 0x02	; 2
 436:	84 e3       	ldi	r24, 0x34	; 52
 438:	91 e0       	ldi	r25, 0x01	; 1
 43a:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+(j++)*i	,hang,2,(n++)*lie,16);
 43e:	20 e5       	ldi	r18, 0x50	; 80
 440:	42 e0       	ldi	r20, 0x02	; 2
 442:	62 e0       	ldi	r22, 0x02	; 2
 444:	84 e3       	ldi	r24, 0x34	; 52
 446:	91 e0       	ldi	r25, 0x01	; 1
 448:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+2*i		,hang,2,(n++)*lie,16);
 44c:	20 e6       	ldi	r18, 0x60	; 96
 44e:	42 e0       	ldi	r20, 0x02	; 2
 450:	62 e0       	ldi	r22, 0x02	; 2
 452:	84 e9       	ldi	r24, 0x94	; 148
 454:	90 e0       	ldi	r25, 0x00	; 0
 456:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
	DisplayWords((unsigned int)HZK+2*i	 	,hang,2,(n++)*lie,16);
 45a:	20 e7       	ldi	r18, 0x70	; 112
 45c:	42 e0       	ldi	r20, 0x02	; 2
 45e:	62 e0       	ldi	r22, 0x02	; 2
 460:	84 e9       	ldi	r24, 0x94	; 148
 462:	90 e0       	ldi	r25, 0x00	; 0
 464:	0e 94 40 01 	call	0x280	; 0x280 <DisplayWords>
 468:	00 e0       	ldi	r16, 0x00	; 0
	while(1)
	{
		//if(sign_5ms>=200)
		if(sign_1s)
 46a:	80 91 62 00 	lds	r24, 0x0062
 46e:	88 23       	and	r24, r24
 470:	e1 f3       	breq	.-8      	; 0x46a <__stack+0xb>
		{
			//sign_5ms=0;
			sign_1s=0;
 472:	10 92 62 00 	sts	0x0062, r1
			line&=0x3f;				//line=0~63
 476:	80 2f       	mov	r24, r16
 478:	8f 73       	andi	r24, 0x3F	; 63
			SPLC501LineRun(line--);	//滚屏
 47a:	08 2f       	mov	r16, r24
 47c:	01 50       	subi	r16, 0x01	; 1
 47e:	0e 94 de 00 	call	0x1bc	; 0x1bc <SPLC501LineRun>
 482:	f3 cf       	rjmp	.-26     	; 0x46a <__stack+0xb>

00000484 <Frame_dis>:
		}
	}
}

void Frame_dis(unsigned char *p)//显示128×64图像函数,指针p指向图片数组首地址
{	//frame 帧
 484:	ef 92       	push	r14
 486:	ff 92       	push	r15
 488:	0f 93       	push	r16
 48a:	1f 93       	push	r17
 48c:	cf 93       	push	r28
 48e:	df 93       	push	r29
 490:	ec 01       	movw	r28, r24
 492:	80 eb       	ldi	r24, 0xB0	; 176
 494:	7e 01       	movw	r14, r28
	unsigned char i,j;
	unsigned char page=0xb0;	//指向首页命令
	for(i=0;i<8;i++)			//共8页
	{ 
		SPLC501SPIWrite(page++,0);
 496:	08 2f       	mov	r16, r24
 498:	0f 5f       	subi	r16, 0xFF	; 255
 49a:	60 e0       	ldi	r22, 0x00	; 0
 49c:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
		SPLC501SPIWrite(0x10,0);   //设定列地址高4位为0
 4a0:	60 e0       	ldi	r22, 0x00	; 0
 4a2:	80 e1       	ldi	r24, 0x10	; 16
 4a4:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
		SPLC501SPIWrite(0x04,0);   //设定列地址低4位为0
 4a8:	60 e0       	ldi	r22, 0x00	; 0
 4aa:	84 e0       	ldi	r24, 0x04	; 4
 4ac:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
 4b0:	10 e0       	ldi	r17, 0x00	; 0
		for(j=0;j<128;j++)SPLC501SPIWrite(*p++,1);//共128列
 4b2:	61 e0       	ldi	r22, 0x01	; 1
 4b4:	f7 01       	movw	r30, r14
 4b6:	81 91       	ld	r24, Z+
 4b8:	7f 01       	movw	r14, r30
 4ba:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
 4be:	1f 5f       	subi	r17, 0xFF	; 255
 4c0:	10 38       	cpi	r17, 0x80	; 128
 4c2:	b9 f7       	brne	.-18     	; 0x4b2 <Frame_dis+0x2e>
 4c4:	c0 58       	subi	r28, 0x80	; 128
 4c6:	df 4f       	sbci	r29, 0xFF	; 255
 4c8:	08 3b       	cpi	r16, 0xB8	; 184
 4ca:	11 f0       	breq	.+4      	; 0x4d0 <Frame_dis+0x4c>
 4cc:	80 2f       	mov	r24, r16
 4ce:	e2 cf       	rjmp	.-60     	; 0x494 <Frame_dis+0x10>
 4d0:	df 91       	pop	r29
 4d2:	cf 91       	pop	r28
 4d4:	1f 91       	pop	r17
 4d6:	0f 91       	pop	r16
 4d8:	ff 90       	pop	r15
 4da:	ef 90       	pop	r14
 4dc:	08 95       	ret

000004de <Plot>:
	} 
}

void Plot(unsigned char *P)		//p指向曲线数组首地址
{ 
 4de:	af 92       	push	r10
 4e0:	bf 92       	push	r11
 4e2:	cf 92       	push	r12
 4e4:	df 92       	push	r13
 4e6:	ef 92       	push	r14
 4e8:	ff 92       	push	r15
 4ea:	0f 93       	push	r16
 4ec:	1f 93       	push	r17
 4ee:	cf 93       	push	r28
 4f0:	df 93       	push	r29
 4f2:	5c 01       	movw	r10, r24
	unsigned char i,j;
	unsigned char x,x1;
	unsigned int d;
	SPLC501SPIWrite(0x10,0);	//SET COLUMN ADDRESS MSB
 4f4:	60 e0       	ldi	r22, 0x00	; 0
 4f6:	80 e1       	ldi	r24, 0x10	; 16
 4f8:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
	SPLC501SPIWrite(0x04,0);	//SET COLUMN ADDRESS LSB,
 4fc:	60 e0       	ldi	r22, 0x00	; 0
 4fe:	84 e0       	ldi	r24, 0x04	; 4
 500:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
 504:	ee 24       	eor	r14, r14
 506:	ff 24       	eor	r15, r15
 508:	ce 2c       	mov	r12, r14
	for(i=0;i<128;i++)
	{
		d=*P;
 50a:	f5 01       	movw	r30, r10
 50c:	80 81       	ld	r24, Z
 50e:	28 2f       	mov	r18, r24
 510:	33 27       	eor	r19, r19
 512:	20 34       	cpi	r18, 0x40	; 64
 514:	31 05       	cpc	r19, r1
 516:	10 f0       	brcs	.+4      	; 0x51c <Plot+0x3e>
 518:	2f e3       	ldi	r18, 0x3F	; 63
 51a:	30 e0       	ldi	r19, 0x00	; 0
		if(d>63)d=63;
		x=7-d/8;
 51c:	c9 01       	movw	r24, r18
 51e:	33 e0       	ldi	r19, 0x03	; 3
 520:	96 95       	lsr	r25
 522:	87 95       	ror	r24
 524:	3a 95       	dec	r19
 526:	e1 f7       	brne	.-8      	; 0x520 <Plot+0x42>
 528:	97 e0       	ldi	r25, 0x07	; 7
 52a:	d9 2e       	mov	r13, r25
 52c:	d8 1a       	sub	r13, r24
		x1=7-(d&7);
 52e:	02 2f       	mov	r16, r18
 530:	00 95       	com	r16
 532:	07 70       	andi	r16, 0x07	; 7
 534:	c0 e0       	ldi	r28, 0x00	; 0

⌨️ 快捷键说明

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