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

📄 avr320240.lis

📁 AVR单片机驱动C320240单色液晶模块的C语言程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0240           ; **  输入参数:                               Uint s_x,Uint s_y:  起始坐标
 0240           ; 
 0240           ;                                   Width:宽度0-320
 0240           ; 
 0240           ;                                                                 Hight:高度0-240
 0240           ; 
 0240           ; **  返回值: 
 0240           ; *******************************************************************************/
 0240           ; void ShowPicture(Uint s_x,Uint s_y,Uint Width,Uint Hight,Uchar const *address)
 0240           ; { 
 0240                   .dbline 400
 0240           ; Uchar i,j;
 0240           ; Uint x,y,POS,dot_sum;
 0240           ; Uchar C_L,C_H;
 0240           ; Width=Width/8;
 0240 D694              lsr R13
 0242 C794              ror R12
 0244 D694              lsr R13
 0246 C794              ror R12
 0248 D694              lsr R13
 024A C794              ror R12
 024C                   .dbline 401
 024C           ; POS=0;
 024C 4427              clr R20
 024E 5527              clr R21
 0250                   .dbline 420
 0250           ; 
 0250           ; //------------------------------------------------------------
 0250           ; //这种方式简单
 0250           ; //for(j=0;j<Hight;j++)
 0250           ; //  {
 0250           ; //      x=s_x;
 0250           ; //      y=s_y+j;
 0250           ; //   for(i=0;i<Width;i++)
 0250           ; //     {
 0250           ; //      x=s_x+i*8;
 0250           ; //      LCD_put8pixel(x,y,address[POS]);
 0250           ; //      POS++;
 0250           ; //     }
 0250           ; //  }
 0250           ;  
 0250           ; //------------------------------------------------------------
 0250           ; //这种方式效率高
 0250           ; 
 0250           ; for(j=0;j<Hight;j++)
 0250 AA24              clr R10
 0252 37C0              xjmp L43
 0254           L40:
 0254                   .dbline 421
 0254           ;   {
 0254                   .dbline 422
 0254           ;       x=s_x;
 0254 EA84              ldd R14,y+10
 0256 FB84              ldd R15,y+11
 0258                   .dbline 423
 0258           ;       y=s_y+j;
 0258 2A2C              mov R2,R10
 025A 3324              clr R3
 025C 6C85              ldd R22,y+12
 025E 7D85              ldd R23,y+13
 0260 620D              add R22,R2
 0262 731D              adc R23,R3
 0264                   .dbline 424
 0264           ;       dot_sum=y*40+(x/8);
 0264 08E2              ldi R16,40
 0266 10E0              ldi R17,0
 0268 9B01              movw R18,R22
 026A 0E940000          xcall empy16s
 026E 1801              movw R2,R16
 0270 2701              movw R4,R14
 0272 5694              lsr R5
 0274 4794              ror R4
 0276 5694              lsr R5
 0278 4794              ror R4
 027A 5694              lsr R5
 027C 4794              ror R4
 027E 240C              add R2,R4
 0280 351C              adc R3,R5
 0282 7101              movw R14,R2
 0284                   .dbline 425
 0284           ;       C_L=(Uchar)dot_sum;
 0284 622D              mov R22,R2
 0286                   .dbline 426
 0286           ;       C_H=(Uchar)(dot_sum>>8);
 0286 EF2C              mov R14,R15
 0288 FF24              clr R15
 028A                   .dbline 428
 028A           ; 
 028A           ;       WriteCommand( CsrDirR );
 028A 0CE4              ldi R16,76
 028C 75DF              xcall _WriteCommand
 028E                   .dbline 429
 028E           ;       WriteCommand( CsrW ); 
 028E 06E4              ldi R16,70
 0290 73DF              xcall _WriteCommand
 0292                   .dbline 430
 0292           ;       WriteData(C_L); 
 0292 062F              mov R16,R22
 0294 7CDF              xcall _WriteData
 0296                   .dbline 431
 0296           ;       WriteData(C_H);
 0296 0E2D              mov R16,R14
 0298 7ADF              xcall _WriteData
 029A                   .dbline 432
 029A           ;       WriteCommand( mWrite ); 
 029A 02E4              ldi R16,66
 029C 6DDF              xcall _WriteCommand
 029E                   .dbline 434
 029E           ;       
 029E           ;    for(i=0;i<Width;i++)
 029E EE24              clr R14
 02A0 0AC0              xjmp L47
 02A2           L44:
 02A2                   .dbline 435
 02A2           ;      {
 02A2                   .dbline 436
 02A2           ;        WriteData(address[POS]);
 02A2 FA01              movw R30,R20
 02A4 0A88              ldd R0,y+18
 02A6 1B88              ldd R1,y+19
 02A8 E00D              add R30,R0
 02AA F11D              adc R31,R1
 02AC 0491              lpm R16,Z
 02AE 6FDF              xcall _WriteData
 02B0                   .dbline 437
 02B0           ;        POS++;       
 02B0 4F5F              subi R20,255  ; offset = 1
 02B2 5F4F              sbci R21,255
 02B4                   .dbline 438
 02B4           ;      }
 02B4           L45:
 02B4                   .dbline 434
 02B4 E394              inc R14
 02B6           L47:
 02B6                   .dbline 434
 02B6 2E2C              mov R2,R14
 02B8 3324              clr R3
 02BA 2C14              cp R2,R12
 02BC 3D04              cpc R3,R13
 02BE 88F3              brlo L44
 02C0           X8:
 02C0                   .dbline 439
 02C0           ;   }
 02C0           L41:
 02C0                   .dbline 420
 02C0 A394              inc R10
 02C2           L43:
 02C2                   .dbline 420
 02C2 2A2C              mov R2,R10
 02C4 3324              clr R3
 02C6 0888              ldd R0,y+16
 02C8 1988              ldd R1,y+17
 02CA 2014              cp R2,R0
 02CC 3104              cpc R3,R1
 02CE 08F4              brsh X10
 02D0 C1CF              xjmp L40
 02D2           X10:
 02D2           X9:
 02D2                   .dbline -2
 02D2           L39:
 02D2                   .dbline 0 ; func end
 02D2 0E940000          xcall pop_xgsetF0FC
 02D6 2496              adiw R28,4
 02D8 0895              ret
 02DA                   .dbsym r C_H 14 c
 02DA                   .dbsym r C_L 22 c
 02DA                   .dbsym r y 22 i
 02DA                   .dbsym r x 14 i
 02DA                   .dbsym r dot_sum 14 i
 02DA                   .dbsym r j 10 c
 02DA                   .dbsym r POS 20 i
 02DA                   .dbsym r i 14 c
 02DA                   .dbsym l address 18 pkc
 02DA                   .dbsym l Hight 16 i
 02DA                   .dbsym r Width 12 i
 02DA                   .dbsym l s_y 12 i
 02DA                   .dbsym l s_x 10 i
 02DA                   .dbend
 02DA                   .dbfunc e ShowHZ _ShowHZ fV
 02DA           ;        address -> y+10
 02DA           ;         column -> R12,R13
 02DA           ;            lin -> R10,R11
                        .even
 02DA           _ShowHZ::
 02DA 0E940000          xcall push_xgset003C
 02DE 6901              movw R12,R18
 02E0 5801              movw R10,R16
 02E2 2697              sbiw R28,6
 02E4                   .dbline -1
 02E4                   .dbline 445
 02E4           ; 
 02E4           ; }
 02E4           ; 
 02E4           ; //-----------------------------------------------------------------------------
 02E4           ; void ShowHZ(Uint lin,Uint column,Uchar const *address)
 02E4           ; {
 02E4                   .dbline 447
 02E4           ; 
 02E4           ; ShowPicture(lin,column,16,16,address);
 02E4 0A84              ldd R0,y+10
 02E6 1B84              ldd R1,y+11
 02E8 1D82              std y+5,R1
 02EA 0C82              std y+4,R0
 02EC 80E1              ldi R24,16
 02EE 90E0              ldi R25,0
 02F0 9B83              std y+3,R25
 02F2 8A83              std y+2,R24
 02F4 9983              std y+1,R25
 02F6 8883              std y+0,R24
 02F8 9601              movw R18,R12
 02FA 8501              movw R16,R10
 02FC 9BDF              xcall _ShowPicture
 02FE                   .dbline -2
 02FE           L48:
 02FE                   .dbline 0 ; func end
 02FE 2696              adiw R28,6
 0300 0C940000          xjmp pop_xgset003C
 0304                   .dbsym l address 10 pkc
 0304                   .dbsym r column 12 i
 0304                   .dbsym r lin 10 i
 0304                   .dbend
 0304                   .dbfunc e Display_Chinese _Display_Chinese fV
 0304           ;        ImgData -> R12,R13
 0304           ;         CodeID -> R12,R13
 0304           ;              i -> R20
 0304           ;              Y -> y+10
 0304           ;              X -> R10,R11
 0304           ;        UniCode -> R14,R15
                        .even
 0304           _Display_Chinese::
 0304 0E940000          xcall push_xgset30FC
 0308 5901              movw R10,R18
 030A 7801              movw R14,R16
 030C 2297              sbiw R28,2
 030E                   .dbline -1
 030E                   .dbline 452
 030E           ; 
 030E           ; }
 030E           ; 
 030E           ; void Display_Chinese(Uint UniCode,Uint X,Uint Y)
 030E           ; {  
 030E                   .dbline 457
 030E           ;    Uchar i;
 030E           ;    Uchar const * ImgData;
 030E           ;    Uint CodeID;
 030E           ; 
 030E           ;    for(i=0;i<hzNum;i++)
 030E 4427              clr R20
 0310 26C0              xjmp L53
 0312           L50:
 0312                   .dbline 458
 0312           ;      {
 0312                   .dbline 459
 0312           ;         if((hzIndex[2*i]==(Uchar)(UniCode>>8))&&(hzIndex[2*i+1]==(Uchar)UniCode) )
 0312 242E              mov R2,R20
 0314 3324              clr R3
 0316 220C              lsl R2
 0318 331C              rol R3
 031A 3101              movw R6,R2
 031C 80E0              ldi R24,<_hzIndex
 031E 90E0              ldi R25,>_hzIndex
 0320 F101              movw R30,R2
 0322 EE0F              lsl R30
 0324 FF1F              rol R31
 0326 E80F              add R30,R24
 0328 F91F              adc R31,R25
 032A 2590              lpm R2,Z+
 032C 3490              lpm R3,Z
 032E 2701              movw R4,R14
 0330 452C              mov R4,R5
 0332 5524              clr R5
 0334 5524              clr R5
 0336 2414              cp R2,R4
 0338 3504              cpc R3,R5
 033A 81F4              brne L54
 033C           X11:
 033C F301              movw R30,R6
 033E 3196              adiw R30,1
 0340 EE0F              lsl R30
 0342 FF1F              rol R31
 0344 E80F              add R30,R24
 0346 F91F              adc R31,R25
 0348 2590              lpm R2,Z+
 034A 3490              lpm R3,Z
 034C 4E2C              mov R4,R14
 034E 5524              clr R5
 0350 2414              cp R2,R4
 0352 3504              cpc R3,R5
 0354 19F4              brne L54
 0356           X12:
 0356                   .dbline 460
 0356           ;            {                
 0356                   .dbline 461
 0356           ;                 CodeID=i;    break;
 0356 C42E              mov R12,R20
 0358 DD24              clr R13
 035A                   .dbline 461
 035A 03C0              xjmp L52
 035C           L54:
 035C                   .dbline 463
 035C           ;            }
 035C           ;      }
 035C           L51:
 035C                   .dbline 457
 035C 4395              inc R20
 035E           L53:
 035E                   .dbline 457
 035E 483C              cpi R20,200
 0360 C0F2              brlo L50
 0362           X13:
 0362           L52:
 0362                   .dbline 464
 0362           ;       ImgData=&hzdot[CodeID*32];
 0362 00E2              ldi R16,32
 0364 10E0              ldi R17,0
 0366 9601              movw R18,R12
 0368 0E940000          xcall empy16s
 036C 6801              movw R12,R16
 036E 80E0              ldi R24,<_hzdot
 0370 90E0              ldi R25,>_hzdot
 0372 C80E              add R12,R24
 0374 D91E              adc R13,R25
 0376                   .dbline 465
 0376           ;       ShowHZ(X,Y,ImgData);
 0376 D982              std y+1,R13
 0378 C882              std y+0,R12

⌨️ 快捷键说明

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