📄 测试.lis
字号:
00EE A22E mov R10,R18
00F0 602F mov R22,R16
00F2 .dbline -1
00F2 .dbline 185
00F2 ; }
00F2 ; //****************************************************
00F2 ; /*写入显示内部带字库型的字体的位置*/
00F2 ; //****************************************************
00F2 ; void wezhi(uchar x,uchar y)//x为在哪一行,y是在哪一列
00F2 ; {
00F2 .dbline 187
00F2 ; uchar p;
00F2 ; if(x==0) p=0x80;//第一行
00F2 6623 tst R22
00F4 09F4 brne L31
00F6 X6:
00F6 .dbline 187
00F6 40E8 ldi R20,128
00F8 L31:
00F8 .dbline 188
00F8 ; if(x==1) p=0x90;//第二行
00F8 6130 cpi R22,1
00FA 09F4 brne L33
00FC X7:
00FC .dbline 188
00FC 40E9 ldi R20,144
00FE L33:
00FE .dbline 189
00FE ; if(x==2) p=0x88;//第三行
00FE 6230 cpi R22,2
0100 09F4 brne L35
0102 X8:
0102 .dbline 189
0102 48E8 ldi R20,136
0104 L35:
0104 .dbline 190
0104 ; if(x==3) p=0x98;//第四行
0104 6330 cpi R22,3
0106 09F4 brne L37
0108 X9:
0108 .dbline 190
0108 48E9 ldi R20,152
010A L37:
010A .dbline 191
010A ; p+=y;//再加上y列
010A 4A0D add R20,R10
010C .dbline 192
010C ; writecomd(p) ;
010C 042F mov R16,R20
010E C7DF xcall _writecomd
0110 .dbline 193
0110 ; delay_ms(1);
0110 01E0 ldi R16,1
0112 10E0 ldi R17,0
0114 75DF xcall _delay_ms
0116 .dbline -2
0116 L30:
0116 .dbline 0 ; func end
0116 0C940000 xjmp pop_xgsetF00C
011A .dbsym r p 20 c
011A .dbsym r y 10 c
011A .dbsym r x 22 c
011A .dbend
011A .dbfunc e zhiti _zhiti fV
011A ; data -> R20,R21
.even
011A _zhiti::
011A 4A93 st -y,R20
011C 5A93 st -y,R21
011E A801 movw R20,R16
0120 .dbline -1
0120 .dbline 199
0120 ; }
0120 ; //****************************************************
0120 ; /*写入字体*/
0120 ; //**************************************************
0120 ; void zhiti(uchar *data)
0120 ; {
0120 08C0 xjmp L41
0122 L40:
0122 .dbline 202
0122 ;
0122 ; while(*data!='\0')
0122 ; {
0122 .dbline 203
0122 ; writedata(*data);
0122 FA01 movw R30,R20
0124 0081 ldd R16,z+0
0126 CEDF xcall _writedata
0128 .dbline 204
0128 ; delay_ms(5);
0128 05E0 ldi R16,5
012A 10E0 ldi R17,0
012C 69DF xcall _delay_ms
012E .dbline 205
012E ; data++;
012E 4F5F subi R20,255 ; offset = 1
0130 5F4F sbci R21,255
0132 .dbline 206
0132 ; }
0132 L41:
0132 .dbline 201
0132 FA01 movw R30,R20
0134 2080 ldd R2,z+0
0136 2220 tst R2
0138 A1F7 brne L40
013A X10:
013A .dbline -2
013A L39:
013A .dbline 0 ; func end
013A 5991 ld R21,y+
013C 4991 ld R20,y+
013E 0895 ret
0140 .dbsym r data 20 pc
0140 .dbend
0140 .dbfunc e frist1 _frist1 fV
.even
0140 _frist1::
0140 .dbline -1
0140 .dbline 212
0140 ; }
0140 ; //********************************************************
0140 ; /*基本指令初始化*/
0140 ; //*******************************************************
0140 ; void frist1()
0140 ; {
0140 .dbline 213
0140 ; writecomd(0x01);//清屏显示
0140 01E0 ldi R16,1
0142 ADDF xcall _writecomd
0144 .dbline 214
0144 ; writecomd(0x30);//8位并口,基本指令
0144 00E3 ldi R16,48
0146 ABDF xcall _writecomd
0148 .dbline 215
0148 ; delay_us(10);
0148 0AE0 ldi R16,10
014A 10E0 ldi R17,0
014C 6EDF xcall _delay_us
014E .dbline 216
014E ; writecomd(0x0c);//整体显示,无游标,无反百,
014E 0CE0 ldi R16,12
0150 A6DF xcall _writecomd
0152 .dbline 217
0152 ; delay_us(10);
0152 0AE0 ldi R16,10
0154 10E0 ldi R17,0
0156 69DF xcall _delay_us
0158 .dbline 218
0158 ; writecomd(0x02);//地址归位
0158 02E0 ldi R16,2
015A A1DF xcall _writecomd
015C .dbline 219
015C ; delay_us(10);
015C 0AE0 ldi R16,10
015E 10E0 ldi R17,0
0160 64DF xcall _delay_us
0162 .dbline 220
0162 ; writecomd(0x40);//设置CGRAM地址
0162 00E4 ldi R16,64
0164 9CDF xcall _writecomd
0166 .dbline -2
0166 L43:
0166 .dbline 0 ; func end
0166 0895 ret
0168 .dbend
0168 .dbfunc e frist2 _frist2 fV
.even
0168 _frist2::
0168 .dbline -1
0168 .dbline 227
0168 ;
0168 ; }
0168 ; //*****************************************************
0168 ; /*扩充指令*/
0168 ; //*****************************************************
0168 ; void frist2()
0168 ; {
0168 .dbline 228
0168 ; writecomd(0x01);//清屏显示
0168 01E0 ldi R16,1
016A 99DF xcall _writecomd
016C .dbline 229
016C ; delay_us(10);
016C 0AE0 ldi R16,10
016E 10E0 ldi R17,0
0170 5CDF xcall _delay_us
0172 .dbline 230
0172 ; writecomd(0x36);//8位控制,扩充指令,绘图开
0172 06E3 ldi R16,54
0174 94DF xcall _writecomd
0176 .dbline 231
0176 ; delay_ms(5);
0176 05E0 ldi R16,5
0178 10E0 ldi R17,0
017A 42DF xcall _delay_ms
017C .dbline -2
017C L44:
017C .dbline 0 ; func end
017C 0895 ret
017E .dbend
017E .dbfunc e drwa _drwa fV
017E ; k -> R22
017E ; temp_y -> R10
017E ; temp_x -> y+0
017E ; i -> R12
017E ; j -> R20
017E ; data -> y+11
.even
017E _drwa::
017E 1A93 st -y,r17
0180 0A93 st -y,r16
0182 0E940000 xcall push_xgsetF0FC
0186 2197 sbiw R28,1
0188 .dbline -1
0188 .dbline 237
0188 ; }
0188 ; //*****************************************************
0188 ; /*绘图程序,整页显示*/
0188 ; //*****************************************************
0188 ; void drwa(const uchar *data)
0188 ; {
0188 .dbline 239
0188 ; uchar i,j,k,temp_x,temp_y;
0188 ; temp_x=0x80;
0188 80E8 ldi R24,128
018A 8883 std y+0,R24
018C .dbline 240
018C ; temp_y=0x80;
018C A82E mov R10,R24
018E .dbline 241
018E ; for(i=0;i<32;i++)
018E CC24 clr R12
0190 17C0 xjmp L49
0192 L46:
0192 .dbline 242
0192 ; {
0192 .dbline 243
0192 ; writecomd(temp_y++);
0192 2A2C mov R2,R10
0194 822D mov R24,R2
0196 8F5F subi R24,255 ; addi 1
0198 A82E mov R10,R24
019A 022D mov R16,R2
019C 80DF xcall _writecomd
019E .dbline 244
019E ; writecomd(temp_x);
019E 0881 ldd R16,y+0
01A0 7EDF xcall _writecomd
01A2 .dbline 245
01A2 ; for(j=0;j<16;j++)
01A2 4427 clr R20
01A4 0AC0 xjmp L53
01A6 L50:
01A6 .dbline 246
01A6 ; {
01A6 .dbline 247
01A6 ; writedata(*data);
01A6 EB85 ldd R30,y+11
01A8 FC85 ldd R31,y+12
01AA 0491 lpm R16,Z
01AC 8BDF xcall _writedata
01AE .dbline 248
01AE ; data++;
01AE 8B85 ldd R24,y+11
01B0 9C85 ldd R25,y+12
01B2 0196 adiw R24,1
01B4 9C87 std y+12,R25
01B6 8B87 std y+11,R24
01B8 .dbline 249
01B8 ; }
01B8 L51:
01B8 .dbline 245
01B8 4395 inc R20
01BA L53:
01BA .dbline 245
01BA 4031 cpi R20,16
01BC A0F3 brlo L50
01BE X11:
01BE .dbline 250
01BE ; }
01BE L47:
01BE .dbline 241
01BE C394 inc R12
01C0 L49:
01C0 .dbline 241
01C0 8C2D mov R24,R12
01C2 8032 cpi R24,32
01C4 30F3 brlo L46
01C6 X12:
01C6 .dbline 251
01C6 ; temp_x=0x88;
01C6 88E8 ldi R24,136
01C8 8883 std y+0,R24
01CA .dbline 252
01CA ; temp_y=0x80;
01CA 80E8 ldi R24,128
01CC A82E mov R10,R24
01CE .dbline 253
01CE ; for(i=0;i<32;i++)
01CE CC24 clr R12
01D0 17C0 xjmp L57
01D2 L54:
01D2 .dbline 254
01D2 ; {
01D2 .dbline 255
01D2 ; writecomd(temp_y++);
01D2 2A2C mov R2,R10
01D4 822D mov R24,R2
01D6 8F5F subi R24,255 ; addi 1
01D8 A82E mov R10,R24
01DA 022D mov R16,R2
01DC 60DF xcall _writecomd
01DE .dbline 256
01DE ; writecomd(temp_x);
01DE 0881 ldd R16,y+0
01E0 5EDF xcall _writecomd
01E2 .dbline 257
01E2 ; for(j=0;j<16;j++)
01E2 4427 clr R20
01E4 0AC0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -