📄 main.lss
字号:
ab8: 1f 93 push r17
aba: df 93 push r29
abc: cf 93 push r28
abe: 0f 92 push r0
ac0: cd b7 in r28, 0x3d ; 61
ac2: de b7 in r29, 0x3e ; 62
ac4: b4 2e mov r11, r20
uchar x,address; //address表示显存的物理地址
uchar window=0; //window表示左右两页
//putcharR //右边
//putcharL //左边
d_where=d_where*32;
ac6: c8 2e mov r12, r24
ac8: c2 94 swap r12
aca: cc 0c add r12, r12
acc: 50 ee ldi r21, 0xE0 ; 224
ace: c5 22 and r12, r21
ad0: 86 2f mov r24, r22
ad2: 97 2f mov r25, r23
ad4: 4c 01 movw r8, r24
ad6: d2 2e mov r13, r18
ad8: 19 82 std Y+1, r1 ; 0x01
//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)
{
ada: c6 1a sub r12, r22
adc: e2 2e mov r14, r18
ade: ff 24 eor r15, r15
ae0: 94 c0 rjmp .+296 ; 0xc0a <Draw_word+0x162>
//putcharR //右边
//putcharL //左边
d_where=d_where*32;
for (x=width;x>1;x--)
{
if (x_add>60) {window=1;address=x_add%61;}
ae2: 8d e3 ldi r24, 0x3D ; 61
ae4: 88 16 cp r8, r24
ae6: 91 04 cpc r9, r1
ae8: 40 f0 brcs .+16 ; 0xafa <Draw_word+0x52>
aea: c4 01 movw r24, r8
aec: 6d e3 ldi r22, 0x3D ; 61
aee: 70 e0 ldi r23, 0x00 ; 0
af0: 0e 94 45 08 call 0x108a ; 0x108a <__udivmodhi4>
af4: 18 2f mov r17, r24
af6: a1 e0 ldi r26, 0x01 ; 1
af8: a9 83 std Y+1, r26 ; 0x01
else address=x_add;
if(layer==0) //显示一行八个字
afa: bb 20 and r11, r11
afc: 09 f0 breq .+2 ; 0xb00 <Draw_word+0x58>
afe: 3d c0 rjmp .+122 ; 0xb7a <Draw_word+0xd2>
{
SetPage(0,0);
b00: 60 e0 ldi r22, 0x00 ; 0
b02: 80 e0 ldi r24, 0x00 ; 0
b04: 0e 94 5b 04 call 0x8b6 ; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
b08: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
b0a: da 9a sbi 0x1b, 2 ; 27
DATA=i;
b0c: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E1);
b0e: da 98 cbi 0x1b, 2 ; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
b10: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
b12: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
b14: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E2);
b16: d9 98 cbi 0x1b, 1 ; 27
b18: e0 2f mov r30, r16
b1a: 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(bmp001+d_where));//右边
b1c: b9 81 ldd r27, Y+1 ; 0x01
b1e: b1 30 cpi r27, 0x01 ; 1
b20: 41 f4 brne .+16 ; 0xb32 <Draw_word+0x8a>
b22: ec 5a subi r30, 0xAC ; 172
b24: ff 4f sbci r31, 0xFF ; 255
b26: 84 91 lpm r24, Z+
CONTROL&=~_BV(E1);
}
//右页数据
void outsd(uchar i)
{
CONTROL|=_BV(A0);
b28: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
b2a: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
b2c: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E2);
b2e: d9 98 cbi 0x1b, 1 ; 27
b30: 07 c0 rjmp .+14 ; 0xb40 <Draw_word+0x98>
if(layer==0) //显示一行八个字
{
SetPage(0,0);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where));//右边
else PutCharL(pgm_read_byte(bmp001+d_where));//左边
b32: ec 5a subi r30, 0xAC ; 172
b34: ff 4f sbci r31, 0xFF ; 255
b36: 84 91 lpm r24, Z+
//左页数据
void outmd(uchar i)
{
CONTROL|=_BV(A0);
b38: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
b3a: da 9a sbi 0x1b, 2 ; 27
DATA=i;
b3c: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E1);
b3e: da 98 cbi 0x1b, 2 ; 27
{
SetPage(0,0);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where));//右边
else PutCharL(pgm_read_byte(bmp001+d_where));//左边
SetPage(1,1);
b40: 61 e0 ldi r22, 0x01 ; 1
b42: 81 e0 ldi r24, 0x01 ; 1
b44: 0e 94 5b 04 call 0x8b6 ; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
b48: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
b4a: da 9a sbi 0x1b, 2 ; 27
DATA=i;
b4c: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E1);
b4e: da 98 cbi 0x1b, 2 ; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
b50: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
b52: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
b54: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E2);
b56: d9 98 cbi 0x1b, 1 ; 27
b58: e0 2f mov r30, r16
b5a: f0 e0 ldi r31, 0x00 ; 0
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where));//右边
else PutCharL(pgm_read_byte(bmp001+d_where));//左边
SetPage(1,1);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where+width));
b5c: 89 81 ldd r24, Y+1 ; 0x01
b5e: 81 30 cpi r24, 0x01 ; 1
b60: 31 f4 brne .+12 ; 0xb6e <Draw_word+0xc6>
b62: ee 0d add r30, r14
b64: ff 1d adc r31, r15
b66: ec 5a subi r30, 0xAC ; 172
b68: ff 4f sbci r31, 0xFF ; 255
b6a: 84 91 lpm r24, Z+
b6c: 3c c0 rjmp .+120 ; 0xbe6 <Draw_word+0x13e>
else PutCharL(pgm_read_byte(bmp001+d_where+width));
b6e: ee 0d add r30, r14
b70: ff 1d adc r31, r15
b72: ec 5a subi r30, 0xAC ; 172
b74: ff 4f sbci r31, 0xFF ; 255
b76: 84 91 lpm r24, Z+
b78: 40 c0 rjmp .+128 ; 0xbfa <Draw_word+0x152>
}
else
{ //显示第二行八个汉字
SetPage(2,2);
b7a: 62 e0 ldi r22, 0x02 ; 2
b7c: 82 e0 ldi r24, 0x02 ; 2
b7e: 0e 94 5b 04 call 0x8b6 ; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
b82: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
b84: da 9a sbi 0x1b, 2 ; 27
DATA=i;
b86: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E1);
b88: da 98 cbi 0x1b, 2 ; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
b8a: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
b8c: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
b8e: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E2);
b90: d9 98 cbi 0x1b, 1 ; 27
b92: e0 2f mov r30, r16
b94: f0 e0 ldi r31, 0x00 ; 0
}
else
{ //显示第二行八个汉字
SetPage(2,2);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where));//右边
b96: a9 81 ldd r26, Y+1 ; 0x01
b98: a1 30 cpi r26, 0x01 ; 1
b9a: 41 f4 brne .+16 ; 0xbac <Draw_word+0x104>
b9c: ec 5a subi r30, 0xAC ; 172
b9e: ff 4f sbci r31, 0xFF ; 255
ba0: 84 91 lpm r24, Z+
CONTROL&=~_BV(E1);
}
//右页数据
void outsd(uchar i)
{
CONTROL|=_BV(A0);
ba2: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
ba4: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
ba6: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E2);
ba8: d9 98 cbi 0x1b, 1 ; 27
baa: 07 c0 rjmp .+14 ; 0xbba <Draw_word+0x112>
else
{ //显示第二行八个汉字
SetPage(2,2);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where));//右边
else PutCharL(pgm_read_byte(bmp001+d_where));//左边
bac: ec 5a subi r30, 0xAC ; 172
bae: ff 4f sbci r31, 0xFF ; 255
bb0: 84 91 lpm r24, Z+
//左页数据
void outmd(uchar i)
{
CONTROL|=_BV(A0);
bb2: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
bb4: da 9a sbi 0x1b, 2 ; 27
DATA=i;
bb6: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E1);
bb8: da 98 cbi 0x1b, 2 ; 27
{ //显示第二行八个汉字
SetPage(2,2);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where));//右边
else PutCharL(pgm_read_byte(bmp001+d_where));//左边
SetPage(3,3);
bba: 63 e0 ldi r22, 0x03 ; 3
bbc: 83 e0 ldi r24, 0x03 ; 3
bbe: 0e 94 5b 04 call 0x8b6 ; 0x8b6 <SetPage>
CONTROL&=~_BV(E1);
}
//左页命令
void outmi(uchar i)
{
CONTROL&=~_BV(A0);
bc2: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
bc4: da 9a sbi 0x1b, 2 ; 27
DATA=i;
bc6: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E1);
bc8: da 98 cbi 0x1b, 2 ; 27
CONTROL&=~_BV(E2);
}
//右页指令
void outsi(uchar i)
{
CONTROL&=~_BV(A0);
bca: db 98 cbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
bcc: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
bce: 15 bb out 0x15, r17 ; 21
CONTROL&=~_BV(E2);
bd0: d9 98 cbi 0x1b, 1 ; 27
bd2: e0 2f mov r30, r16
bd4: f0 e0 ldi r31, 0x00 ; 0
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where));//右边
else PutCharL(pgm_read_byte(bmp001+d_where));//左边
SetPage(3,3);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where+width));
bd6: b9 81 ldd r27, Y+1 ; 0x01
bd8: b1 30 cpi r27, 0x01 ; 1
bda: 51 f4 brne .+20 ; 0xbf0 <Draw_word+0x148>
bdc: ee 0d add r30, r14
bde: ff 1d adc r31, r15
be0: ec 5a subi r30, 0xAC ; 172
be2: ff 4f sbci r31, 0xFF ; 255
be4: 84 91 lpm r24, Z+
CONTROL&=~_BV(E1);
}
//右页数据
void outsd(uchar i)
{
CONTROL|=_BV(A0);
be6: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E2);
be8: d9 9a sbi 0x1b, 1 ; 27
DATA=i;
bea: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E2);
bec: d9 98 cbi 0x1b, 1 ; 27
bee: 09 c0 rjmp .+18 ; 0xc02 <Draw_word+0x15a>
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where));//右边
else PutCharL(pgm_read_byte(bmp001+d_where));//左边
SetPage(3,3);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where+width));
else PutCharL(pgm_read_byte(bmp001+d_where+width));
bf0: ee 0d add r30, r14
bf2: ff 1d adc r31, r15
bf4: ec 5a subi r30, 0xAC ; 172
bf6: ff 4f sbci r31, 0xFF ; 255
bf8: 84 91 lpm r24, Z+
//左页数据
void outmd(uchar i)
{
CONTROL|=_BV(A0);
bfa: db 9a sbi 0x1b, 3 ; 27
CONTROL|=_BV(E1);
bfc: da 9a sbi 0x1b, 2 ; 27
DATA=i;
bfe: 85 bb out 0x15, r24 ; 21
CONTROL&=~_BV(E1);
c00: da 98 cbi 0x1b, 2 ; 27
SetPage(3,3);
SetAddress(address,address);
if(window==1)PutCharR(pgm_read_byte(bmp001+d_where+width));
else PutCharL(pgm_read_byte(bmp001+d_where+width));
}
x_add++;
c02: 08 94 sec
c04: 81 1c adc r8, r1
c06: 91 1c adc r9, r1
uchar x,address; //address表示显存的物理地址
uchar window=0; //window表示左右两页
//putcharR //右边
//putcharL //左边
d_where=d_where*32;
for (x=width;x>1;x--)
c08: da 94 dec r13
//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)
{
c0a: 18 2d mov r17, r8
c0c: 0c 2d mov r16, r12
c0e: 08 0d add r16, r8
uchar x,address; //address表示显存的物理地址
uchar window=0; //window表示左右两页
//putcharR //右边
//putcharL //左边
d_where=d_where*32;
for (x=width;x>1;x--)
c10: e1 e0 ldi r30, 0x01 ; 1
c12: ed 15 cp r30, r13
c14: 08 f4 brcc .+2 ; 0xc18 <Draw_word+0x170>
c16: 65 cf rjmp .-310 ; 0xae2 <Draw_word+0x3a>
else PutCharL(pgm_read_byte(bmp001+d_where+width));
}
x_add++;
d_where++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -