📄 gps.lst
字号:
(0150) unsigned char sizeb=0,cow_num;
D49 24AA CLR R10
D4A C001 RJMP 0x0D4C
(0151) while(*(p+sizeb) != '\0')//字符串长度
(0152) {
(0153) sizeb++;
D4B 94A3 INC R10
D4C 2DEA MOV R30,R10
D4D 27FF CLR R31
D4E 0DEC ADD R30,R12
D4F 1DFD ADC R31,R13
D50 8020 LDD R2,Z+0
D51 2022 TST R2
D52 F7C1 BNE 0x0D4B
(0154) }
(0155) //cow_num = sizeb/16+2;
(0156) for(i=0;i<2;i++)
D53 2744 CLR R20
D54 C049 RJMP 0x0D9E
(0157) {
(0158) for(j=0;j<sizeb;j++)
D55 24EE CLR R14
D56 C043 RJMP 0x0D9A
(0159) {
(0160) for(k=0;k<8;k++)
D57 2766 CLR R22
D58 C03D RJMP 0x0D96
(0161) {
(0162) lcd_ram_12864[y+i][x+k+8*j] = asciidot8x16[*(p+j)-0x20][k+8*i];
D59 842A LDD R2,Y+10
D5A 0E24 ADD R2,R20
D5B E880 LDI R24,0x80
D5C 9D82 MUL R24,R2
D5D 0110 MOVW R2,R0
D5E E080 LDI R24,0
D5F E091 LDI R25,1
D60 0E28 ADD R2,R24
D61 1E39 ADC R3,R25
D62 2E46 MOV R4,R22
D63 2455 CLR R5
D64 85EC LDD R30,Y+12
D65 27FF CLR R31
D66 0DE4 ADD R30,R4
D67 1DF5 ADC R31,R5
D68 2C4E MOV R4,R14
D69 2455 CLR R5
D6A 0C44 LSL R4
D6B 1C55 ROL R5
D6C 0C44 LSL R4
D6D 1C55 ROL R5
D6E 0C44 LSL R4
D6F 1C55 ROL R5
D70 0DE4 ADD R30,R4
D71 1DF5 ADC R31,R5
D72 0DE2 ADD R30,R2
D73 1DF3 ADC R31,R3
D74 2DAE MOV R26,R14
D75 27BB CLR R27
D76 0DAC ADD R26,R12
D77 1DBD ADC R27,R13
D78 902C LD R2,12(X)
D79 E180 LDI R24,0x10
D7A 9D82 MUL R24,R2
D7B 0110 MOVW R2,R0
D7C E88C LDI R24,0x8C
D7D EF9E LDI R25,0xFE
D7E 0E28 ADD R2,R24
D7F 1E39 ADC R3,R25
D80 2E44 MOV R4,R20
D81 2455 CLR R5
D82 0C44 LSL R4
D83 1C55 ROL R5
D84 0C44 LSL R4
D85 1C55 ROL R5
D86 0C44 LSL R4
D87 1C55 ROL R5
D88 2FA6 MOV R26,R22
D89 27BB CLR R27
D8A 0DA4 ADD R26,R4
D8B 1DB5 ADC R27,R5
D8C 0DA2 ADD R26,R2
D8D 1DB3 ADC R27,R3
D8E 93FA ST R31,-Y
D8F 93EA ST R30,-Y
D90 01FD MOVW R30,R26
D91 9026 ELPM R2,254(Z)
D92 91E9 LD R30,Y+
D93 91F9 LD R31,Y+
D94 8220 STD Z+0,R2
D95 9563 INC R22
D96 3068 CPI R22,0x8
D97 F408 BCC 0x0D99
D98 CFC0 RJMP 0x0D59
D99 94E3 INC R14
D9A 14EA CP R14,R10
D9B F408 BCC 0x0D9D
D9C CFBA RJMP 0x0D57
D9D 9543 INC R20
D9E 3042 CPI R20,2
D9F F408 BCC 0x0DA1
DA0 CFB4 RJMP 0x0D55
(0163) }
(0164) }
(0165) }
(0166) Ram_12864();
DA1 DF7A RCALL _Ram_12864
DA2 940E 0EFD CALL pop_xgsetF0FC
DA4 9624 ADIW R28,4
DA5 9508 RET
_Ram_Hz16x16_12864:
cow_num --> Y,+1
sizeb --> R12
index_num --> R14
lcd_p --> R22
i --> R10
j --> Y,+0
k --> R20
p --> Y,+15
x --> Y,+13
y --> Y,+11
DA6 940E 0EF8 CALL push_arg4
DA8 940E 0F08 CALL push_xgsetF0FC
DAA 9721 SBIW R28,1
(0167) }
(0168)
(0169) void Ram_Hz16x16_12864//指定位置显示汉字16*16 到ram
(0170) (
(0171) unsigned char y, //显示的Y坐标
(0172) unsigned char x, //显示的X坐标
(0173) unsigned char *p//字符指针
(0174) )
(0175) {
(0176) unsigned char j=0,i=0,k=0;
DAB 2400 CLR R0
DAC 8208 STD Y+0,R0
DAD 24AA CLR R10
DAE 2744 CLR R20
(0177) unsigned char sizeb=0,cow_num;
DAF 24CC CLR R12
(0178) unsigned char index_num =0;//汉字索引号
DB0 24EE CLR R14
DB1 C001 RJMP 0x0DB3
(0179) unsigned char const *lcd_p;
(0180) while(*(p+sizeb) != '\0')//字符串长度
(0181) {
(0182) sizeb++;
DB2 94C3 INC R12
DB3 2DEC MOV R30,R12
DB4 27FF CLR R31
DB5 840F LDD R0,Y+15
DB6 8818 LDD R1,Y+16
DB7 0DE0 ADD R30,R0
DB8 1DF1 ADC R31,R1
DB9 8020 LDD R2,Z+0
DBA 2022 TST R2
DBB F7B1 BNE 0x0DB2
(0183) }
(0184) for(i=0;i<sizeb/2;i++)
DBC 24AA CLR R10
DBD C061 RJMP 0x0E1F
(0185) {
(0186) while((*(p+2*i) != GB_16[index_num].Index[0]) //查出索引号
(0187) || (*(p+1+2*i) != GB_16[index_num].Index[1]))
(0188) {
(0189) index_num ++;
DBE 94E3 INC R14
DBF 2C2A MOV R2,R10
DC0 2433 CLR R3
DC1 0C22 LSL R2
DC2 1C33 ROL R3
DC3 0121 MOVW R4,R2
DC4 E282 LDI R24,0x22
DC5 9D8E MUL R24,R14
DC6 0130 MOVW R6,R0
DC7 E88C LDI R24,0x8C
DC8 E096 LDI R25,6
DC9 01F3 MOVW R30,R6
DCA 0FE8 ADD R30,R24
DCB 1FF9 ADC R31,R25
DCC 9026 ELPM R2,6(Z)
DCD 01F2 MOVW R30,R4
DCE 840F LDD R0,Y+15
DCF 8818 LDD R1,Y+16
DD0 0DE0 ADD R30,R0
DD1 1DF1 ADC R31,R1
DD2 8030 LDD R3,Z+0
DD3 1432 CP R3,R2
DD4 F749 BNE 0x0DBE
DD5 E88D LDI R24,0x8D
DD6 E096 LDI R25,6
DD7 01F3 MOVW R30,R6
DD8 0FE8 ADD R30,R24
DD9 1FF9 ADC R31,R25
DDA 9026 ELPM R2,6(Z)
DDB 01C0 MOVW R24,R0
DDC 9601 ADIW R24,1
DDD 01F2 MOVW R30,R4
DDE 0FE8 ADD R30,R24
DDF 1FF9 ADC R31,R25
DE0 8030 LDD R3,Z+0
DE1 1432 CP R3,R2
DE2 F6D9 BNE 0x0DBE
(0190) }
(0191) lcd_p = GB_16[index_num].Msk;
DE3 E282 LDI R24,0x22
DE4 9D8E MUL R24,R14
DE5 01B0 MOVW R22,R0
DE6 E88E LDI R24,0x8E
DE7 E096 LDI R25,6
DE8 0F68 ADD R22,R24
DE9 1F79 ADC R23,R25
(0192) for(j=0;j<2;j++)//刷新先上后下
DEA 2400 CLR R0
DEB 8208 STD Y+0,R0
DEC C02E RJMP 0x0E1B
(0193) {
(0194) for(k=0;k<16;k++)
DED 2744 CLR R20
DEE C027 RJMP 0x0E16
(0195) {
(0196) lcd_ram_12864[y+j][x+k+16*i] = *(lcd_p+k+16*j);
DEF 842B LDD R2,Y+11
DF0 8008 LDD R0,Y+0
DF1 0C20 ADD R2,R0
DF2 E880 LDI R24,0x80
DF3 9D82 MUL R24,R2
DF4 0110 MOVW R2,R0
DF5 E080 LDI R24,0
DF6 E091 LDI R25,1
DF7 0E28 ADD R2,R24
DF8 1E39 ADC R3,R25
DF9 E180 LDI R24,0x10
DFA 9D8A MUL R24,R10
DFB 2E44 MOV R4,R20
DFC 2455 CLR R5
DFD 85ED LDD R30,Y+13
DFE 27FF CLR R31
DFF 0DE4 ADD R30,R4
E00 1DF5 ADC R31,R5
E01 0DE0 ADD R30,R0
E02 1DF1 ADC R31,R1
E03 0DE2 ADD R30,R2
E04 1DF3 ADC R31,R3
E05 2C24 MOV R2,R4
E06 2433 CLR R3
E07 0E26 ADD R2,R22
E08 1E37 ADC R3,R23
E09 8008 LDD R0,Y+0
E0A 9D80 MUL R24,R0
E0B 01D0 MOVW R26,R0
E0C 0DA2 ADD R26,R2
E0D 1DB3 ADC R27,R3
E0E 93FA ST R31,-Y
E0F 93EA ST R30,-Y
E10 01FD MOVW R30,R26
E11 9026 ELPM R2,0(Z)
E12 91E9 LD R30,Y+
E13 91F9 LD R31,Y+
E14 8220 STD Z+0,R2
E15 9543 INC R20
E16 3140 CPI R20,0x10
E17 F2B8 BCS 0x0DEF
E18 8008 LDD R0,Y+0
E19 9403 INC R0
E1A 8208 STD Y+0,R0
E1B 8188 LDD R24,Y+0
E1C 3082 CPI R24,2
E1D F278 BCS 0x0DED
E1E 94A3 INC R10
E1F 2C2C MOV R2,R12
E20 9426 LSR R2
E21 14A2 CP R10,R2
E22 F408 BCC 0x0E24
E23 CF9B RJMP 0x0DBF
(0197) }
(0198) }
(0199) }
(0200) Ram_12864();
E24 DEF7 RCALL _Ram_12864
E25 9621 ADIW R28,1
E26 940E 0EFD CALL pop_xgsetF0FC
E28 9624 ADIW R28,4
E29 9508 RET
_Reverse_16x16_12864:
i --> R20
j --> R22
y --> R10
E2A 940E 0F1D CALL push_xgsetF00C
E2C 2EA0 MOV R10,R16
(0201) }
(0202)
(0203) void Reverse_16x16_12864(unsigned char y)//反显示一行
(0204) {
(0205) unsigned char j=0,i=0;
E2D 2766 CLR R22
E2E 2744 CLR R20
(0206) for(i=0;i<2;i++)
E2F C017 RJMP 0x0E47
(0207) {
(0208) for(j=0;j<128;j++)
E30 2766 CLR R22
E31 C012 RJMP 0x0E44
(0209) {
(0210) lcd_ram_12864[y+i][j] = ~lcd_ram_12864[y+i][j];
E32 2C2A MOV R2,R10
E33 0E24 ADD R2,R20
E34 E880 LDI R24,0x80
E35 9D82 MUL R24,R2
E36 0110 MOVW R2,R0
E37 E080 LDI R24,0
E38 E091 LDI R25,1
E39 0E28 ADD R2,R24
E3A 1E39 ADC R3,R25
E3B 2E46 MOV R4,R22
E3C 2455 CLR R5
E3D 0C42 ADD R4,R2
E3E 1C53 ADC R5,R3
E3F 01F2 MOVW R30,R4
E40 8020 LDD R2,Z+0
E41 9420 COM R2
E42 8220 STD Z+0,R2
E43 9563 INC R22
E44 3860 CPI R22,0x80
E45 F360 BCS 0x0E32
E46 9543 INC R20
E47 3042 CPI R20,2
E48 F338 BCS 0x0E30
(0211) }
(0212) }
(0213) Ram_12864();
E49 DED2 RCALL _Ram_12864
E4A 940C 0F24 JMP pop_xgsetF00C
_Ram_Bmp_12864:
i --> R20
j --> R22
p --> R10
E4C 940E 0F1D CALL push_xgsetF00C
E4E 0158 MOVW R10,R16
(0214) }
(0215)
(0216) void Ram_Bmp_12864(unsigned char const *p)//显示图片
(0217) {
(0218) unsigned char j=0,i=0;
E4F 2766 CLR R22
E50 2744 CLR R20
(0219) for(i=0;i<8;i++)
E51 C01A RJMP 0x0E6C
(0220) {
(0221) for(j=0;j<128;j++)
E52 2766 CLR R22
E53 C015 RJMP 0x0E69
(0222) {
(0223) lcd_ram_12864[i][j] = *(p+128*i+j);
E54 E880 LDI R24,0x80
E55 9F84 MUL R24,R20
E56 0120 MOVW R4,R0
E57 0112 MOVW R2,R4
E58 0C2A ADD R2,R10
E59 1C3B ADC R3,R11
E5A 2FE6 MOV R30,R22
E5B 27FF CLR R31
E5C 0DE2 ADD R30,R2
E5D 1DF3 ADC R31,R3
E5E 9026 ELPM R2,128(Z)
E5F E080 LDI R24,0
E60 E091 LDI R25,1
E61 0E48 ADD R4,R24
E62 1E59 ADC R5,R25
E63 2FE6 MOV R30,R22
E64 27FF CLR R31
E65 0DE4 ADD R30,R4
E66 1DF5 ADC R31,R5
E67 8220 STD Z+0,R2
E68 9563 INC R22
E69 3860 CPI R22,0x80
E6A F348 BCS 0x0E54
E6B 9543 INC R20
E6C 3048 CPI R20,0x8
E6D F320 BCS 0x0E52
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -