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

📄 lcd1286418.lis

📁 3D LCD for running graphical lCDs
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0274                   .dbline 322
 0274           ;               a = LcdRdDat('L');      
 0274 0CE4              ldi R16,76
 0276 40DF              xcall _LcdRdDat
 0278 A02E              mov R10,R16
 027A                   .dbline 323
 027A           ;               if(data == 0)                                              /* DOT ON/OFF */
 027A EE20              tst R14
 027C 41F4              brne L55
 027E           X19:
 027E                   .dbline 324
 027E           ;                   a&=~(1<<temp2);
 027E 01E0              ldi R16,1
 0280 1C2D              mov R17,R12
 0282 0E940000          xcall lsl8
 0286 202E              mov R2,R16
 0288 2094              com R2
 028A A220              and R10,R2
 028C 27C0              xjmp L54
 028E           L55:
 028E                   .dbline 326
 028E           ;               else
 028E           ;                   a|=(1<<temp2);
 028E 01E0              ldi R16,1
 0290 1C2D              mov R17,R12
 0292 0E940000          xcall lsl8
 0296 A02A              or R10,R16
 0298                   .dbline 327
 0298           ;       }
 0298 21C0              xjmp L54
 029A           L53:
 029A                   .dbline 329
 029A           ;     else
 029A           ;     {
 029A                   .dbline 330
 029A           ;           LcdWrCmd('R',0XC0);                    /* SET ROW */
 029A 20EC              ldi R18,192
 029C 02E5              ldi R16,82
 029E BBDE              xcall _LcdWrCmd
 02A0                   .dbline 331
 02A0           ;               LcdWrCmd('R',0XB8+temp1);              /* SET PAGE */
 02A0 262F              mov R18,R22
 02A2 2854              subi R18,72    ; addi 184
 02A4 02E5              ldi R16,82
 02A6 B7DE              xcall _LcdWrCmd
 02A8                   .dbline 332
 02A8           ;               LcdWrCmd('R',0X40+x-64);               /* SET X*/
 02A8 2A85              ldd R18,y+10
 02AA 205C              subi R18,192    ; addi 64
 02AC 2054              subi R18,64
 02AE 02E5              ldi R16,82
 02B0 B2DE              xcall _LcdWrCmd
 02B2                   .dbline 333
 02B2           ;               a = LcdRdDat('R');                                     /* READ NOW SEGMENT VALUE */
 02B2 02E5              ldi R16,82
 02B4 21DF              xcall _LcdRdDat
 02B6                   .dbline 334
 02B6           ;               a = LcdRdDat('R');      
 02B6 02E5              ldi R16,82
 02B8 1FDF              xcall _LcdRdDat
 02BA 402F              mov R20,R16
 02BC A42E              mov R10,R20
 02BE                   .dbline 335
 02BE           ;               if(data == 0)                                              /* DOT ON/OFF */
 02BE EE20              tst R14
 02C0 41F4              brne L57
 02C2           X20:
 02C2                   .dbline 336
 02C2           ;                   a&=~(1<<temp2);
 02C2 01E0              ldi R16,1
 02C4 1C2D              mov R17,R12
 02C6 0E940000          xcall lsl8
 02CA 202E              mov R2,R16
 02CC 2094              com R2
 02CE A220              and R10,R2
 02D0 05C0              xjmp L58
 02D2           L57:
 02D2                   .dbline 338
 02D2           ;               else
 02D2           ;                   a|=(1<<temp2);
 02D2 01E0              ldi R16,1
 02D4 1C2D              mov R17,R12
 02D6 0E940000          xcall lsl8
 02DA A02A              or R10,R16
 02DC           L58:
 02DC                   .dbline 339
 02DC           ;       }
 02DC           L54:
 02DC                   .dbline 341
 02DC           ;       
 02DC           ;       if(x < 64)                                                             /* WRITE VALUE AS SEGMENT */
 02DC 8A85              ldd R24,y+10
 02DE 8034              cpi R24,64
 02E0 78F4              brsh L59
 02E2           X21:
 02E2                   .dbline 342
 02E2           ;       {
 02E2                   .dbline 344
 02E2           ;               //LcdWrCmd('L',0X3F);                              /* LCD ON */
 02E2           ;           LcdWrCmd('L',0XC0);                    /* SET ROW */
 02E2 20EC              ldi R18,192
 02E4 0CE4              ldi R16,76
 02E6 97DE              xcall _LcdWrCmd
 02E8                   .dbline 345
 02E8           ;               LcdWrCmd('L',0XB8+temp1);              /* SET PAGE */
 02E8 262F              mov R18,R22
 02EA 2854              subi R18,72    ; addi 184
 02EC 0CE4              ldi R16,76
 02EE 93DE              xcall _LcdWrCmd
 02F0                   .dbline 346
 02F0           ;               LcdWrCmd('L',0X40+x);                          /* SET X */
 02F0 2A85              ldd R18,y+10
 02F2 205C              subi R18,192    ; addi 64
 02F4 0CE4              ldi R16,76
 02F6 8FDE              xcall _LcdWrCmd
 02F8                   .dbline 347
 02F8           ;               LcdWrDat('L',a);                                           /* WRITE SEGMENT */
 02F8 2A2D              mov R18,R10
 02FA 0CE4              ldi R16,76
 02FC B4DE              xcall _LcdWrDat
 02FE                   .dbline 348
 02FE           ;       }
 02FE 0FC0              xjmp L60
 0300           L59:
 0300                   .dbline 350
 0300           ;     else
 0300           ;     {
 0300                   .dbline 352
 0300           ;           //LcdWrCmd('R',0X3F);                          /* LCD ON */
 0300           ;           LcdWrCmd('R',0XC0);                    /* SET ROW */
 0300 20EC              ldi R18,192
 0302 02E5              ldi R16,82
 0304 88DE              xcall _LcdWrCmd
 0306                   .dbline 353
 0306           ;               LcdWrCmd('R',0XB8+temp1);              /* SET PAGE */
 0306 262F              mov R18,R22
 0308 2854              subi R18,72    ; addi 184
 030A 02E5              ldi R16,82
 030C 84DE              xcall _LcdWrCmd
 030E                   .dbline 354
 030E           ;               LcdWrCmd('R',0X40+x-64);               /* SET X*/
 030E 2A85              ldd R18,y+10
 0310 205C              subi R18,192    ; addi 64
 0312 2054              subi R18,64
 0314 02E5              ldi R16,82
 0316 7FDE              xcall _LcdWrCmd
 0318                   .dbline 355
 0318           ;               LcdWrDat('R',a);                                       /* WRITE SEGMENT */
 0318 2A2D              mov R18,R10
 031A 02E5              ldi R16,82
 031C A4DE              xcall _LcdWrDat
 031E                   .dbline 356
 031E           ;       }
 031E           L60:
 031E                   .dbline -2
 031E           L46:
 031E                   .dbline 0 ; func end
 031E 0E940000          xcall pop_xgsetF0FC
 0322 2496              adiw R28,4
 0324 0895              ret
 0326                   .dbsym r temp2 12 c
 0326                   .dbsym r temp1 22 c
 0326                   .dbsym r a 10 c
 0326                   .dbsym r data 14 c
 0326                   .dbsym r y 10 c
 0326                   .dbsym l x 10 c
 0326                   .dbend
 0326                   .dbfunc e LcdDsiplayRefresh _LcdDsiplayRefresh fV
 0326           ;          temp1 -> R20
 0326           ;          temp2 -> R22
                        .even
 0326           _LcdDsiplayRefresh::
 0326 4A93              st -y,R20
 0328 6A93              st -y,R22
 032A 2197              sbiw R28,1
 032C                   .dbline -1
 032C                   .dbline 365
 032C           ; }
 032C           ; 
 032C           ; /*******************************************************
 032C           ; *  FUNCTION NAME: LcdDsiplayRefresh                              *
 032C           ; *  DESCRIPTION: 显示内容写入单片机RAM中,再LCD上显示    *
 032C           ; *               为了提高3D图形显示速度。
 032C           ; /******************************************************/
 032C           ; void LcdDsiplayRefresh(void)
 032C           ; {
 032C                   .dbline 367
 032C           ;     unsigned char temp1,temp2;
 032C           ;       for(temp1=0; temp1<8; temp1++)
 032C 4427              clr R20
 032E 16C0              xjmp L65
 0330           L62:
 0330                   .dbline 368
 0330           ;       {
 0330                   .dbline 369
 0330           ;           for(temp2=0; temp2<128; temp2++)
 0330 6627              clr R22
 0332 11C0              xjmp L69
 0334           L66:
 0334                   .dbline 370
 0334           ;               {
 0334                   .dbline 371
 0334           ;                   LcdDisplaySeg(temp1,temp2,displaybuffer[temp1][temp2]);     
 0334 80E8              ldi R24,128
 0336 849F              mul R24,R20
 0338 1001              movw R2,R0
 033A 80E0              ldi R24,<_displaybuffer
 033C 90E0              ldi R25,>_displaybuffer
 033E 280E              add R2,R24
 0340 391E              adc R3,R25
 0342 E62F              mov R30,R22
 0344 FF27              clr R31
 0346 E20D              add R30,R2
 0348 F31D              adc R31,R3
 034A 2080              ldd R2,z+0
 034C 2882              std y+0,R2
 034E 262F              mov R18,R22
 0350 042F              mov R16,R20
 0352 2EDF              xcall _LcdDisplaySeg
 0354                   .dbline 372
 0354           ;               }
 0354           L67:
 0354                   .dbline 369
 0354 6395              inc R22
 0356           L69:
 0356                   .dbline 369
 0356 6038              cpi R22,128
 0358 68F3              brlo L66
 035A           X22:
 035A                   .dbline 373
 035A           ;       }
 035A           L63:
 035A                   .dbline 367
 035A 4395              inc R20
 035C           L65:
 035C                   .dbline 367
 035C 4830              cpi R20,8
 035E 40F3              brlo L62
 0360           X23:
 0360                   .dbline -2
 0360           L61:
 0360                   .dbline 0 ; func end
 0360 2196              adiw R28,1
 0362 6991              ld R22,y+
 0364 4991              ld R20,y+
 0366 0895              ret
 0368                   .dbsym r temp1 20 c
 0368                   .dbsym r temp2 22 c
 0368                   .dbend
 0368                   .dbfunc e Delay1ms _Delay1ms fV
 0368           ;              i -> R16
 0368           ;           temp -> R18,R19
                        .even
 0368           _Delay1ms::
 0368                   .dbline -1
 0368                   .dbline 381
 0368           ; }
 0368           ; 
 0368           ; /****************************************
 0368           ; *  FUNCTION NAME: Delay1ms                            *
 0368           ; *  DESCRIPTION: MCU CLOCK=11.0592Mhz    *
 0368           ; /***************************************/
 0368           ; void Delay1ms(void)
 0368           ; {
 0368                   .dbline 384
 0368           ;     unsigned int temp;   
 0368           ;       unsigned char i;
 0368           ;       for(i=0;i<10;i++)
 0368 0027              clr R16
 036A 0AC0              xjmp L74
 036C           L71:
 036C                   .dbline 385
 036C           ;       {     
 036C                   .dbline 386
 036C           ;        for(temp=20; temp>0;temp--)              /* Delay About 1ms */
 036C 24E1              ldi R18,20
 036E 30E0              ldi R19,0
 0370 03C0              xjmp L78
 0372           L75:
 0372                   .dbline 387
 0372           ;        {
 0372                   .dbline 388
 0372           ;          NOP;                                 
 0372 0000              nop
 0374                   .dbline 389
 0374           ;          }
 0374           L76:
 0374                   .dbline 386
 0374 2150              subi R18,1
 0376 3040              sbci R19,0
 0378           L78:
 0378                   .dbline 386
 0378 2030              cpi R18,0
 037A 2307              cpc R18,R19
 037C D1F7              brne L75
 037E           X24:
 037E                   .dbline 390
 037E           ;       }
 037E           L72:
 037E                   .dbline 384
 037E 0395              inc R16
 0380           L74:
 0380                   .dbline 384
 0380 0A30              cpi R16,10
 0382 A0F3              brlo L71
 0384           X25:
 0384                   .dbline -2
 0384           L70:
 0384                   .dbline 0 ; func end
 0384 0895              ret
 0386                   .dbsym r i 16 c
 0386                   .dbsym r temp 18 i
 0386                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\CODE\LCD1286418\lcd1286418.c
 0000           _displaybuffer::
 0000                   .blkb 1024
 0400                   .dbsym e displaybuffer _displaybuffer A[1024:8:128]c
 0400           ; }

⌨️ 快捷键说明

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