📄 avr320240.lis
字号:
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 + -