📄 main.lss
字号:
96c: b9 1e adc r11, r25
96e: 6f 01 movw r12, r30
970: 76 2e mov r7, r22
972: 00 e0 ldi r16, 0x00 ; 0
974: 87 c0 rjmp .+270 ; 0xa84 <DrawBmp1+0x154>
uchar window=0; //window表示左右两页
//putcharR //右边
//putcharL //左边
for (x=width;x>1;x--)
{
if (x_add>60) {window=1;address=x_add%61;}
976: 8d e3 ldi r24, 0x3D ; 61
978: e8 16 cp r14, r24
97a: f1 04 cpc r15, r1
97c: 40 f0 brcs .+16 ; 0x98e <DrawBmp1+0x5e>
97e: c7 01 movw r24, r14
980: 6d e3 ldi r22, 0x3D ; 61
982: 70 e0 ldi r23, 0x00 ; 0
984: 0e 94 45 08 call 0x108a ; 0x108a <__udivmodhi4>
988: 18 2f mov r17, r24
98a: 01 e0 ldi r16, 0x01 ; 1
98c: 01 c0 rjmp .+2 ; 0x990 <DrawBmp1+0x60>
98e: 1e 2d mov r17, r14
else address=x_add;
SetPage(0,0);
990: 60 e0 ldi r22, 0x00 ; 0
992: 80 e0 ldi r24, 0x00 ; 0
994: 0e 94 5b 04 call 0x8b6 ; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
998: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
99a: da 9a sbi 0x1b, 2 ; 27
DATA=i;
99c: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E1);
99e: da 98 cbi 0x1b, 2 ; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
9a0: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
9a2: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
9a4: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E2);
9a6: d9 98 cbi 0x1b, 1 ; 27
{
if (x_add>60) {window=1;address=x_add%61;}
else address=x_add;
SetPage(0,0);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i));
9a8: 01 30 cpi r16, 0x01 ; 1
9aa: 39 f4 brne .+14 ; 0x9ba <DrawBmp1+0x8a>
9ac: f6 01 movw r30, r12
9ae: 84 91 lpm r24, Z+
CONTROL&=~_BV(E1);
}
//右页数据
void outsd(uchar i)
{
CONTROL|=_BV(A0);
9b0: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
9b2: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
9b4: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E2);
9b6: d9 98 cbi 0x1b, 1 ; 27
9b8: 06 c0 rjmp .+12 ; 0x9c6 <DrawBmp1+0x96>
if (x_add>60) {window=1;address=x_add%61;}
else address=x_add;
SetPage(0,0);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i));
else PutCharL(pgm_read_byte(bmp+i));
9ba: f6 01 movw r30, r12
9bc: 84 91 lpm r24, Z+
//左页数据
void outmd(uchar i)
{
CONTROL|=_BV(A0);
9be: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
9c0: da 9a sbi 0x1b, 2 ; 27
DATA=i;
9c2: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E1);
9c4: da 98 cbi 0x1b, 2 ; 27
else address=x_add;
SetPage(0,0);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i));
else PutCharL(pgm_read_byte(bmp+i));
SetPage(1,1);
9c6: 61 e0 ldi r22, 0x01 ; 1
9c8: 81 e0 ldi r24, 0x01 ; 1
9ca: 0e 94 5b 04 call 0x8b6 ; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
9ce: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
9d0: da 9a sbi 0x1b, 2 ; 27
DATA=i;
9d2: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E1);
9d4: da 98 cbi 0x1b, 2 ; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
9d6: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
9d8: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
9da: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E2);
9dc: d9 98 cbi 0x1b, 1 ; 27
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i));
else PutCharL(pgm_read_byte(bmp+i));
SetPage(1,1);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i+width));
9de: 01 30 cpi r16, 0x01 ; 1
9e0: 39 f4 brne .+14 ; 0x9f0 <DrawBmp1+0xc0>
9e2: f5 01 movw r30, r10
9e4: 84 91 lpm r24, Z+
CONTROL&=~_BV(E1);
}
//右页数据
void outsd(uchar i)
{
CONTROL|=_BV(A0);
9e6: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
9e8: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
9ea: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E2);
9ec: d9 98 cbi 0x1b, 1 ; 27
9ee: 06 c0 rjmp .+12 ; 0x9fc <DrawBmp1+0xcc>
if(window==1)PutCharR(pgm_read_byte(bmp+i));
else PutCharL(pgm_read_byte(bmp+i));
SetPage(1,1);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i+width));
else PutCharL(pgm_read_byte(bmp+i+width));
9f0: f5 01 movw r30, r10
9f2: 84 91 lpm r24, Z+
//左页数据
void outmd(uchar i)
{
CONTROL|=_BV(A0);
9f4: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
9f6: da 9a sbi 0x1b, 2 ; 27
DATA=i;
9f8: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E1);
9fa: da 98 cbi 0x1b, 2 ; 27
SetPage(1,1);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i+width));
else PutCharL(pgm_read_byte(bmp+i+width));
SetPage(2,2);
9fc: 62 e0 ldi r22, 0x02 ; 2
9fe: 82 e0 ldi r24, 0x02 ; 2
a00: 0e 94 5b 04 call 0x8b6 ; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
a04: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
a06: da 9a sbi 0x1b, 2 ; 27
DATA=i;
a08: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E1);
a0a: da 98 cbi 0x1b, 2 ; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
a0c: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
a0e: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
a10: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E2);
a12: d9 98 cbi 0x1b, 1 ; 27
if(window==1)PutCharR(pgm_read_byte(bmp+i+width));
else PutCharL(pgm_read_byte(bmp+i+width));
SetPage(2,2);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i+width+width));
a14: 01 30 cpi r16, 0x01 ; 1
a16: 39 f4 brne .+14 ; 0xa26 <DrawBmp1+0xf6>
a18: f4 01 movw r30, r8
a1a: 84 91 lpm r24, Z+
CONTROL&=~_BV(E1);
}
//右页数据
void outsd(uchar i)
{
CONTROL|=_BV(A0);
a1c: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
a1e: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
a20: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E2);
a22: d9 98 cbi 0x1b, 1 ; 27
a24: 06 c0 rjmp .+12 ; 0xa32 <DrawBmp1+0x102>
else PutCharL(pgm_read_byte(bmp+i+width));
SetPage(2,2);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i+width+width));
else PutCharL(pgm_read_byte(bmp+i+width+width));
a26: f4 01 movw r30, r8
a28: 84 91 lpm r24, Z+
//左页数据
void outmd(uchar i)
{
CONTROL|=_BV(A0);
a2a: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
a2c: da 9a sbi 0x1b, 2 ; 27
DATA=i;
a2e: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E1);
a30: da 98 cbi 0x1b, 2 ; 27
SetPage(2,2);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i+width+width));
else PutCharL(pgm_read_byte(bmp+i+width+width));
SetPage(3,3);
a32: 63 e0 ldi r22, 0x03 ; 3
a34: 83 e0 ldi r24, 0x03 ; 3
a36: 0e 94 5b 04 call 0x8b6 ; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
a3a: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
a3c: da 9a sbi 0x1b, 2 ; 27
DATA=i;
a3e: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E1);
a40: da 98 cbi 0x1b, 2 ; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
a42: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
a44: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
a46: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E2);
a48: d9 98 cbi 0x1b, 1 ; 27
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i+width+width));
else PutCharL(pgm_read_byte(bmp+i+width+width));
SetPage(3,3);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i+width+width+width));
a4a: 01 30 cpi r16, 0x01 ; 1
a4c: 39 f4 brne .+14 ; 0xa5c <DrawBmp1+0x12c>
a4e: fe 01 movw r30, r28
a50: 84 91 lpm r24, Z+
CONTROL&=~_BV(E1);
}
//右页数据
void outsd(uchar i)
{
CONTROL|=_BV(A0);
a52: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
a54: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
a56: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E2);
a58: d9 98 cbi 0x1b, 1 ; 27
a5a: 06 c0 rjmp .+12 ; 0xa68 <DrawBmp1+0x138>
if(window==1)PutCharR(pgm_read_byte(bmp+i+width+width));
else PutCharL(pgm_read_byte(bmp+i+width+width));
SetPage(3,3);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i+width+width+width));
else PutCharL(pgm_read_byte(bmp+i+width+width+width));
a5c: fe 01 movw r30, r28
a5e: 84 91 lpm r24, Z+
//左页数据
void outmd(uchar i)
{
CONTROL|=_BV(A0);
a60: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
a62: da 9a sbi 0x1b, 2 ; 27
DATA=i;
a64: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E1);
a66: da 98 cbi 0x1b, 2 ; 27
SetPage(3,3);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp+i+width+width+width));
else PutCharL(pgm_read_byte(bmp+i+width+width+width));
i++;
x_add++;
a68: 08 94 sec
a6a: e1 1c adc r14, r1
a6c: f1 1c adc r15, r1
{
uchar x,address,i=0; //address表示显存的物理地址
uchar window=0; //window表示左右两页
//putcharR //右边
//putcharL //左边
for (x=width;x>1;x--)
a6e: 7a 94 dec r7
a70: 21 96 adiw r28, 0x01 ; 1
a72: 08 94 sec
a74: 81 1c adc r8, r1
a76: 91 1c adc r9, r1
a78: 08 94 sec
a7a: a1 1c adc r10, r1
a7c: b1 1c adc r11, r1
a7e: 08 94 sec
a80: c1 1c adc r12, r1
a82: d1 1c adc r13, r1
a84: f1 e0 ldi r31, 0x01 ; 1
a86: f7 15 cp r31, r7
a88: 08 f4 brcc .+2 ; 0xa8c <DrawBmp1+0x15c>
a8a: 75 cf rjmp .-278 ; 0x976 <DrawBmp1+0x46>
if(window==1)PutCharR(pgm_read_byte(bmp+i+width+width+width));
else PutCharL(pgm_read_byte(bmp+i+width+width+width));
i++;
x_add++;
}
}
a8c: df 91 pop r29
a8e: cf 91 pop r28
a90: 1f 91 pop r17
a92: 0f 91 pop r16
a94: ff 90 pop r15
a96: ef 90 pop r14
a98: df 90 pop r13
a9a: cf 90 pop r12
a9c: bf 90 pop r11
a9e: af 90 pop r10
aa0: 9f 90 pop r9
aa2: 8f 90 pop r8
aa4: 7f 90 pop r7
aa6: 08 95 ret
00000aa8 <Draw_word>:
//void Draw_word(uchar d_where,uint x_add,uchar layer,uchar width)
//d_where表示在码表中第几个汉字,x_add横坐标位置,layer显示的层, width显示的宽度。
//---------------------------------------------------------------
void Draw_word(uchar d_where,uint x_add,uchar layer,uchar width)
{
aa8: 8f 92 push r8
aaa: 9f 92 push r9
aac: bf 92 push r11
aae: cf 92 push r12
ab0: df 92 push r13
ab2: ef 92 push r14
ab4: ff 92 push r15
ab6: 0f 93 push r16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -