📄 12864.lis
字号:
00B2 .dbline 122
00B2 ; }
00B2 ; //开关显示
00B2 ; void SetOnOff(unsigned char onoff)
00B2 ; {
00B2 .dbline 123
00B2 ; onoff=0x3e | onoff; //0011 111x
00B2 4E63 ori R20,62
00B4 .dbline 124
00B4 ; SendCommandToLCD(onoff);
00B4 042F mov R16,R20
00B6 CDDF xcall _SendCommandToLCD
00B8 .dbline -2
00B8 L12:
00B8 0E940000 xcall pop_gset1
00BC .dbline 0 ; func end
00BC 0895 ret
00BE .dbsym r onoff 20 c
00BE .dbend
00BE .dbfunc e Clr_Scr _Clr_Scr fV
00BE ; k -> R20
00BE ; j -> R22
.even
00BE _Clr_Scr::
00BE 0E940000 xcall push_gset2
00C2 .dbline -1
00C2 .dbline 129
00C2 ; }
00C2 ;
00C2 ; /*------------------清除内存---------------*/
00C2 ; void Clr_Scr()
00C2 ; {
00C2 .dbline 131
00C2 ; unsigned char j,k;
00C2 ; PORTB|=0x18; //CSA=1,CSB=1
00C2 88B3 in R24,0x18
00C4 8861 ori R24,24
00C6 88BB out 0x18,R24
00C8 .dbline 132
00C8 ; SetLine(0);
00C8 0027 clr R16
00CA D2DF xcall _SetLine
00CC .dbline 133
00CC ; SetColumn(0);
00CC 0027 clr R16
00CE DADF xcall _SetColumn
00D0 .dbline 134
00D0 ; for(k=0;k<8;k++)
00D0 4427 clr R20
00D2 0AC0 xjmp L17
00D4 L14:
00D4 .dbline 135
00D4 ; {
00D4 .dbline 136
00D4 ; SetLine(k); //第K页
00D4 042F mov R16,R20
00D6 CCDF xcall _SetLine
00D8 .dbline 137
00D8 ; for(j=0;j<64;j++)
00D8 6627 clr R22
00DA 03C0 xjmp L21
00DC L18:
00DC .dbline 138
00DC 0027 clr R16
00DE ABDF xcall _WriteByte
00E0 L19:
00E0 .dbline 137
00E0 6395 inc R22
00E2 L21:
00E2 .dbline 137
00E2 6034 cpi R22,64
00E4 D8F3 brlo L18
00E6 .dbline 139
00E6 L15:
00E6 .dbline 134
00E6 4395 inc R20
00E8 L17:
00E8 .dbline 134
00E8 4830 cpi R20,8
00EA A0F3 brlo L14
00EC .dbline -2
00EC L13:
00EC 0E940000 xcall pop_gset2
00F0 .dbline 0 ; func end
00F0 0895 ret
00F2 .dbsym r k 20 c
00F2 .dbsym r j 22 c
00F2 .dbend
00F2 .dbfunc e init_lcd _init_lcd fV
.even
00F2 _init_lcd::
00F2 .dbline -1
00F2 .dbline 144
00F2 ; WriteByte(0x00);
00F2 ; }
00F2 ; }
00F2 ;
00F2 ; /*------------------初始化LCD屏--------------------------*/
00F2 ; void init_lcd()
00F2 ; {
00F2 .dbline 145
00F2 ; CLRBIT(PORTB,RST);
00F2 C598 cbi 0x18,5
00F4 .dbline 146
00F4 ; SETBIT(PORTB,RST);
00F4 C59A sbi 0x18,5
00F6 .dbline 147
00F6 ; PORTB|=0x18; //CSA=1,CSB=1
00F6 88B3 in R24,0x18
00F8 8861 ori R24,24
00FA 88BB out 0x18,R24
00FC .dbline 148
00FC ; SetOnOff(0x3e); //关显示
00FC 0EE3 ldi R16,62
00FE D6DF xcall _SetOnOff
0100 .dbline 149
0100 ; SetLine(0x00); // 设定页
0100 0027 clr R16
0102 B6DF xcall _SetLine
0104 .dbline 150
0104 ; SetStartLine(0x00);
0104 0027 clr R16
0106 C8DF xcall _SetStartLine
0108 .dbline 151
0108 ; SetColumn(0x00);
0108 0027 clr R16
010A BCDF xcall _SetColumn
010C .dbline 152
010C ; SetOnOff(0x3f); //开显示
010C 0FE3 ldi R16,63
010E CEDF xcall _SetOnOff
0110 .dbline -2
0110 L22:
0110 .dbline 0 ; func end
0110 0895 ret
0112 .dbend
0112 .dbfunc e word_disp _word_disp fV
0112 ; k -> R20
0112 ; j -> R22
0112 ; i -> R10
0112 ; hzk -> R12,R13
0112 ; row -> R14
0112 ; pag -> y+10
.even
0112 _word_disp::
0112 0E940000 xcall push_arg4
0116 0E940000 xcall push_gset5
011A E22E mov R14,R18
011C CE84 ldd R12,y+14
011E DF84 ldd R13,y+15
0120 .dbline -1
0120 .dbline 160
0120 ; }
0120 ; /*----------------------------------------------------------------------
0120 ; 说明:12864液晶横放,汉字按正常方式显示,pag:0~7(从上到下);
0120 ; row:0~7(从左到右,水平行,一行可显示8个汉字)
0120 ; 功能:指定位置显示汉字16*16
0120 ; ------------------------------------------------------------------------*/
0120 ; void word_disp(unsigned char pag,unsigned char row, unsigned flash char *hzk)
0120 ; {
0120 .dbline 161
0120 ; unsigned char j=0,i=0,k=0;
0120 6627 clr R22
0122 .dbline 161
0122 AA24 clr R10
0124 .dbline 161
0124 4427 clr R20
0126 .dbline 162
0126 ; for(j=0;j<2;j++)
0126 24C0 xjmp L27
0128 L24:
0128 .dbline 163
0128 ; {
0128 .dbline 164
0128 ; if (row <4)
0128 8E2D mov R24,R14
012A 8430 cpi R24,4
012C 20F4 brsh L28
012E .dbline 165
012E ; {
012E .dbline 166
012E ; k=row;
012E 482F mov R20,R24
0130 .dbline 167
0130 ; SETBIT(PORTB,CSA); //CSA=1,CSB=0,select leftwindow
0130 C39A sbi 0x18,3
0132 .dbline 168
0132 ; CLRBIT(PORTB,CSB);
0132 C498 cbi 0x18,4
0134 .dbline 169
0134 ; }
0134 04C0 xjmp L29
0136 L28:
0136 .dbline 171
0136 ; else
0136 ; {
0136 .dbline 172
0136 ; k = row-4;
0136 4E2D mov R20,R14
0138 4450 subi R20,4
013A .dbline 173
013A ; CLRBIT(PORTB,CSA); //CSA=0,CSB=1,select rightwindow
013A C398 cbi 0x18,3
013C .dbline 174
013C ; SETBIT(PORTB,CSB);
013C C49A sbi 0x18,4
013E .dbline 175
013E ; }
013E L29:
013E .dbline 176
013E ; SetLine(pag+j);
013E 0A85 ldd R16,y+10
0140 060F add R16,R22
0142 96DF xcall _SetLine
0144 .dbline 177
0144 ; SetColumn(k*16);
0144 80E1 ldi R24,16
0146 849F mul R24,R20
0148 002D mov R16,R0
014A 9CDF xcall _SetColumn
014C .dbline 178
014C ; for(i=0;i<16;i++)
014C AA24 clr R10
014E 0CC0 xjmp L33
0150 L30:
0150 .dbline 179
0150 .dbline 180
0150 80E1 ldi R24,16
0152 869F mul R24,R22
0154 F001 movw R30,R0
0156 2A2C mov R2,R10
0158 3324 clr R3
015A E20D add R30,R2
015C F31D adc R31,R3
015E EC0D add R30,R12
0160 FD1D adc R31,R13
0162 0491 lpm R16,Z
0164 68DF xcall _WriteByte
0166 .dbline 181
0166 L31:
0166 .dbline 178
0166 A394 inc R10
0168 L33:
0168 .dbline 178
0168 8A2D mov R24,R10
016A 8031 cpi R24,16
016C 88F3 brlo L30
016E .dbline 182
016E L25:
016E .dbline 162
016E 6395 inc R22
0170 L27:
0170 .dbline 162
0170 6230 cpi R22,2
0172 D0F2 brlo L24
0174 .dbline -2
0174 L23:
0174 0E940000 xcall pop_gset5
0178 2496 adiw R28,4
017A .dbline 0 ; func end
017A 0895 ret
017C .dbsym r k 20 c
017C .dbsym r j 22 c
017C .dbsym r i 10 c
017C .dbsym r hzk 12 pkc
017C .dbsym r row 14 c
017C .dbsym l pag 10 c
017C .dbend
017C .dbfunc e byte_disp _byte_disp fV
017C ; k -> R20
017C ; j -> R22
017C ; i -> R10
017C ; bytek -> R12,R13
017C ; row -> R14
017C ; pag -> y+10
.even
017C _byte_disp::
017C 0E940000 xcall push_arg4
0180 0E940000 xcall push_gset5
0184 E22E mov R14,R18
0186 CE84 ldd R12,y+14
0188 DF84 ldd R13,y+15
018A .dbline -1
018A .dbline 191
018A ; {
018A ; WriteByte(hzk[16*j+i]);
018A ; }
018A ; }
018A ; }
018A ;
018A ; /*----------------------------------------------------------------------
018A ; 说明:12864液晶横放,字符按正常方式显示,pag:0~7(从上到下);
018A ; row:0~15(从左到右,水平行,一行可显示16个字符)
018A ; 功能:指定位置显示字符8*16
018A ; ------------------------------------------------------------------------*/
018A ; void byte_disp(unsigned char pag, unsigned char row, unsigned flash char *bytek)
018A ; {
018A .dbline 192
018A ; unsigned char j=0,i=0,k=0;
018A 6627 clr R22
018C .dbline 192
018C AA24 clr R10
018E .dbline 192
018E 4427 clr R20
0190 .dbline 193
0190 ; for(j=0;j<2;j++)
0190 24C0 xjmp L38
0192 L35:
0192 .dbline 194
0192 ; {
0192 .dbline 195
0192 ; if (row < 8)
0192 8E2D mov R24,R14
0194 8830 cpi R24,8
0196 20F4 brsh L39
0198 .dbline 196
0198 ; {
0198 .dbline 197
0198 ; k=row;
0198 482F mov R20,R24
019A .dbline 198
019A ; SETBIT(PORTB,CSA); //CSA=1,CSB=0,select leftwindow
019A C39A sbi 0x18,3
019C .dbline 199
019C ; CLRBIT(PORTB,CSB);
019C C498 cbi 0x18,4
019E .dbline 200
019E ; }
019E 04C0 xjmp L40
01A0 L39:
01A0 .dbline 202
01A0 ; else
01A0 ; {
01A0 .dbline 203
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -