📄 font5_7.lis
字号:
002A L10:
002A .dbline 1095
002A ; //if( (ch<0x20) || (ch>0x7f) ) ch = 0x20;
002A ; //ch -= 0x20;
002A ; for(i=0; i<8; i++)
002A 0024 clr R0
002C 0A82 std y+2,R0
002E A2C0 xjmp L15
0030 L12:
0030 .dbline 1096
0030 ; { /* 读取点阵数据 */
0030 .dbline 1097
0030 ; for(k=0; k<5; k++)
0030 EE24 clr R14
0032 8FC0 xjmp L19
0034 L16:
0034 .dbline 1098
0034 ; {
0034 .dbline 1099
0034 ; temp = i*5 + k;
0034 85E0 ldi R24,5
0036 0A80 ldd R0,y+2
0038 809D mul R24,R0
003A C02C mov R12,R0
003C CE0C add R12,R14
003E .dbline 1100
003E ; font_dat = BAT[temp];
003E 80E0 ldi R24,<_BAT
0040 90E0 ldi R25,>_BAT
0042 EC2D mov R30,R12
0044 FF27 clr R31
0046 E80F add R30,R24
0048 F91F adc R31,R25
004A A490 lpm R10,Z
004C .dbline 1101
004C 6989 ldd R22,y+17
004E 7727 clr R23
0050 6130 cpi R22,1
0052 E0E0 ldi R30,0
0054 7E07 cpc R23,R30
0056 69F0 breq L23
0058 6230 cpi R22,2
005A E0E0 ldi R30,0
005C 7E07 cpc R23,R30
005E A1F0 breq L26
0060 6330 cpi R22,3
0062 E0E0 ldi R30,0
0064 7E07 cpc R23,R30
0066 11F1 breq L30
0068 6430 cpi R22,4
006A E0E0 ldi R30,0
006C 7E07 cpc R23,R30
006E A1F1 breq L35
0070 4CC0 xjmp L21
0072 X0:
0072 .dbline 1101
0072 ; switch(v){
0072 L23:
0072 .dbline 1102
0072 ; case 1: if(temp%5==4){font_dat |= 0xff;}break;
0072 15E0 ldi R17,5
0074 0C2D mov R16,R12
0076 0E940000 xcall mod8u
007A 0430 cpi R16,4
007C 09F0 breq X1
007E 45C0 xjmp L21
0080 X1:
0080 .dbline 1102
0080 .dbline 1102
0080 8A2D mov R24,R10
0082 8F6F ori R24,255
0084 A82E mov R10,R24
0086 .dbline 1102
0086 .dbline 1102
0086 41C0 xjmp L21
0088 L26:
0088 .dbline 1103
0088 25E0 ldi R18,5
008A 30E0 ldi R19,0
008C 0C2D mov R16,R12
008E 1127 clr R17
0090 0E940000 xcall mod16s
0094 0430 cpi R16,4
0096 E0E0 ldi R30,0
0098 1E07 cpc R17,R30
009A 21F0 breq L29
009C 0330 cpi R16,3
009E E0E0 ldi R30,0
00A0 1E07 cpc R17,R30
00A2 99F5 brne L21
00A4 L29:
00A4 .dbline 1103
00A4 ; case 2: if((temp%5==4)||(temp%5==3)){font_dat |= 0xff;}break;
00A4 .dbline 1103
00A4 8A2D mov R24,R10
00A6 8F6F ori R24,255
00A8 A82E mov R10,R24
00AA .dbline 1103
00AA .dbline 1103
00AA 2FC0 xjmp L21
00AC L30:
00AC .dbline 1104
00AC 25E0 ldi R18,5
00AE 30E0 ldi R19,0
00B0 0C2D mov R16,R12
00B2 1127 clr R17
00B4 0E940000 xcall mod16s
00B8 0430 cpi R16,4
00BA E0E0 ldi R30,0
00BC 1E07 cpc R17,R30
00BE 41F0 breq L34
00C0 0330 cpi R16,3
00C2 E0E0 ldi R30,0
00C4 1E07 cpc R17,R30
00C6 21F0 breq L34
00C8 0230 cpi R16,2
00CA E0E0 ldi R30,0
00CC 1E07 cpc R17,R30
00CE E9F4 brne L21
00D0 L34:
00D0 .dbline 1104
00D0 ; case 3: if((temp%5==4)||(temp%5==3)||(temp%5==2)){font_dat |= 0xff;}break;
00D0 .dbline 1104
00D0 8A2D mov R24,R10
00D2 8F6F ori R24,255
00D4 A82E mov R10,R24
00D6 .dbline 1104
00D6 .dbline 1104
00D6 19C0 xjmp L21
00D8 L35:
00D8 .dbline 1105
00D8 25E0 ldi R18,5
00DA 30E0 ldi R19,0
00DC 0C2D mov R16,R12
00DE 1127 clr R17
00E0 0E940000 xcall mod16s
00E4 0430 cpi R16,4
00E6 E0E0 ldi R30,0
00E8 1E07 cpc R17,R30
00EA 61F0 breq L40
00EC 0330 cpi R16,3
00EE E0E0 ldi R30,0
00F0 1E07 cpc R17,R30
00F2 41F0 breq L40
00F4 0230 cpi R16,2
00F6 E0E0 ldi R30,0
00F8 1E07 cpc R17,R30
00FA 21F0 breq L40
00FC 0130 cpi R16,1
00FE E0E0 ldi R30,0
0100 1E07 cpc R17,R30
0102 19F4 brne L21
0104 L40:
0104 .dbline 1105
0104 ; case 4: if((temp%5==4)||(temp%5==3)||(temp%5==2)||(temp%5==1)){font_dat |= 0xff;}break;
0104 .dbline 1105
0104 8A2D mov R24,R10
0106 8F6F ori R24,255
0108 A82E mov R10,R24
010A .dbline 1105
010A .dbline 1105
010A .dbline 1106
010A ; default: break;
010A L21:
010A .dbline 1108
010A ; }
010A ; for(j=0; j<8; j++)
010A 4427 clr R20
010C 1FC0 xjmp L44
010E L41:
010E .dbline 1109
010E ; { /* 设置相应的点为color或为back_color */
010E .dbline 1110
010E ; if( (font_dat&DCB2HEX_TAB[j])==0 ) GUI_CopyColor(&bakc, back_color);
010E 80E0 ldi R24,<_DCB2HEX_TAB
0110 90E0 ldi R25,>_DCB2HEX_TAB
0112 E42F mov R30,R20
0114 FF27 clr R31
0116 E80F add R30,R24
0118 F91F adc R31,R25
011A E491 lpm R30,Z
011C 2A2C mov R2,R10
011E 2E22 and R2,R30
0120 21F4 brne L45
0122 .dbline 1110
0122 20900000 lds R2,_back_color
0126 2982 std y+1,R2
0128 03C0 xjmp L46
012A L45:
012A .dbline 1111
012A ; else GUI_CopyColor(&bakc, disp_color);
012A 20900000 lds R2,_disp_color
012E 2982 std y+1,R2
0130 L46:
0130 .dbline 1112
0130 2980 ldd R2,y+1
0132 2882 std y+0,R2
0134 2F85 ldd R18,y+15
0136 3889 ldd R19,y+16
0138 0D85 ldd R16,y+13
013A 1E85 ldd R17,y+14
013C 0E940000 xcall _GUI_Point
0140 .dbline 1113
0140 8D85 ldd R24,y+13
0142 9E85 ldd R25,y+14
0144 0196 adiw R24,1
0146 9E87 std y+14,R25
0148 8D87 std y+13,R24
014A .dbline 1114
014A L42:
014A .dbline 1108
014A 4395 inc R20
014C L44:
014C .dbline 1108
014C 4830 cpi R20,8
014E F8F2 brlo L41
0150 .dbline 1115
0150 L17:
0150 .dbline 1097
0150 E394 inc R14
0152 L19:
0152 .dbline 1097
0152 8E2D mov R24,R14
0154 8530 cpi R24,5
0156 08F4 brsh X2
0158 6DCF xjmp L16
015A X2:
015A .dbline 1116
015A 8F85 ldd R24,y+15
015C 9889 ldd R25,y+16
015E 0196 adiw R24,1
0160 988B std y+16,R25
0162 8F87 std y+15,R24
0164 .dbline 1117
0164 8D85 ldd R24,y+13
0166 9E85 ldd R25,y+14
0168 8897 sbiw R24,40
016A 9E87 std y+14,R25
016C 8D87 std y+13,R24
016E .dbline 1118
016E L13:
016E .dbline 1095
016E 0A80 ldd R0,y+2
0170 0394 inc R0
0172 0A82 std y+2,R0
0174 L15:
0174 .dbline 1095
0174 8A81 ldd R24,y+2
0176 8830 cpi R24,8
0178 08F4 brsh X3
017A 5ACF xjmp L12
017C X3:
017C .dbline 1119
017C ; GUI_Point(x, y, bakc);
017C ; x++;
017C ; }
017C ; }
017C ; y++; // 指向下一行
017C ; x -= 40; // 恢复x值
017C ; }
017C ; return(1);
017C 01E0 ldi R16,1
017E .dbline -2
017E L7:
017E 2396 adiw R28,3
0180 0E940000 xcall pop_gset5
0184 2496 adiw R28,4
0186 .dbline 0 ; func end
0186 0895 ret
0188 .dbsym l i 2 c
0188 .dbsym r temp 12 c
0188 .dbsym r k 14 c
0188 .dbsym r font_dat 10 c
0188 .dbsym l bakc 1 c
0188 .dbsym r j 20 c
0188 .dbsym l v 17 c
0188 .dbsym l y 15 i
0188 .dbsym l x 13 i
0188 .dbend
0188 .dbfunc e GUI_PutChar _GUI_PutChar fc
0188 ; i -> R20
0188 ; font_dat -> R14
0188 ; bakc -> y+1
0188 ; j -> R22
0188 ; ch -> R10
0188 ; y -> R12,R13
0188 ; x -> y+12
.even
0188 _GUI_PutChar::
0188 0E940000 xcall push_arg4
018C 0E940000 xcall push_gset5
0190 6901 movw R12,R18
0192 2297 sbiw R28,2
0194 A888 ldd R10,y+16
0196 .dbline -1
0196 .dbline 1131
0196 ; }
0196 ; /****************************************************************************
0196 ; * 名称:GUI_PutChar()
0196 ; * 功能:显示ASCII码,显示值为20H-7FH(若为其它值,则显示' ')。
0196 ; * 入口参数: x 指定显示位置,x坐标
0196 ; * y 指定显示位置,y坐标
0196 ; * ch 要显示的ASCII码值。
0196 ; * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
0196 ; * 说明:操作失败原因是指定地址超出有效范围。(显示格式为6*8)
0196 ; ****************************************************************************/
0196 ; uint8 GUI_PutChar(uint32 x, uint32 y, uint8 ch)
0196 ; { uint8 font_dat;
0196 .dbline 1136
0196 ; uint8 i, j;
0196 ; TCOLOR bakc;
0196 ;
0196 ; /* 参数过滤 */
0196 ; if( x>=(GUI_LCM_XMAX-8) ) return(0);
0196 8C85 ldd R24,y+12
0198 9D85 ldd R25,y+13
019A 883E cpi R24,232
019C E0E0 ldi R30,0
019E 9E07 cpc R25,R30
01A0 10F0 brlo L48
01A2 .dbline 1136
01A2 0027 clr R16
01A4 4FC0 xjmp L47
01A6 L48:
01A6 .dbline 1137
01A6 ; if( y>=(GUI_LCM_YMAX-8) ) return(0);
01A6 C601 movw R24,R12
01A8 8837 cpi R24,120
01AA E0E0 ldi R30,0
01AC 9E07 cpc R25,R30
01AE 10F0 brlo L50
01B0 .dbline 1137
01B0 0027 clr R16
01B2 48C0 xjmp L47
01B4 L50:
01B4 .dbline 1138
01B4 8A2D mov R24,R10
01B6 8032 cpi R24,32
01B8 18F0 brlo L54
01BA 8FE7 ldi R24,127
01BC 8A15 cp R24,R10
01BE 10F4 brsh L52
01C0 L54:
01C0 .dbline 1138
01C0 ; if( (ch<0x20) || (ch>0x7f) ) ch = 0x20;
01C0 80E2 ldi R24,32
01C2 A82E mov R10,R24
01C4 L52:
01C4 .dbline 1140
01C4 ;
01C4 ; ch -= 0x20;
01C4 8A2D mov R24,R10
01C6 8052 subi R24,32
01C8 A82E mov R10,R24
01CA .dbline 1141
01CA ; for(i=0; i<8; i++)
01CA 4427 clr R20
01CC 37C0 xjmp L58
01CE L55:
01CE .dbline 1142
01CE ; { /* 读取点阵数据 */
01CE .dbline 1143
01CE ; font_dat = FONT5x7ASCII[ch][i];
01CE 88E0 ldi R24,8
01D0 8A9D mul R24,R10
01D2 1001 movw R2,R0
01D4 80E0 ldi R24,<_FONT5x7ASCII
01D6 90E0 ldi R25,>_FONT5x7ASCII
01D8 280E add R2,R24
01DA 391E adc R3,R25
01DC E42F mov R30,R20
01DE FF27 clr R31
01E0 E20D add R30,R2
01E2 F31D adc R31,R3
01E4 E490 lpm R14,Z
01E6 .dbline 1145
01E6 ;
01E6 ; for(j=0; j<6; j++)
01E6 6627 clr R22
01E8 1EC0 xjmp L62
01EA L59:
01EA
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -