📄 keylcd.lss
字号:
b68: 11 1d adc r17, r1
W_comm(0x4c);
b6a: 8c e4 ldi r24, 0x4C ; 76
b6c: 0e 94 c7 04 call 0x98e
W_comm(0x46);
b70: 86 e4 ldi r24, 0x46 ; 70
b72: 0e 94 c7 04 call 0x98e
W_code(LOBYTE(addr));
b76: 80 2f mov r24, r16
b78: 0e 94 cf 04 call 0x99e
W_code(HIBYTE(addr));
b7c: 81 2f mov r24, r17
b7e: 99 27 eor r25, r25
b80: 0e 94 cf 04 call 0x99e
b84: 1f 91 pop r17
b86: 0f 91 pop r16
b88: 08 95 ret
00000b8a <set_pos>:
}
void set_pos(BYTE pos_x,BYTE pos_y)
{
b8a: 0f 93 push r16
b8c: 1f 93 push r17
WORD addr;
addr=pos_x+pos_y*40+0x4b0;
b8e: 98 e2 ldi r25, 0x28 ; 40
b90: 69 9f mul r22, r25
b92: 80 01 movw r16, r0
b94: 11 24 eor r1, r1
b96: 08 0f add r16, r24
b98: 11 1d adc r17, r1
b9a: 00 55 subi r16, 0x50 ; 80
b9c: 1b 4f sbci r17, 0xFB ; 251
W_comm(0x4c);
b9e: 8c e4 ldi r24, 0x4C ; 76
ba0: 0e 94 c7 04 call 0x98e
W_comm(0x46);
ba4: 86 e4 ldi r24, 0x46 ; 70
ba6: 0e 94 c7 04 call 0x98e
W_code(LOBYTE(addr));
baa: 80 2f mov r24, r16
bac: 0e 94 cf 04 call 0x99e
W_code(HIBYTE(addr));
bb0: 81 2f mov r24, r17
bb2: 99 27 eor r25, r25
bb4: 0e 94 cf 04 call 0x99e
bb8: 1f 91 pop r17
bba: 0f 91 pop r16
bbc: 08 95 ret
00000bbe <r_pos>:
}
WORD r_pos(void)
{
bbe: cf 93 push r28
BYTE tp=0;
bc0: c0 e0 ldi r28, 0x00 ; 0
WORD ad=0;
W_comm(0x4c);
bc2: 8c e4 ldi r24, 0x4C ; 76
bc4: 0e 94 c7 04 call 0x98e
W_comm(0x47);
bc8: 87 e4 ldi r24, 0x47 ; 71
bca: 0e 94 c7 04 call 0x98e
DDRA=0x00;
bce: ca bb out 0x1a, r28 ; 26
PORTB|=(1<<PB7); //A0
bd0: c7 9a sbi 0x18, 7 ; 24
PORTA=0xff;
bd2: 8f ef ldi r24, 0xFF ; 255
bd4: 8b bb out 0x1b, r24 ; 27
PORTB|=(1<<PB4); //WD
bd6: c4 9a sbi 0x18, 4 ; 24
PORTA=0xff;
bd8: 8b bb out 0x1b, r24 ; 27
PORTB&=~(1<<PB5); //RD
bda: c5 98 cbi 0x18, 5 ; 24
asm volatile("nop"::);
bdc: 00 00 nop
tp=PINA;
bde: c9 b3 in r28, 0x19 ; 25
PORTB|=(1<<PB5); //RD
be0: c5 9a sbi 0x18, 5 ; 24
PORTB&=~(1<<PB5); //RD
be2: c5 98 cbi 0x18, 5 ; 24
asm volatile("nop"::);
be4: 00 00 nop
ad = (WORD)(PINA);
be6: 89 b3 in r24, 0x19 ; 25
be8: 99 27 eor r25, r25
ad<<=8;
bea: 98 2f mov r25, r24
bec: 88 27 eor r24, r24
ad|=tp;
bee: 4c 2f mov r20, r28
bf0: 55 27 eor r21, r21
PORTB|=(1<<PB5); //RD
bf2: c5 9a sbi 0x18, 5 ; 24
PORTA=0x00;
bf4: 1b ba out 0x1b, r1 ; 27
DDRA=0xff;
bf6: 2f ef ldi r18, 0xFF ; 255
bf8: 2a bb out 0x1a, r18 ; 26
return(ad);
}
bfa: 84 2b or r24, r20
bfc: 95 2b or r25, r21
bfe: cf 91 pop r28
c00: 08 95 ret
00000c02 <printf_16>:
unsigned char printf_16(unsigned char x,unsigned char y, char *ptr)
{
c02: 8f 92 push r8
c04: 9f 92 push r9
c06: af 92 push r10
c08: bf 92 push r11
c0a: cf 92 push r12
c0c: df 92 push r13
c0e: ef 92 push r14
c10: ff 92 push r15
c12: 0f 93 push r16
c14: 1f 93 push r17
c16: cf 93 push r28
c18: c8 2f mov r28, r24
c1a: e6 2e mov r14, r22
c1c: 5a 01 movw r10, r20
unsigned char c1,c2,i=0,j,k,uLen=0;
c1e: 88 24 eor r8, r8
c20: 98 2c mov r9, r8
while (ptr[uLen]!=0) //探测字串长度
{
uLen++;
c22: fa 01 movw r30, r20
c24: 80 81 ld r24, Z
c26: 88 23 and r24, r24
c28: 09 f4 brne .+2 ; 0xc2c
c2a: a0 c0 rjmp .+320 ; 0xd6c
c2c: 83 94 inc r8
c2e: f5 01 movw r30, r10
c30: e8 0d add r30, r8
c32: f1 1d adc r31, r1
c34: 80 81 ld r24, Z
c36: 88 23 and r24, r24
c38: c9 f7 brne .-14 ; 0xc2c
}
while(i<uLen)
{
set_pos(x++,y);
if(x>39) {x=0;y+=16;set_pos(x,y);}
c1 = ptr[i];
c2 = ptr[i+1];
//ascii字符与汉字内码的区别在于128做分界,大于界线的为汉字码
if(c1 <=128) // ASCII
{
for(j=0;j<16;j++) //写16行
{
W_comm(0X42); // 写数据(命令)
if (c1 >= 0x20)
{
W_code(pgm_read_byte(ASC+(c1-0x20)*16+j));
}
else
{
W_code(0);
}
set_pos(x,y+1+j);
}
}
else // 中文
{
for(j=0;j<sizeof(GB16_Index)/sizeof(GB16_Index[0]);j++) // 查找定位
{
if(c1 ==pgm_read_byte(GB16_Index+j*2) && c2 == pgm_read_byte(GB16_Index+j*2+1))
{
break;
}
}
for(k=0;k<16;k++)
{
set_pos(x,y+k);
if(x>38) {x=0;y+=16;set_pos(x,y);}
W_comm(0X42); // 写数据
if(j < sizeof(GB16_Index)/sizeof(GB16_Index[0]))
{
W_code(pgm_read_byte(GB16_Msk+j*32+k*2));
W_code(pgm_read_byte(GB16_Msk+j*32+k*2+1));
}
else // 未找到该字
{
if(k < 8)
{
W_code(0x00);
W_code(0x00);
}
else
{
W_code(0xff);
W_code(0xff);
}
}
}
x++;
i++;
};
i++;
c3a: 98 14 cp r9, r8
c3c: 08 f0 brcs .+2 ; 0xc40
c3e: 96 c0 rjmp .+300 ; 0xd6c
c40: 8c 2f mov r24, r28
c42: cf 5f subi r28, 0xFF ; 255
c44: 6e 2d mov r22, r14
c46: 0e 94 c5 05 call 0xb8a
c4a: c8 32 cpi r28, 0x28 ; 40
c4c: 38 f0 brcs .+14 ; 0xc5c
c4e: c0 e0 ldi r28, 0x00 ; 0
c50: f0 e1 ldi r31, 0x10 ; 16
c52: ef 0e add r14, r31
c54: 6e 2d mov r22, r14
c56: 8c 2f mov r24, r28
c58: 0e 94 c5 05 call 0xb8a
c5c: f5 01 movw r30, r10
c5e: e9 0d add r30, r9
c60: f1 1d adc r31, r1
c62: d0 80 ld r13, Z
c64: 91 81 ldd r25, Z+1 ; 0x01
c66: 80 e8 ldi r24, 0x80 ; 128
c68: 8d 15 cp r24, r13
c6a: 38 f1 brcs .+78 ; 0xcba
c6c: fe 2c mov r15, r14
c6e: f3 94 inc r15
c70: 00 e0 ldi r16, 0x00 ; 0
c72: 10 e0 ldi r17, 0x00 ; 0
c74: 5f e0 ldi r21, 0x0F ; 15
c76: c5 2e mov r12, r21
c78: 82 e4 ldi r24, 0x42 ; 66
c7a: 0e 94 c7 04 call 0x98e
c7e: ef e1 ldi r30, 0x1F ; 31
c80: ed 15 cp r30, r13
c82: 68 f4 brcc .+26 ; 0xc9e
c84: ed 2d mov r30, r13
c86: ff 27 eor r31, r31
c88: 44 e0 ldi r20, 0x04 ; 4
c8a: ee 0f add r30, r30
c8c: ff 1f adc r31, r31
c8e: 4a 95 dec r20
c90: e1 f7 brne .-8 ; 0xc8a
c92: e0 0f add r30, r16
c94: f1 1f adc r31, r17
c96: ec 55 subi r30, 0x5C ; 92
c98: ff 4f sbci r31, 0xFF ; 255
c9a: 84 91 lpm r24, Z
c9c: 01 c0 rjmp .+2 ; 0xca0
c9e: 80 e0 ldi r24, 0x00 ; 0
ca0: 0e 94 cf 04 call 0x99e
ca4: 6f 2d mov r22, r15
ca6: 8c 2f mov r24, r28
ca8: 0e 94 c5 05 call 0xb8a
cac: ca 94 dec r12
cae: 0f 5f subi r16, 0xFF ; 255
cb0: 1f 4f sbci r17, 0xFF ; 255
cb2: f3 94 inc r15
cb4: c7 fe sbrs r12, 7
cb6: e0 cf rjmp .-64 ; 0xc78
cb8: 57 c0 rjmp .+174 ; 0xd68
cba: cc 24 eor r12, r12
cbc: 4a e9 ldi r20, 0x9A ; 154
cbe: 52 e0 ldi r21, 0x02 ; 2
cc0: 9a 01 movw r18, r20
cc2: 21 50 subi r18, 0x01 ; 1
cc4: 30 40 sbci r19, 0x00 ; 0
cc6: f9 01 movw r30, r18
cc8: 84 91 lpm r24, Z
cca: d8 16 cp r13, r24
ccc: 21 f4 brne .+8 ; 0xcd6
cce: fa 01 movw r30, r20
cd0: 84 91 lpm r24, Z
cd2: 98 17 cp r25, r24
cd4: 41 f0 breq .+16 ; 0xce6
cd6: c3 94 inc r12
cd8: 2e 5f subi r18, 0xFE ; 254
cda: 3f 4f sbci r19, 0xFF ; 255
cdc: 4e 5f subi r20, 0xFE ; 254
cde: 5f 4f sbci r21, 0xFF ; 255
ce0: fa e0 ldi r31, 0x0A ; 10
ce2: fc 15 cp r31, r12
ce4: 80 f7 brcc .-32 ; 0xcc6
ce6: ff 24 eor r15, r15
ce8: 8e 2d mov r24, r14
cea: 8f 0d add r24, r15
cec: 68 2f mov r22, r24
cee: 8c 2f mov r24, r28
cf0: 0e 94 c5 05 call 0xb8a
cf4: c7 32 cpi r28, 0x27 ; 39
cf6: 38 f0 brcs .+14 ; 0xd06
cf8: c0 e0 ldi r28, 0x00 ; 0
cfa: 80 e1 ldi r24, 0x10 ; 16
cfc: e8 0e add r14, r24
cfe: 6e 2d mov r22, r14
d00: 8c 2f mov r24, r28
d02: 0e 94 c5 05 call 0xb8a
d06: 82 e4 ldi r24, 0x42 ; 66
d08: 0e 94 c7 04 call 0x98e
d0c: ea e0 ldi r30, 0x0A ; 10
d0e: ec 15 cp r30, r12
d10: b0 f0 brcs .+44 ; 0xd3e
d12: 0c 2d mov r16, r12
d14: 11 27 eor r17, r17
d16: 34 e0 ldi r19, 0x04 ; 4
d18: 00 0f add r16, r16
d1a: 11 1f adc r17, r17
d1c: 3a 95 dec r19
d1e: e1 f7 brne .-8 ; 0xd18
d20: 0f 0d add r16, r15
d22: 11 1d adc r17, r1
d24: 00 0f add r16, r16
d26: 11 1f adc r17, r17
d28: f8 01 movw r30, r16
d2a: e7 50 subi r30, 0x07 ; 7
d2c: fe 4f sbci r31, 0xFE ; 254
d2e: 84 91 lpm r24, Z
d30: 0e 94 cf 04 call 0x99e
d34: 06 50 subi r16, 0x06 ; 6
d36: 1e 4f sbci r17, 0xFE ; 254
d38: f8 01 movw r30, r16
d3a: 84 91 lpm r24, Z
d3c: 0c c0 rjmp .+24 ; 0xd56
d3e: f7 e0 ldi r31, 0x07 ; 7
d40: ff 15 cp r31, r15
d42: 28 f0 brcs .+10 ; 0xd4e
d44: 80 e0 ldi r24, 0x00 ; 0
d46: 0e 94 cf 04 call 0x99e
d4a: 80 e0 ldi r24, 0x00 ; 0
d4c: 04 c0 rjmp .+8 ; 0xd56
d4e: 8f ef ldi r24, 0xFF ; 255
d50: 0e 94 cf 04 call 0x99e
d54: 8f ef ldi r24, 0xFF ; 255
d56: 0e 94 cf 04 call 0x99e
d5a: f3 94 inc r15
d5c: 8f e0 ldi r24, 0x0F ; 15
d5e: 8f 15 cp r24, r15
d60: 08 f0 brcs .+2 ; 0xd64
d62: c2 cf rjmp .-124 ; 0xce8
d64: cf 5f subi r28, 0xFF ; 255
d66: 93 94 inc r9
d68: 93 94 inc r9
d6a: 67 cf rjmp .-306 ; 0xc3a
}
return uLen; //返回字串长度,汉字按2字节计算
}
d6c: 88 2d mov r24, r8
d6e: 99 27 eor r25, r25
d70: cf 91 pop r28
d72: 1f 91 pop r17
d74: 0f 91 pop r16
d76: ff 90 pop r15
d78: ef 90 pop r14
d7a: df 90 pop r13
d7c: cf 90 pop r12
d7e: bf 90 pop r11
d80: af 90 pop r10
d82: 9f 90 pop r9
d84: 8f 90 pop r8
d86: 08 95 ret
00000d88 <printf_24>:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -