📄 main.lss
字号:
}
}
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 + -