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

📄 ks0108test.lss

📁 for ks0108 LCD Controller
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     63a:	cd b7       	in	r28, 0x3d	; 61
     63c:	de b7       	in	r29, 0x3e	; 62
     63e:	21 97       	sbiw	r28, 0x01	; 1
     640:	0f b6       	in	r0, 0x3f	; 63
     642:	f8 94       	cli
     644:	de bf       	out	0x3e, r29	; 62
     646:	0f be       	out	0x3f, r0	; 63
     648:	cd bf       	out	0x3d, r28	; 61
     64a:	12 ba       	out	0x12, r1	; 18
     64c:	11 ba       	out	0x11, r1	; 17
     64e:	90 91 62 00 	lds	r25, 0x0062
     652:	90 34       	cpi	r25, 0x40	; 64
     654:	18 f4       	brcc	.+6      	; 0x65c <ks0108DoReadData+0x28>
     656:	ac 98       	cbi	0x15, 4	; 21
     658:	ab 9a       	sbi	0x15, 3	; 21
     65a:	09 c0       	rjmp	.+18     	; 0x66e <ks0108DoReadData+0x3a>
     65c:	ab 98       	cbi	0x15, 3	; 21
     65e:	ac 9a       	sbi	0x15, 4	; 21
     660:	90 34       	cpi	r25, 0x40	; 64
     662:	29 f4       	brne	.+10     	; 0x66e <ks0108DoReadData+0x3a>
     664:	88 23       	and	r24, r24
     666:	19 f0       	breq	.+6      	; 0x66e <ks0108DoReadData+0x3a>
     668:	61 e0       	ldi	r22, 0x01	; 1
     66a:	80 e4       	ldi	r24, 0x40	; 64
     66c:	af df       	rcall	.-162    	; 0x5cc <ks0108WriteCommand>
     66e:	a8 9a       	sbi	0x15, 0	; 21
     670:	a9 9a       	sbi	0x15, 1	; 21
     672:	aa 9a       	sbi	0x15, 2	; 21
     674:	00 00       	nop
     676:	00 00       	nop
     678:	00 00       	nop
     67a:	10 b3       	in	r17, 0x10	; 16
     67c:	aa 98       	cbi	0x15, 2	; 21
     67e:	19 82       	std	Y+1, r1	; 0x01
     680:	03 c0       	rjmp	.+6      	; 0x688 <ks0108DoReadData+0x54>
     682:	89 81       	ldd	r24, Y+1	; 0x01
     684:	8f 5f       	subi	r24, 0xFF	; 255
     686:	89 83       	std	Y+1, r24	; 0x01
     688:	89 81       	ldd	r24, Y+1	; 0x01
     68a:	88 30       	cpi	r24, 0x08	; 8
     68c:	d0 f3       	brcs	.-12     	; 0x682 <ks0108DoReadData+0x4e>
     68e:	8f ef       	ldi	r24, 0xFF	; 255
     690:	81 bb       	out	0x11, r24	; 17
     692:	60 91 63 00 	lds	r22, 0x0063
     696:	80 91 62 00 	lds	r24, 0x0062
     69a:	aa df       	rcall	.-172    	; 0x5f0 <ks0108GotoXY>
     69c:	80 91 60 00 	lds	r24, 0x0060
     6a0:	81 11       	cpse	r24, r1
     6a2:	10 95       	com	r17
     6a4:	81 2f       	mov	r24, r17
     6a6:	99 27       	eor	r25, r25
     6a8:	21 96       	adiw	r28, 0x01	; 1
     6aa:	0f b6       	in	r0, 0x3f	; 63
     6ac:	f8 94       	cli
     6ae:	de bf       	out	0x3e, r29	; 62
     6b0:	0f be       	out	0x3f, r0	; 63
     6b2:	cd bf       	out	0x3d, r28	; 61
     6b4:	df 91       	pop	r29
     6b6:	cf 91       	pop	r28
     6b8:	1f 91       	pop	r17
     6ba:	08 95       	ret

000006bc <ks0108ReadData>:
     6bc:	81 e0       	ldi	r24, 0x01	; 1
     6be:	ba df       	rcall	.-140    	; 0x634 <ks0108DoReadData>
     6c0:	80 e0       	ldi	r24, 0x00	; 0
     6c2:	b8 df       	rcall	.-144    	; 0x634 <ks0108DoReadData>
     6c4:	99 27       	eor	r25, r25
     6c6:	08 95       	ret

000006c8 <ks0108WriteData>:
}

void ks0108WriteData(uint8_t data) {
     6c8:	ef 92       	push	r14
     6ca:	ff 92       	push	r15
     6cc:	0f 93       	push	r16
     6ce:	1f 93       	push	r17
     6d0:	cf 93       	push	r28
     6d2:	df 93       	push	r29
     6d4:	08 2f       	mov	r16, r24
	uint8_t displayData, yOffset, cmdPort;

#ifdef DEBUG
	volatile uint16_t i;
	for(i=0; i<5000; i++);
#endif

	if(ks0108Coord.x >= 128)
     6d6:	80 91 62 00 	lds	r24, 0x0062
     6da:	87 fd       	sbrc	r24, 7
     6dc:	59 c0       	rjmp	.+178    	; 0x790 <ks0108WriteData+0xc8>
		return;

	if(ks0108Coord.x < 64) {
     6de:	80 34       	cpi	r24, 0x40	; 64
     6e0:	18 f4       	brcc	.+6      	; 0x6e8 <ks0108WriteData+0x20>
		LCD_CMD_PORT &= ~(0x01 << CSEL2);			// deselect chip 2
     6e2:	ac 98       	cbi	0x15, 4	; 21
		LCD_CMD_PORT |= 0x01 << CSEL1;				// select chip 1
     6e4:	ab 9a       	sbi	0x15, 3	; 21
     6e6:	06 c0       	rjmp	.+12     	; 0x6f4 <ks0108WriteData+0x2c>
	} else if(ks0108Coord.x >= 64) {
		LCD_CMD_PORT &= ~(0x01 << CSEL1);			// deselect chip 1
     6e8:	ab 98       	cbi	0x15, 3	; 21
		LCD_CMD_PORT |= 0x01 << CSEL2;				// select chip 2
     6ea:	ac 9a       	sbi	0x15, 4	; 21
	}
	if(ks0108Coord.x == 64)							// chip2 X-address = 0
     6ec:	80 34       	cpi	r24, 0x40	; 64
     6ee:	11 f4       	brne	.+4      	; 0x6f4 <ks0108WriteData+0x2c>
		ks0108WriteCommand(LCD_SET_ADD, CHIP2);
     6f0:	61 e0       	ldi	r22, 0x01	; 1
     6f2:	6c df       	rcall	.-296    	; 0x5cc <ks0108WriteCommand>
	
	LCD_CMD_PORT |= 0x01 << D_I;					// D/I = 1
     6f4:	a8 9a       	sbi	0x15, 0	; 21
	LCD_CMD_PORT &= ~(0x01 << R_W);					// R/W = 0
     6f6:	a9 98       	cbi	0x15, 1	; 21
	LCD_DATA_DIR = 0xFF;							// data port is output
     6f8:	8f ef       	ldi	r24, 0xFF	; 255
     6fa:	e8 2e       	mov	r14, r24
     6fc:	e1 ba       	out	0x11, r14	; 17
	
	
	yOffset = ks0108Coord.y%8;
     6fe:	10 91 63 00 	lds	r17, 0x0063
     702:	17 70       	andi	r17, 0x07	; 7
	if(yOffset != 0) {
     704:	c9 f1       	breq	.+114    	; 0x778 <ks0108WriteData+0xb0>
		// first page
		cmdPort = LCD_CMD_PORT;						// save command port
     706:	f5 b2       	in	r15, 0x15	; 21
		displayData = ks0108ReadData();
     708:	d9 df       	rcall	.-78     	; 0x6bc <ks0108ReadData>
		
		LCD_CMD_PORT = cmdPort;						// restore command port
     70a:	f5 ba       	out	0x15, r15	; 21
		LCD_DATA_DIR = 0xFF;						// data port is output
     70c:	e1 ba       	out	0x11, r14	; 17
		
		displayData |= data << yOffset;
     70e:	c0 2f       	mov	r28, r16
     710:	dd 27       	eor	r29, r29
     712:	01 2f       	mov	r16, r17
     714:	11 27       	eor	r17, r17
     716:	9e 01       	movw	r18, r28
     718:	00 2e       	mov	r0, r16
     71a:	02 c0       	rjmp	.+4      	; 0x720 <ks0108WriteData+0x58>
     71c:	22 0f       	add	r18, r18
     71e:	33 1f       	adc	r19, r19
     720:	0a 94       	dec	r0
     722:	e2 f7       	brpl	.-8      	; 0x71c <ks0108WriteData+0x54>
     724:	98 2f       	mov	r25, r24
     726:	92 2b       	or	r25, r18
		if(ks0108Inverted)
     728:	80 91 60 00 	lds	r24, 0x0060
     72c:	81 11       	cpse	r24, r1
			displayData = ~displayData;
     72e:	90 95       	com	r25
		LCD_DATA_OUT = displayData;					// write data
     730:	92 bb       	out	0x12, r25	; 18
		ks0108Enable();								// enable
     732:	2c df       	rcall	.-424    	; 0x58c <ks0108Enable>
		
		// second page
		ks0108GotoXY(ks0108Coord.x, ks0108Coord.y+8);
     734:	60 91 63 00 	lds	r22, 0x0063
     738:	68 5f       	subi	r22, 0xF8	; 248
     73a:	80 91 62 00 	lds	r24, 0x0062
     73e:	58 df       	rcall	.-336    	; 0x5f0 <ks0108GotoXY>
		
		displayData = ks0108ReadData();
     740:	bd df       	rcall	.-134    	; 0x6bc <ks0108ReadData>
		
		LCD_CMD_PORT = cmdPort;						// restore command port
     742:	f5 ba       	out	0x15, r15	; 21
		LCD_DATA_DIR = 0xFF;						// data port is output
     744:	e1 ba       	out	0x11, r14	; 17
		
		displayData |= data >> (8-yOffset);
     746:	28 e0       	ldi	r18, 0x08	; 8
     748:	30 e0       	ldi	r19, 0x00	; 0
     74a:	20 1b       	sub	r18, r16
     74c:	31 0b       	sbc	r19, r17
     74e:	02 c0       	rjmp	.+4      	; 0x754 <ks0108WriteData+0x8c>
     750:	d5 95       	asr	r29
     752:	c7 95       	ror	r28
     754:	2a 95       	dec	r18
     756:	e2 f7       	brpl	.-8      	; 0x750 <ks0108WriteData+0x88>
     758:	28 2f       	mov	r18, r24
     75a:	2c 2b       	or	r18, r28
		if(ks0108Inverted)
     75c:	80 91 60 00 	lds	r24, 0x0060
     760:	81 11       	cpse	r24, r1
			displayData = ~displayData;
     762:	20 95       	com	r18
		LCD_DATA_OUT = displayData;					// write data
     764:	22 bb       	out	0x12, r18	; 18
		ks0108Enable();								// enable
     766:	12 df       	rcall	.-476    	; 0x58c <ks0108Enable>
		
		ks0108GotoXY(ks0108Coord.x+1, ks0108Coord.y-8);
     768:	60 91 63 00 	lds	r22, 0x0063
     76c:	68 50       	subi	r22, 0x08	; 8
     76e:	80 91 62 00 	lds	r24, 0x0062
     772:	8f 5f       	subi	r24, 0xFF	; 255
     774:	3d df       	rcall	.-390    	; 0x5f0 <ks0108GotoXY>
     776:	0b c0       	rjmp	.+22     	; 0x78e <ks0108WriteData+0xc6>
	} else {
		if(ks0108Inverted)
     778:	80 91 60 00 	lds	r24, 0x0060
     77c:	81 11       	cpse	r24, r1
			data = ~data;
     77e:	00 95       	com	r16
		LCD_DATA_OUT = data;						// write data
     780:	02 bb       	out	0x12, r16	; 18
		ks0108Enable();								// enable
     782:	04 df       	rcall	.-504    	; 0x58c <ks0108Enable>
		ks0108Coord.x++;
     784:	80 91 62 00 	lds	r24, 0x0062
     788:	8f 5f       	subi	r24, 0xFF	; 255
     78a:	80 93 62 00 	sts	0x0062, r24
	}
	LCD_DATA_OUT = 0x00;
     78e:	12 ba       	out	0x12, r1	; 18
     790:	df 91       	pop	r29
     792:	cf 91       	pop	r28
     794:	1f 91       	pop	r17
     796:	0f 91       	pop	r16
     798:	ff 90       	pop	r15
     79a:	ef 90       	pop	r14
     79c:	08 95       	ret

0000079e <ks0108PutChar>:
     79e:	3f 92       	push	r3
     7a0:	4f 92       	push	r4
     7a2:	5f 92       	push	r5
     7a4:	6f 92       	push	r6
     7a6:	7f 92       	push	r7
     7a8:	8f 92       	push	r8
     7aa:	9f 92       	push	r9
     7ac:	af 92       	push	r10
     7ae:	bf 92       	push	r11
     7b0:	cf 92       	push	r12
     7b2:	df 92       	push	r13
     7b4:	ef 92       	push	r14
     7b6:	ff 92       	push	r15
     7b8:	0f 93       	push	r16
     7ba:	1f 93       	push	r17
     7bc:	cf 93       	push	r28
     7be:	df 93       	push	r29
     7c0:	08 2f       	mov	r16, r24
     7c2:	80 91 67 00 	lds	r24, 0x0067
     7c6:	90 91 68 00 	lds	r25, 0x0068
     7ca:	e0 91 65 00 	lds	r30, 0x0065
     7ce:	f0 91 66 00 	lds	r31, 0x0066
     7d2:	03 96       	adiw	r24, 0x03	; 3
     7d4:	09 95       	icall
     7d6:	f8 2e       	mov	r15, r24
     7d8:	80 91 67 00 	lds	r24, 0x0067
     7dc:	90 91 68 00 	lds	r25, 0x0068
     7e0:	e0 91 65 00 	lds	r30, 0x0065
     7e4:	f0 91 66 00 	lds	r31, 0x0066
     7e8:	04 96       	adiw	r24, 0x04	; 4
     7ea:	09 95       	icall
     7ec:	18 2f       	mov	r17, r24
     7ee:	80 91 67 00 	lds	r24, 0x0067
     7f2:	90 91 68 00 	lds	r25, 0x0068
     7f6:	e0 91 65 00 	lds	r30, 0x0065
     7fa:	f0 91 66 00 	lds	r31, 0x0066
     7fe:	05 96       	adiw	r24, 0x05	; 5
     800:	09 95       	icall
     802:	c8 2e       	mov	r12, r24
     804:	70 90 62 00 	lds	r7, 0x0062
     808:	30 90 63 00 	lds	r3, 0x0063
     80c:	01 17       	cp	r16, r17
     80e:	08 f4       	brcc	.+2      	; 0x812 <ks0108PutChar+0x74>
     810:	97 c0       	rjmp	.+302    	; 0x940 <ks0108PutChar+0x1a2>
     812:	20 2f       	mov	r18, r16
     814:	33 27       	eor	r19, r19
     816:	41 2f       	mov	r20, r17
     818:	48 0f       	add	r20, r24
     81a:	51 2d       	mov	r21, r1
     81c:	51 1d       	adc	r21, r1
     81e:	24 17       	cp	r18, r20
     820:	35 07       	cpc	r19, r21
     822:	0c f0       	brlt	.+2      	; 0x826 <ks0108PutChar+0x88>
     824:	8d c0       	rjmp	.+282    	; 0x940 <ks0108PutChar+0x1a2>
     826:	d0 2e       	mov	r13, r16
     828:	d1 1a       	sub	r13, r17
     82a:	c0 e0       	ldi	r28, 0x00	; 0
     82c:	d0 e0       	ldi	r29, 0x00	; 0
     82e:	10 e0       	ldi	r17, 0x00	; 0
     830:	08 c0       	rjmp	.+16     	; 0x842 <ks0108PutChar+0xa4>
     832:	21 0f       	add	r18, r17
     834:	31 1d       	adc	r19, r1
     836:	c9 01       	movw	r24, r18
     838:	06 96       	adiw	r24, 0x06	; 6
     83a:	09 95       	icall
     83c:	c8 0f       	add	r28, r24
     83e:	d1 1d       	adc	r29, r1
     840:	1f 5f       	subi	r17, 0xFF	; 255
     842:	20 91 67 00 	lds	r18, 0x0067
     846:	30 91 68 00 	lds	r19, 0x0068
     84a:	e0 91 65 00 	lds	r30, 0x0065
     84e:	f0 91 66 00 	lds	r31, 0x0066
     852:	1d 15       	cp	r17, r13
     854:	71 f7       	brne	.-36     	; 0x832 <ks0108PutChar+0x94>
     856:	ef 2c       	mov	r14, r15
     858:	ff 24       	eor	r15, r15
     85a:	c7 01       	movw	r24, r14
     85c:	07 96       	adiw	r24, 0x07	; 7
     85e:	68 e0       	ldi	r22, 0x08	; 8
     860:	70 e0       	ldi	r23, 0x00	; 0
     862:	8e d4       	rcall	.+2332   	; 0x1180 <__divmodhi4>
     864:	46 2e       	mov	r4, r22
     866:	55 24       	eor	r5, r5
     868:	c4 9d       	mul	r28, r4
     86a:	80 01       	movw	r16, r0
     86c:	c5 9d       	mul	r28, r5
     86e:	10 0d       	add	r17, r0
     870:	d4 9d       	mul	r29, r4
     872:	10 0d       	add	r17, r0
     874:	11 24       	eor	r1, r1
     876:	8c 2d       	mov	r24, r12
     878:	99 27       	eor	r25, r25
     87a:	06 96       	adiw	r24, 0x06	; 6
     87c:	08 0f       	add	r16, r24
     87e:	19 1f       	adc	r17, r25
     880:	2d 0d       	add	r18, r13
     882:	31 1d       	adc	r19, r1
     884:	c9 01       	movw	r24, r18

⌨️ 快捷键说明

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