📄 st7920iccavrmega8.lis
字号:
010C ; {
010C .dbline 143
010C ; WriteCommand(0x80|i); //写入列地址
010C 042F mov R16,R20
010E 0068 ori R16,128
0110 B5DF rcall _WriteCommand
0112 .dbline 144
0112 ; WriteCommand(0x80); //写入行地址
0112 00E8 ldi R16,128
0114 B3DF rcall _WriteCommand
0116 .dbline 145
0116 ; for(j=0;j<32;j++)
0116 6627 clr R22
0118 03C0 rjmp L48
011A L45:
011A .dbline 146
011A 0027 clr R16
011C BEDF rcall _WriteData
011E L46:
011E .dbline 145
011E 6395 inc R22
0120 L48:
0120 .dbline 145
0120 6032 cpi R22,32
0122 D8F3 brlo L45
0124 .dbline 147
0124 L42:
0124 .dbline 141
0124 4395 inc R20
0126 L44:
0126 .dbline 141
0126 4032 cpi R20,32
0128 88F3 brlo L41
012A .dbline -2
012A L40:
012A 00D0 rcall pop_gset2
012C .dbline 0 ; func end
012C 0895 ret
012E .dbsym r i 20 c
012E .dbsym r j 22 c
012E .dbend
012E .dbfunc e PutStr _PutStr fV
012E ; puts -> R20,R21
012E ; col -> R22
012E ; row -> R10
.even
012E _PutStr::
012E 00D0 rcall push_gset3
0130 622F mov R22,R18
0132 A02E mov R10,R16
0134 4E81 ldd R20,y+6
0136 5F81 ldd R21,y+7
0138 .dbline -1
0138 .dbline 152
0138 ; WriteData(0);
0138 ; }
0138 ; //WriteCommand(0x36);//开图显
0138 ; }
0138 ; //==写入一段文字,写完一屏,清屏,从头在写新的一屏=======
0138 ; void PutStr(unsigned char row,unsigned char col,unsigned char *puts)
0138 ; {
0138 .dbline 153
0138 ; WriteCommand(0x30); //基本指令,选择8位CPU控制方式,关图显
0138 00E3 ldi R16,48
013A A0DF rcall _WriteCommand
013C .dbline 154
013C ; WriteCommand(AC_TABLE[8*row+col]);
013C 88E0 ldi R24,8
013E 8A9D mul R24,R10
0140 F001 movw R30,R0
0142 262E mov R2,R22
0144 3324 clr R3
0146 E20D add R30,R2
0148 F31D adc R31,R3
014A 80E0 ldi R24,<_AC_TABLE
014C 90E0 ldi R25,>_AC_TABLE
014E E80F add R30,R24
0150 F91F adc R31,R25
0152 0081 ldd R16,z+0
0154 93DF rcall _WriteCommand
0156 20C0 rjmp L51
0158 L50:
0158 .dbline 156
0158 ; while(*puts != '\0')
0158 ; {
0158 .dbline 157
0158 ; if(col==8)
0158 6830 cpi R22,8
015A 11F4 brne L53
015C .dbline 158
015C ; {
015C .dbline 159
015C ; col=0;
015C 6627 clr R22
015E .dbline 160
015E ; row++;
015E A394 inc R10
0160 .dbline 161
0160 ; }
0160 L53:
0160 .dbline 162
0160 ; if(row==4) row=0;
0160 8A2D mov R24,R10
0162 8430 cpi R24,4
0164 09F4 brne L55
0166 .dbline 162
0166 AA24 clr R10
0168 L55:
0168 .dbline 163
0168 88E0 ldi R24,8
016A 8A9D mul R24,R10
016C F001 movw R30,R0
016E 262E mov R2,R22
0170 3324 clr R3
0172 E20D add R30,R2
0174 F31D adc R31,R3
0176 80E0 ldi R24,<_AC_TABLE
0178 90E0 ldi R25,>_AC_TABLE
017A E80F add R30,R24
017C F91F adc R31,R25
017E 0081 ldd R16,z+0
0180 7DDF rcall _WriteCommand
0182 .dbline 164
0182 FA01 movw R30,R20
0184 0081 ldd R16,z+0
0186 89DF rcall _WriteData
0188 .dbline 165
0188 4F5F subi R20,255 ; offset = 1
018A 5F4F sbci R21,255
018C .dbline 166
018C FA01 movw R30,R20
018E 0081 ldd R16,z+0
0190 84DF rcall _WriteData
0192 .dbline 167
0192 4F5F subi R20,255 ; offset = 1
0194 5F4F sbci R21,255
0196 .dbline 168
0196 6395 inc R22
0198 .dbline 169
0198 L51:
0198 .dbline 155
0198 FA01 movw R30,R20
019A 2080 ldd R2,z+0
019C 2220 tst R2
019E E1F6 brne L50
01A0 .dbline -2
01A0 L49:
01A0 00D0 rcall pop_gset3
01A2 .dbline 0 ; func end
01A2 0895 ret
01A4 .dbsym r puts 20 pc
01A4 .dbsym r col 22 c
01A4 .dbsym r row 10 c
01A4 .dbend
01A4 .dbfunc e PutBMP _PutBMP fV
01A4 ; k -> R20
01A4 ; x -> R22
01A4 ; j -> R14
01A4 ; y -> R12
01A4 ; i -> R10
01A4 ; puts -> y+10
.even
01A4 _PutBMP::
01A4 1A93 st -y,r17
01A6 0A93 st -y,r16
01A8 00D0 rcall push_gset5
01AA .dbline -1
01AA .dbline 173
01AA ; WriteCommand(AC_TABLE[8*row+col]);
01AA ; WriteData(*puts); //一个汉字的ASC码是一个16位的,所以要写入两个字节
01AA ; puts++;
01AA ; WriteData(*puts);
01AA ; puts++;
01AA ; col++;
01AA ; }
01AA ; }
01AA ; //========写入一屏图片128*64=======
01AA ; void PutBMP(unsigned char *puts)
01AA ; {
01AA .dbline 175
01AA ; unsigned char x,y,i,j,k;
01AA ; x=0x80;
01AA 60E8 ldi R22,128
01AC .dbline 176
01AC ; WriteCommand(0x34); //关图显
01AC 04E3 ldi R16,52
01AE 66DF rcall _WriteCommand
01B0 .dbline 177
01B0 ; for(k=0;k<2;k++)
01B0 4427 clr R20
01B2 1BC0 rjmp L61
01B4 L58:
01B4 .dbline 178
01B4 ; {
01B4 .dbline 179
01B4 ; y=0x80;
01B4 80E8 ldi R24,128
01B6 C82E mov R12,R24
01B8 .dbline 180
01B8 ; for(j=0;j<32;j++)
01B8 EE24 clr R14
01BA 12C0 rjmp L65
01BC L62:
01BC .dbline 181
01BC ; {
01BC .dbline 182
01BC ; WriteCommand(y); //写入列地址
01BC 0C2D mov R16,R12
01BE 5EDF rcall _WriteCommand
01C0 .dbline 183
01C0 ; WriteCommand(x); //写入行地址
01C0 062F mov R16,R22
01C2 5CDF rcall _WriteCommand
01C4 .dbline 184
01C4 ; for(i=0;i<16;i++)
01C4 AA24 clr R10
01C6 07C0 rjmp L69
01C8 L66:
01C8 .dbline 185
01C8 .dbline 186
01C8 EA85 ldd R30,y+10
01CA FB85 ldd R31,y+11
01CC 0191 ld R16,Z+
01CE FB87 std y+11,R31
01D0 EA87 std y+10,R30
01D2 63DF rcall _WriteData
01D4 .dbline 187
01D4 L67:
01D4 .dbline 184
01D4 A394 inc R10
01D6 L69:
01D6 .dbline 184
01D6 8A2D mov R24,R10
01D8 8031 cpi R24,16
01DA B0F3 brlo L66
01DC .dbline 188
01DC C394 inc R12
01DE .dbline 189
01DE L63:
01DE .dbline 180
01DE E394 inc R14
01E0 L65:
01E0 .dbline 180
01E0 8E2D mov R24,R14
01E2 8032 cpi R24,32
01E4 58F3 brlo L62
01E6 .dbline 190
01E6 68E8 ldi R22,136
01E8 .dbline 191
01E8 L59:
01E8 .dbline 177
01E8 4395 inc R20
01EA L61:
01EA .dbline 177
01EA 4230 cpi R20,2
01EC 18F3 brlo L58
01EE .dbline 192
01EE ; {
01EE ; WriteData(*(puts++));
01EE ; }
01EE ; y++;
01EE ; }
01EE ; x=0x88;
01EE ; }
01EE ; WriteCommand(0x36); //开图显
01EE 06E3 ldi R16,54
01F0 45DF rcall _WriteCommand
01F2 .dbline -2
01F2 L57:
01F2 00D0 rcall pop_gset5
01F4 2296 adiw R28,2
01F6 .dbline 0 ; func end
01F6 0895 ret
01F8 .dbsym r k 20 c
01F8 .dbsym r x 22 c
01F8 .dbsym r j 14 c
01F8 .dbsym r y 12 c
01F8 .dbsym r i 10 c
01F8 .dbsym l puts 10 pc
01F8 .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\AVR学习专区\AVR学习板\st7920iccavrmega8.c
0000 _bmp1::
0000 .blkb 1
0001 .dbsym e bmp1 _bmp1 A[1:1]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -