📄 loadbit.lis
字号:
00FA .dbline 66
00FA C601 movw R24,R12
00FC 0196 adiw R24,1
00FE 6C01 movw R12,R24
0100 L27:
0100 .dbline 67
0100 L24:
0100 .dbline 62
0100 4F5F subi R20,255 ; offset = 1
0102 5F4F sbci R21,255
0104 L26:
0104 .dbline 62
0104 4617 cp R20,R22
0106 5707 cpc R21,R23
0108 F0F2 brlo L23
010A .dbline -2
010A L22:
010A 2496 adiw R28,4
010C 0E940000 xcall pop_gset5
0110 2496 adiw R28,4
0112 .dbline 0 ; func end
0112 0895 ret
0114 .dbsym r i 20 i
0114 .dbsym r lno 22 i
0114 .dbsym r hno 10 i
0114 .dbsym r dat 12 pc
0114 .dbsym r y 14 i
0114 .dbsym l x 14 i
0114 .dbend
0114 .dbfunc e GUI_LoadPic1 _GUI_LoadPic1 fV
0114 ; i -> R20,R21
0114 ; lno -> R22,R23
0114 ; hno -> R10,R11
0114 ; dat -> R12,R13
0114 ; y -> R14,R15
0114 ; x -> y+14
.even
0114 _GUI_LoadPic1::
0114 0E940000 xcall push_arg4
0118 0E940000 xcall push_gset5
011C 7901 movw R14,R18
011E 2497 sbiw R28,4
0120 CA88 ldd R12,y+18
0122 DB88 ldd R13,y+19
0124 AC88 ldd R10,y+20
0126 BD88 ldd R11,y+21
0128 6E89 ldd R22,y+22
012A 7F89 ldd R23,y+23
012C .dbline -1
012C .dbline 85
012C ; }
012C ; }
012C ;
012C ;
012C ;
012C ;
012C ; /****************************************************************************
012C ; * 名称:GUI_LoadPic1()
012C ; * 功能:输出单色图形数据,反相显示。
012C ; * 入口参数: x 指定显示位置,x坐标
012C ; * y 指定显示位置,y坐标
012C ; * dat 要输出显示的数据。
012C ; * hno 要显示此行的点个数
012C ; * lno 要显示此列的点个数
012C ; * 出口参数:无
012C ; * 说明:操作失败原因是指定地址超出有效范围。
012C ; ****************************************************************************/
012C ; void GUI_LoadPic1(uint32 x, uint32 y, uint8 *dat, uint32 hno, uint32 lno)
012C ; { uint32 i;
012C .dbline 87
012C ;
012C ; GUI_ExchangeColor(); // 显示色与背景色交换
012C 0E940000 xcall _GUI_ExchangeColor
0130 .dbline 88
0130 ; for(i=0; i<lno; i++)
0130 4427 clr R20
0132 5527 clr R21
0134 1FC0 xjmp L33
0136 L30:
0136 .dbline 89
0136 ; { GUI_LoadLine(x, y, dat, hno); // 输出一行数据
0136 .dbline 89
0136 BB82 std y+3,R11
0138 AA82 std y+2,R10
013A D982 std y+1,R13
013C C882 std y+0,R12
013E 9701 movw R18,R14
0140 0E85 ldd R16,y+14
0142 1F85 ldd R17,y+15
0144 5DDF xcall _GUI_LoadLine
0146 .dbline 90
0146 ; y++; // 显示下一行
0146 C701 movw R24,R14
0148 0196 adiw R24,1
014A 7C01 movw R14,R24
014C .dbline 91
014C ; dat += (hno>>3); // 计算下一行的数据
014C 1501 movw R2,R10
014E 3694 lsr R3
0150 2794 ror R2
0152 3694 lsr R3
0154 2794 ror R2
0156 3694 lsr R3
0158 2794 ror R2
015A C20C add R12,R2
015C D31C adc R13,R3
015E .dbline 92
015E ; if( (hno&0x07)!=0 ) dat++;
015E C501 movw R24,R10
0160 8770 andi R24,7
0162 9070 andi R25,0
0164 8030 cpi R24,0
0166 8907 cpc R24,R25
0168 19F0 breq L34
016A X2:
016A .dbline 92
016A C601 movw R24,R12
016C 0196 adiw R24,1
016E 6C01 movw R12,R24
0170 L34:
0170 .dbline 93
0170 L31:
0170 .dbline 88
0170 4F5F subi R20,255 ; offset = 1
0172 5F4F sbci R21,255
0174 L33:
0174 .dbline 88
0174 4617 cp R20,R22
0176 5707 cpc R21,R23
0178 F0F2 brlo L30
017A .dbline 94
017A ; }
017A ; GUI_ExchangeColor();
017A 0E940000 xcall _GUI_ExchangeColor
017E .dbline -2
017E L29:
017E 2496 adiw R28,4
0180 0E940000 xcall pop_gset5
0184 2496 adiw R28,4
0186 .dbline 0 ; func end
0186 0895 ret
0188 .dbsym r i 20 i
0188 .dbsym r lno 22 i
0188 .dbsym r hno 10 i
0188 .dbsym r dat 12 pc
0188 .dbsym r y 14 i
0188 .dbsym l x 14 i
0188 .dbend
0188 .dbfunc e GUI_PutHZ _GUI_PutHZ fV
0188 ; i -> R20
0188 ; lno -> R22
0188 ; hno -> R10
0188 ; dat -> R12,R13
0188 ; y -> R14,R15
0188 ; x -> y+14
.even
0188 _GUI_PutHZ::
0188 0E940000 xcall push_arg4
018C 0E940000 xcall push_gset5
0190 7901 movw R14,R18
0192 2497 sbiw R28,4
0194 CA88 ldd R12,y+18
0196 DB88 ldd R13,y+19
0198 AC88 ldd R10,y+20
019A 6E89 ldd R22,y+22
019C .dbline -1
019C .dbline 113
019C ;
019C ; }
019C ; #endif
019C ;
019C ;
019C ; #if GUI_PutHZ_EN==1
019C ; /****************************************************************************
019C ; * 名称:GUI_PutHZ()
019C ; * 功能:显示汉字。
019C ; * 入口参数: x 指定显示位置,x坐标
019C ; * y 指定显示位置,y坐标
019C ; * dat 要输出显示的汉字点阵数据。
019C ; * hno 要显示此行的点个数
019C ; * lno 要显示此列的点个数
019C ; * 出口参数:无
019C ; * 说明:操作失败原因是指定地址超出有效范围。
019C ; ****************************************************************************/
019C ; void GUI_PutHZ(uint32 x, uint32 y, uint8 *dat, uint8 hno, uint8 lno)
019C ; { uint8 i;
019C .dbline 115
019C ;
019C ; for(i=0; i<lno; i++)
019C 4427 clr R20
019E 1EC0 xjmp L40
01A0 L37:
01A0 .dbline 116
01A0 ; { GUI_LoadLine(x, y, dat, hno); // 输出一行数据
01A0 .dbline 116
01A0 2A2C mov R2,R10
01A2 3324 clr R3
01A4 3B82 std y+3,R3
01A6 2A82 std y+2,R2
01A8 D982 std y+1,R13
01AA C882 std y+0,R12
01AC 9701 movw R18,R14
01AE 0E85 ldd R16,y+14
01B0 1F85 ldd R17,y+15
01B2 26DF xcall _GUI_LoadLine
01B4 .dbline 117
01B4 ; y++; // 显示下一行
01B4 C701 movw R24,R14
01B6 0196 adiw R24,1
01B8 7C01 movw R14,R24
01BA .dbline 118
01BA ; dat += (hno>>3); // 计算下一行的数据
01BA 2A2C mov R2,R10
01BC 3324 clr R3
01BE 3594 asr R3
01C0 2794 ror R2
01C2 3594 asr R3
01C4 2794 ror R2
01C6 3594 asr R3
01C8 2794 ror R2
01CA C20C add R12,R2
01CC D31C adc R13,R3
01CE .dbline 119
01CE ; if( (hno&0x07)!=0 ) dat++;
01CE 8A2D mov R24,R10
01D0 8770 andi R24,7
01D2 19F0 breq L41
01D4 .dbline 119
01D4 C601 movw R24,R12
01D6 0196 adiw R24,1
01D8 6C01 movw R12,R24
01DA L41:
01DA .dbline 120
01DA L38:
01DA .dbline 115
01DA 4395 inc R20
01DC L40:
01DC .dbline 115
01DC 4617 cp R20,R22
01DE 00F3 brlo L37
01E0 .dbline -2
01E0 L36:
01E0 2496 adiw R28,4
01E2 0E940000 xcall pop_gset5
01E6 2496 adiw R28,4
01E8 .dbline 0 ; func end
01E8 0895 ret
01EA .dbsym r i 20 c
01EA .dbsym r lno 22 c
01EA .dbsym r hno 10 c
01EA .dbsym r dat 12 pc
01EA .dbsym r y 14 i
01EA .dbsym l x 14 i
01EA .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -