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

📄 main.lss

📁 液晶显示屏12232的开发程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:
}
}
     c18:	0f 90       	pop	r0
     c1a:	cf 91       	pop	r28
     c1c:	df 91       	pop	r29
     c1e:	1f 91       	pop	r17
     c20:	0f 91       	pop	r16
     c22:	ff 90       	pop	r15
     c24:	ef 90       	pop	r14
     c26:	df 90       	pop	r13
     c28:	cf 90       	pop	r12
     c2a:	bf 90       	pop	r11
     c2c:	9f 90       	pop	r9
     c2e:	8f 90       	pop	r8
     c30:	08 95       	ret

00000c32 <Draw_num>:


void Draw_num(uchar d_where,uint x_add,uchar layer,uchar width)
{
     c32:	8f 92       	push	r8
     c34:	9f 92       	push	r9
     c36:	bf 92       	push	r11
     c38:	cf 92       	push	r12
     c3a:	df 92       	push	r13
     c3c:	ef 92       	push	r14
     c3e:	ff 92       	push	r15
     c40:	0f 93       	push	r16
     c42:	1f 93       	push	r17
     c44:	df 93       	push	r29
     c46:	cf 93       	push	r28
     c48:	0f 92       	push	r0
     c4a:	cd b7       	in	r28, 0x3d	; 61
     c4c:	de b7       	in	r29, 0x3e	; 62
     c4e:	b4 2e       	mov	r11, r20
uchar x,address;     //address表示显存的物理地址
uchar window=0;  //window表示左右两页
//putcharR    //右边
//putcharL    //左边
d_where=d_where*16;
     c50:	c8 2e       	mov	r12, r24
     c52:	c2 94       	swap	r12
     c54:	e0 ef       	ldi	r30, 0xF0	; 240
     c56:	ce 22       	and	r12, r30
     c58:	86 2f       	mov	r24, r22
     c5a:	97 2f       	mov	r25, r23
     c5c:	4c 01       	movw	r8, r24
     c5e:	d2 2e       	mov	r13, r18
     c60:	19 82       	std	Y+1, r1	; 0x01
}
}


void Draw_num(uchar d_where,uint x_add,uchar layer,uchar width)
{
     c62:	c6 1a       	sub	r12, r22
     c64:	e2 2e       	mov	r14, r18
     c66:	ff 24       	eor	r15, r15
     c68:	94 c0       	rjmp	.+296    	; 0xd92 <Draw_num+0x160>
//putcharR    //右边
//putcharL    //左边
d_where=d_where*16;
for (x=width;x>1;x--)
{
if (x_add>60) {window=1;address=x_add%61;}
     c6a:	8d e3       	ldi	r24, 0x3D	; 61
     c6c:	88 16       	cp	r8, r24
     c6e:	91 04       	cpc	r9, r1
     c70:	40 f0       	brcs	.+16     	; 0xc82 <Draw_num+0x50>
     c72:	c4 01       	movw	r24, r8
     c74:	6d e3       	ldi	r22, 0x3D	; 61
     c76:	70 e0       	ldi	r23, 0x00	; 0
     c78:	0e 94 45 08 	call	0x108a	; 0x108a <__udivmodhi4>
     c7c:	18 2f       	mov	r17, r24
     c7e:	a1 e0       	ldi	r26, 0x01	; 1
     c80:	a9 83       	std	Y+1, r26	; 0x01
else address=x_add;    
if(layer==0)    //显示一行八个字
     c82:	bb 20       	and	r11, r11
     c84:	09 f0       	breq	.+2      	; 0xc88 <Draw_num+0x56>
     c86:	3d c0       	rjmp	.+122    	; 0xd02 <Draw_num+0xd0>
    {
    SetPage(0,0);
     c88:	60 e0       	ldi	r22, 0x00	; 0
     c8a:	80 e0       	ldi	r24, 0x00	; 0
     c8c:	0e 94 5b 04 	call	0x8b6	; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
     c90:	db 98       	cbi	0x1b, 3	; 27
CONTROL|=_BV(E1);
     c92:	da 9a       	sbi	0x1b, 2	; 27
DATA=i;
     c94:	15 bb       	out	0x15, r17	; 21
CONTROL&=~_BV(E1);
     c96:	da 98       	cbi	0x1b, 2	; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
     c98:	db 98       	cbi	0x1b, 3	; 27
CONTROL|=_BV(E2);
     c9a:	d9 9a       	sbi	0x1b, 1	; 27
DATA=i;
     c9c:	15 bb       	out	0x15, r17	; 21
CONTROL&=~_BV(E2);
     c9e:	d9 98       	cbi	0x1b, 1	; 27
     ca0:	e0 2f       	mov	r30, r16
     ca2:	f0 e0       	ldi	r31, 0x00	; 0
else address=x_add;    
if(layer==0)    //显示一行八个字
    {
    SetPage(0,0);
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where));//右边
     ca4:	b9 81       	ldd	r27, Y+1	; 0x01
     ca6:	b1 30       	cpi	r27, 0x01	; 1
     ca8:	41 f4       	brne	.+16     	; 0xcba <Draw_num+0x88>
     caa:	ec 5e       	subi	r30, 0xEC	; 236
     cac:	fe 4f       	sbci	r31, 0xFE	; 254
     cae:	84 91       	lpm	r24, Z+
CONTROL&=~_BV(E1);
}
//右页数据
void outsd(uchar i)
{
CONTROL|=_BV(A0);
     cb0:	db 9a       	sbi	0x1b, 3	; 27
CONTROL|=_BV(E2);
     cb2:	d9 9a       	sbi	0x1b, 1	; 27
DATA=i;
     cb4:	85 bb       	out	0x15, r24	; 21
CONTROL&=~_BV(E2);
     cb6:	d9 98       	cbi	0x1b, 1	; 27
     cb8:	07 c0       	rjmp	.+14     	; 0xcc8 <Draw_num+0x96>
if(layer==0)    //显示一行八个字
    {
    SetPage(0,0);
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where));//右边
    else    PutCharL(pgm_read_byte(numbmp+d_where));//左边
     cba:	ec 5e       	subi	r30, 0xEC	; 236
     cbc:	fe 4f       	sbci	r31, 0xFE	; 254
     cbe:	84 91       	lpm	r24, Z+


//左页数据
void outmd(uchar i)
{
CONTROL|=_BV(A0);
     cc0:	db 9a       	sbi	0x1b, 3	; 27
CONTROL|=_BV(E1);
     cc2:	da 9a       	sbi	0x1b, 2	; 27
DATA=i;
     cc4:	85 bb       	out	0x15, r24	; 21
CONTROL&=~_BV(E1);
     cc6:	da 98       	cbi	0x1b, 2	; 27
    {
    SetPage(0,0);
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where));//右边
    else    PutCharL(pgm_read_byte(numbmp+d_where));//左边
    SetPage(1,1);
     cc8:	61 e0       	ldi	r22, 0x01	; 1
     cca:	81 e0       	ldi	r24, 0x01	; 1
     ccc:	0e 94 5b 04 	call	0x8b6	; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
     cd0:	db 98       	cbi	0x1b, 3	; 27
CONTROL|=_BV(E1);
     cd2:	da 9a       	sbi	0x1b, 2	; 27
DATA=i;
     cd4:	15 bb       	out	0x15, r17	; 21
CONTROL&=~_BV(E1);
     cd6:	da 98       	cbi	0x1b, 2	; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
     cd8:	db 98       	cbi	0x1b, 3	; 27
CONTROL|=_BV(E2);
     cda:	d9 9a       	sbi	0x1b, 1	; 27
DATA=i;
     cdc:	15 bb       	out	0x15, r17	; 21
CONTROL&=~_BV(E2);
     cde:	d9 98       	cbi	0x1b, 1	; 27
     ce0:	e0 2f       	mov	r30, r16
     ce2:	f0 e0       	ldi	r31, 0x00	; 0
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where));//右边
    else    PutCharL(pgm_read_byte(numbmp+d_where));//左边
    SetPage(1,1);
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where+width));
     ce4:	89 81       	ldd	r24, Y+1	; 0x01
     ce6:	81 30       	cpi	r24, 0x01	; 1
     ce8:	31 f4       	brne	.+12     	; 0xcf6 <Draw_num+0xc4>
     cea:	ee 0d       	add	r30, r14
     cec:	ff 1d       	adc	r31, r15
     cee:	ec 5e       	subi	r30, 0xEC	; 236
     cf0:	fe 4f       	sbci	r31, 0xFE	; 254
     cf2:	84 91       	lpm	r24, Z+
     cf4:	3c c0       	rjmp	.+120    	; 0xd6e <Draw_num+0x13c>
    else    PutCharL(pgm_read_byte(numbmp+d_where+width));
     cf6:	ee 0d       	add	r30, r14
     cf8:	ff 1d       	adc	r31, r15
     cfa:	ec 5e       	subi	r30, 0xEC	; 236
     cfc:	fe 4f       	sbci	r31, 0xFE	; 254
     cfe:	84 91       	lpm	r24, Z+
     d00:	40 c0       	rjmp	.+128    	; 0xd82 <Draw_num+0x150>
    }
else
    {    //显示第二行八个汉字
    SetPage(2,2);
     d02:	62 e0       	ldi	r22, 0x02	; 2
     d04:	82 e0       	ldi	r24, 0x02	; 2
     d06:	0e 94 5b 04 	call	0x8b6	; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
     d0a:	db 98       	cbi	0x1b, 3	; 27
CONTROL|=_BV(E1);
     d0c:	da 9a       	sbi	0x1b, 2	; 27
DATA=i;
     d0e:	15 bb       	out	0x15, r17	; 21
CONTROL&=~_BV(E1);
     d10:	da 98       	cbi	0x1b, 2	; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
     d12:	db 98       	cbi	0x1b, 3	; 27
CONTROL|=_BV(E2);
     d14:	d9 9a       	sbi	0x1b, 1	; 27
DATA=i;
     d16:	15 bb       	out	0x15, r17	; 21
CONTROL&=~_BV(E2);
     d18:	d9 98       	cbi	0x1b, 1	; 27
     d1a:	e0 2f       	mov	r30, r16
     d1c:	f0 e0       	ldi	r31, 0x00	; 0
    }
else
    {    //显示第二行八个汉字
    SetPage(2,2);
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where));//右边
     d1e:	a9 81       	ldd	r26, Y+1	; 0x01
     d20:	a1 30       	cpi	r26, 0x01	; 1
     d22:	41 f4       	brne	.+16     	; 0xd34 <Draw_num+0x102>
     d24:	ec 5e       	subi	r30, 0xEC	; 236
     d26:	fe 4f       	sbci	r31, 0xFE	; 254
     d28:	84 91       	lpm	r24, Z+
CONTROL&=~_BV(E1);
}
//右页数据
void outsd(uchar i)
{
CONTROL|=_BV(A0);
     d2a:	db 9a       	sbi	0x1b, 3	; 27
CONTROL|=_BV(E2);
     d2c:	d9 9a       	sbi	0x1b, 1	; 27
DATA=i;
     d2e:	85 bb       	out	0x15, r24	; 21
CONTROL&=~_BV(E2);
     d30:	d9 98       	cbi	0x1b, 1	; 27
     d32:	07 c0       	rjmp	.+14     	; 0xd42 <Draw_num+0x110>
else
    {    //显示第二行八个汉字
    SetPage(2,2);
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where));//右边
    else    PutCharL(pgm_read_byte(numbmp+d_where));//左边
     d34:	ec 5e       	subi	r30, 0xEC	; 236
     d36:	fe 4f       	sbci	r31, 0xFE	; 254
     d38:	84 91       	lpm	r24, Z+


//左页数据
void outmd(uchar i)
{
CONTROL|=_BV(A0);
     d3a:	db 9a       	sbi	0x1b, 3	; 27
CONTROL|=_BV(E1);
     d3c:	da 9a       	sbi	0x1b, 2	; 27
DATA=i;
     d3e:	85 bb       	out	0x15, r24	; 21
CONTROL&=~_BV(E1);
     d40:	da 98       	cbi	0x1b, 2	; 27
    {    //显示第二行八个汉字
    SetPage(2,2);
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where));//右边
    else    PutCharL(pgm_read_byte(numbmp+d_where));//左边
    SetPage(3,3);
     d42:	63 e0       	ldi	r22, 0x03	; 3
     d44:	83 e0       	ldi	r24, 0x03	; 3
     d46:	0e 94 5b 04 	call	0x8b6	; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
     d4a:	db 98       	cbi	0x1b, 3	; 27
CONTROL|=_BV(E1);
     d4c:	da 9a       	sbi	0x1b, 2	; 27
DATA=i;
     d4e:	15 bb       	out	0x15, r17	; 21
CONTROL&=~_BV(E1);
     d50:	da 98       	cbi	0x1b, 2	; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
     d52:	db 98       	cbi	0x1b, 3	; 27
CONTROL|=_BV(E2);
     d54:	d9 9a       	sbi	0x1b, 1	; 27
DATA=i;
     d56:	15 bb       	out	0x15, r17	; 21
CONTROL&=~_BV(E2);
     d58:	d9 98       	cbi	0x1b, 1	; 27
     d5a:	e0 2f       	mov	r30, r16
     d5c:	f0 e0       	ldi	r31, 0x00	; 0
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where));//右边
    else    PutCharL(pgm_read_byte(numbmp+d_where));//左边
    SetPage(3,3);
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where+width));
     d5e:	b9 81       	ldd	r27, Y+1	; 0x01
     d60:	b1 30       	cpi	r27, 0x01	; 1
     d62:	51 f4       	brne	.+20     	; 0xd78 <Draw_num+0x146>
     d64:	ee 0d       	add	r30, r14
     d66:	ff 1d       	adc	r31, r15
     d68:	ec 5e       	subi	r30, 0xEC	; 236
     d6a:	fe 4f       	sbci	r31, 0xFE	; 254
     d6c:	84 91       	lpm	r24, Z+
CONTROL&=~_BV(E1);
}
//右页数据
void outsd(uchar i)
{
CONTROL|=_BV(A0);
     d6e:	db 9a       	sbi	0x1b, 3	; 27
CONTROL|=_BV(E2);
     d70:	d9 9a       	sbi	0x1b, 1	; 27
DATA=i;
     d72:	85 bb       	out	0x15, r24	; 21
CONTROL&=~_BV(E2);
     d74:	d9 98       	cbi	0x1b, 1	; 27
     d76:	09 c0       	rjmp	.+18     	; 0xd8a <Draw_num+0x158>
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where));//右边
    else    PutCharL(pgm_read_byte(numbmp+d_where));//左边
    SetPage(3,3);
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where+width));
    else    PutCharL(pgm_read_byte(numbmp+d_where+width));
     d78:	ee 0d       	add	r30, r14
     d7a:	ff 1d       	adc	r31, r15
     d7c:	ec 5e       	subi	r30, 0xEC	; 236
     d7e:	fe 4f       	sbci	r31, 0xFE	; 254
     d80:	84 91       	lpm	r24, Z+


//左页数据
void outmd(uchar i)
{
CONTROL|=_BV(A0);
     d82:	db 9a       	sbi	0x1b, 3	; 27
CONTROL|=_BV(E1);
     d84:	da 9a       	sbi	0x1b, 2	; 27
DATA=i;
     d86:	85 bb       	out	0x15, r24	; 21
CONTROL&=~_BV(E1);
     d88:	da 98       	cbi	0x1b, 2	; 27
    SetPage(3,3);
    SetAddress(address,address);
    if(window==1)PutCharR(pgm_read_byte(numbmp+d_where+width));
    else    PutCharL(pgm_read_byte(numbmp+d_where+width));
    }
    x_add++;
     d8a:	08 94       	sec
     d8c:	81 1c       	adc	r8, r1
     d8e:	91 1c       	adc	r9, r1
uchar x,address;     //address表示显存的物理地址
uchar wind

⌨️ 快捷键说明

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