⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1286418.lis

📁 3D LCD for running graphical lCDs
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0162 01C0              xjmp L31
 0164           L32:
 0164                   .dbline 242
 0164           ;       else
 0164           ;           return 1;
 0164 01E0              ldi R16,1
 0166                   .dbline -2
 0166           L31:
 0166                   .dbline 0 ; func end
 0166 6991              ld R22,y+
 0168 4991              ld R20,y+
 016A 0895              ret
 016C                   .dbsym r temp2 20 c
 016C                   .dbsym r temp1 22 c
 016C                   .dbend
 016C                   .dbfunc e LcdClr _LcdClr fV
 016C           ;          count -> R20
 016C           ;           temp -> R22
                        .even
 016C           _LcdClr::
 016C 4A93              st -y,R20
 016E 6A93              st -y,R22
 0170                   .dbline -1
 0170                   .dbline 250
 0170           ; }
 0170           ; 
 0170           ; /*****************************************
 0170           ; *  FUNCTION NAME: LcdClr
 0170           ; *  DESCRIPTION:   CLEAR LCD
 0170           ; /*****************************************/
 0170           ; void LcdClr(void)
 0170           ; {
 0170                   .dbline 254
 0170           ;       unsigned char count;
 0170           ;       unsigned char temp;
 0170           ;       /* CLEAR LEFT&RIGHT SCREEN */
 0170           ;       LcdWrCmd('B',0X3E);                                /* LCD OFF */
 0170 2EE3              ldi R18,62
 0172 02E4              ldi R16,66
 0174 50DF              xcall _LcdWrCmd
 0176                   .dbline 255
 0176           ;       LcdWrCmd('B',0XC0);                    /* SET ROW */
 0176 20EC              ldi R18,192
 0178 02E4              ldi R16,66
 017A 4DDF              xcall _LcdWrCmd
 017C                   .dbline 256
 017C           ;       for(count=0; count<8; count++)
 017C 4427              clr R20
 017E 10C0              xjmp L38
 0180           L35:
 0180                   .dbline 257
 0180           ;       {
 0180                   .dbline 258
 0180           ;           LcdWrCmd('B',0XB8+count);          /* SET PAGE */
 0180 242F              mov R18,R20
 0182 2854              subi R18,72    ; addi 184
 0184 02E4              ldi R16,66
 0186 47DF              xcall _LcdWrCmd
 0188                   .dbline 259
 0188           ;               LcdWrCmd('B',0X40);                        /* SET Y */
 0188 20E4              ldi R18,64
 018A 02E4              ldi R16,66
 018C 44DF              xcall _LcdWrCmd
 018E                   .dbline 260
 018E           ;               for(temp=0; temp<64; temp++)
 018E 6627              clr R22
 0190 04C0              xjmp L42
 0192           L39:
 0192                   .dbline 261
 0192           ;               {
 0192                   .dbline 262
 0192           ;                    LcdWrDat('B',0X00);
 0192 2227              clr R18
 0194 02E4              ldi R16,66
 0196 67DF              xcall _LcdWrDat
 0198                   .dbline 263
 0198           ;               }
 0198           L40:
 0198                   .dbline 260
 0198 6395              inc R22
 019A           L42:
 019A                   .dbline 260
 019A 6034              cpi R22,64
 019C D0F3              brlo L39
 019E           X12:
 019E                   .dbline 264
 019E           ;       }
 019E           L36:
 019E                   .dbline 256
 019E 4395              inc R20
 01A0           L38:
 01A0                   .dbline 256
 01A0 4830              cpi R20,8
 01A2 70F3              brlo L35
 01A4           X13:
 01A4                   .dbline 265
 01A4           ;       LcdWrCmd('B',0X3F);                                /* LCD ON */
 01A4 2FE3              ldi R18,63
 01A6 02E4              ldi R16,66
 01A8 36DF              xcall _LcdWrCmd
 01AA                   .dbline -2
 01AA           L34:
 01AA                   .dbline 0 ; func end
 01AA 6991              ld R22,y+
 01AC 4991              ld R20,y+
 01AE 0895              ret
 01B0                   .dbsym r count 20 c
 01B0                   .dbsym r temp 22 c
 01B0                   .dbend
 01B0                   .dbfunc e LcdDisplaySeg _LcdDisplaySeg fV
 01B0           ;           data -> R10
 01B0           ;         offset -> R20
 01B0           ;           page -> R22
                        .even
 01B0           _LcdDisplaySeg::
 01B0 0E940000          xcall push_xgsetF00C
 01B4 422F              mov R20,R18
 01B6 602F              mov R22,R16
 01B8 AE80              ldd R10,y+6
 01BA                   .dbline -1
 01BA                   .dbline 278
 01BA           ; }
 01BA           ; 
 01BA           ; /*****************************************
 01BA           ; *  FUNCTION NAME: LcdDisplaySeg
 01BA           ; *  DESCRIPTION:   DISPLAY 8-BIT SEGMENT
 01BA           ; *  <---------offset 0 to 127----------->
 01BA           ; *                page0
 01BA           ; *                  |
 01BA           ; *                page7
 01BA           ; *  <---------offset 0 to 127----------->
 01BA           ; /*****************************************/
 01BA           ; void LcdDisplaySeg(unsigned char page,unsigned char offset,unsigned char data)
 01BA           ; {
 01BA                   .dbline 280
 01BA           ;     /* Display at Left Part */
 01BA           ;       if(offset < 64)
 01BA 4034              cpi R20,64
 01BC 78F4              brsh L44
 01BE           X14:
 01BE                   .dbline 281
 01BE           ;       {
 01BE                   .dbline 283
 01BE           ;               //LcdWrCmd('L',0X3F);                              /* LCD ON */
 01BE           ;           LcdWrCmd('L',0XC0);                    /* SET ROW */
 01BE 20EC              ldi R18,192
 01C0 0CE4              ldi R16,76
 01C2 29DF              xcall _LcdWrCmd
 01C4                   .dbline 284
 01C4           ;               LcdWrCmd('L',0XB8+page);               /* SET PAGE */
 01C4 262F              mov R18,R22
 01C6 2854              subi R18,72    ; addi 184
 01C8 0CE4              ldi R16,76
 01CA 25DF              xcall _LcdWrCmd
 01CC                   .dbline 285
 01CC           ;               LcdWrCmd('L',0X40+offset);                 /* SET Y */
 01CC 242F              mov R18,R20
 01CE 205C              subi R18,192    ; addi 64
 01D0 0CE4              ldi R16,76
 01D2 21DF              xcall _LcdWrCmd
 01D4                   .dbline 286
 01D4           ;               LcdWrDat('L',data);                                        /* WRITE SEGMENT */
 01D4 2A2D              mov R18,R10
 01D6 0CE4              ldi R16,76
 01D8 46DF              xcall _LcdWrDat
 01DA                   .dbline 287
 01DA           ;       }
 01DA 12C0              xjmp L45
 01DC           L44:
 01DC                   .dbline 289
 01DC           ;     else
 01DC           ;     {
 01DC                   .dbline 290
 01DC           ;           LcdWrCmd('R',0X3F);                            /* LCD ON */
 01DC 2FE3              ldi R18,63
 01DE 02E5              ldi R16,82
 01E0 1ADF              xcall _LcdWrCmd
 01E2                   .dbline 291
 01E2           ;           LcdWrCmd('R',0XC0);                    /* SET ROW */
 01E2 20EC              ldi R18,192
 01E4 02E5              ldi R16,82
 01E6 17DF              xcall _LcdWrCmd
 01E8                   .dbline 292
 01E8           ;               LcdWrCmd('R',0XB8+page);               /* SET PAGE */
 01E8 262F              mov R18,R22
 01EA 2854              subi R18,72    ; addi 184
 01EC 02E5              ldi R16,82
 01EE 13DF              xcall _LcdWrCmd
 01F0                   .dbline 293
 01F0           ;               LcdWrCmd('R',0X40+offset-64);              /* SET Y */
 01F0 242F              mov R18,R20
 01F2 205C              subi R18,192    ; addi 64
 01F4 2054              subi R18,64
 01F6 02E5              ldi R16,82
 01F8 0EDF              xcall _LcdWrCmd
 01FA                   .dbline 294
 01FA           ;               LcdWrDat('R',data);                                        /* WRITE SEGMENT */
 01FA 2A2D              mov R18,R10
 01FC 02E5              ldi R16,82
 01FE 33DF              xcall _LcdWrDat
 0200                   .dbline 295
 0200           ;       }
 0200           L45:
 0200                   .dbline -2
 0200           L43:
 0200                   .dbline 0 ; func end
 0200 0C940000          xjmp pop_xgsetF00C
 0204                   .dbsym r data 10 c
 0204                   .dbsym r offset 20 c
 0204                   .dbsym r page 22 c
 0204                   .dbend
 0204                   .dbfunc e LcdDisplayDot _LcdDisplayDot fV
 0204           ;          temp2 -> R12
 0204           ;          temp1 -> R22
 0204           ;              a -> R10
 0204           ;           data -> R14
 0204           ;              y -> R10
 0204           ;              x -> y+10
                        .even
 0204           _LcdDisplayDot::
 0204 0E940000          xcall push_arg4
 0208 0E940000          xcall push_xgsetF0FC
 020C A22E              mov R10,R18
 020E EE84              ldd R14,y+14
 0210                   .dbline -1
 0210                   .dbline 309
 0210           ; }
 0210           ; 
 0210           ; /************************************************
 0210           ; *  FUNCTION NAME: LcdDisplayDot
 0210           ; *  DESCRIPTION:   DISPLAY 1-BIT DOT
 0210           ; *  不在单片机里面开设缓存,直接修改LCD的RAM后显示
 0210           ; *  <---------offset 0 to 127----------->
 0210           ; *                  0
 0210           ; *                  |
 0210           ; *                  64
 0210           ; *  <---------offset 0 to 127----------->
 0210           ; /*************************************************/
 0210           ; void LcdDisplayDot(unsigned char x,unsigned char y,unsigned char data)
 0210           ; {
 0210                   .dbline 311
 0210           ;     unsigned char temp1,temp2,a;
 0210           ;     if(x>127 | y>63)
 0210 8FE7              ldi R24,127
 0212 0A84              ldd R0,y+10
 0214 8015              cp R24,R0
 0216 18F4              brsh L49
 0218           X15:
 0218 61E0              ldi R22,1
 021A 70E0              ldi R23,0
 021C 02C0              xjmp L50
 021E           L49:
 021E 6627              clr R22
 0220 7727              clr R23
 0222           L50:
 0222 8FE3              ldi R24,63
 0224 8A15              cp R24,R10
 0226 18F4              brsh L51
 0228           X16:
 0228 41E0              ldi R20,1
 022A 50E0              ldi R21,0
 022C 02C0              xjmp L52
 022E           L51:
 022E 4427              clr R20
 0230 5527              clr R21
 0232           L52:
 0232 1B01              movw R2,R22
 0234 242A              or R2,R20
 0236 352A              or R3,R21
 0238 2220              tst R2
 023A 11F4              brne X17
 023C 3320              tst R3
 023E 09F0              breq L47
 0240           X17:
 0240                   .dbline 312
 0240           ;           return;
 0240 6EC0              xjmp L46
 0242           L47:
 0242                   .dbline 313
 0242           ;       temp1 = y / 8;                                                     /* GET VALUE OF WHICH PAGE */
 0242 6A2D              mov R22,R10
 0244 6695              lsr R22
 0246 6695              lsr R22
 0248 6695              lsr R22
 024A                   .dbline 314
 024A           ;     temp2 = y % 8;                             /* GET VALUE OF WHICH Y-OFFSET */
 024A 18E0              ldi R17,8
 024C 0A2D              mov R16,R10
 024E 0E940000          xcall mod8u
 0252 C02E              mov R12,R16
 0254                   .dbline 316
 0254           ;       /* IN ORDER TO NOT MODFIY NOW DISPLY VALUE */ 
 0254           ;       if(x < 64)                                                             /* GET PRE. SEGMENT VALUE */
 0254 8A85              ldd R24,y+10
 0256 8034              cpi R24,64
 0258 00F5              brsh L53
 025A           X18:
 025A                   .dbline 317
 025A           ;       {
 025A                   .dbline 318
 025A           ;           LcdWrCmd('L',0XC0);                    /* SET ROW */
 025A 20EC              ldi R18,192
 025C 0CE4              ldi R16,76
 025E DBDE              xcall _LcdWrCmd
 0260                   .dbline 319
 0260           ;               LcdWrCmd('L',0XB8+temp1);              /* SET PAGE */
 0260 262F              mov R18,R22
 0262 2854              subi R18,72    ; addi 184
 0264 0CE4              ldi R16,76
 0266 D7DE              xcall _LcdWrCmd
 0268                   .dbline 320
 0268           ;               LcdWrCmd('L',0X40+x);                          /* SET X */
 0268 2A85              ldd R18,y+10
 026A 205C              subi R18,192    ; addi 64
 026C 0CE4              ldi R16,76
 026E D3DE              xcall _LcdWrCmd
 0270                   .dbline 321
 0270           ;               a = LcdRdDat('L');                                     /* READ NOW SEGMENT VALUE */
 0270 0CE4              ldi R16,76
 0272 42DF              xcall _LcdRdDat

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -