📄 avr320240.s
字号:
clr R20
xjmp L34
L31:
.dbline 342
.dbline 343
; WriteData( ParaScrTableA[i] );
ldi R24,<_ParaScrTableA
ldi R25,>_ParaScrTableA
mov R30,R20
clr R31
add R30,R24
adc R31,R25
lpm R16,Z
xcall _WriteData
.dbline 344
; }
L32:
.dbline 342
inc R20
L34:
.dbline 342
cpi R20,10
brlo L31
X6:
.dbline 346
;
; WriteCommand( HdotScr );
ldi R16,90
xcall _WriteCommand
.dbline 347
; WriteData( 0 );
clr R16
xcall _WriteData
.dbline 348
; WriteCommand( Ovlay );
ldi R16,91
xcall _WriteCommand
.dbline 349
; WriteData( 4 );
ldi R16,4
xcall _WriteData
.dbline 350
; WriteCommand( DispOn );
ldi R16,89
xcall _WriteCommand
.dbline 351
; WriteData( 0x54 );
ldi R16,84
xcall _WriteData
.dbline -2
L26:
.dbline 0 ; func end
ld R20,y+
ret
.dbsym r i 20 c
.dbend
.dbfunc e LcmClear _LcmClear fV
; i1 -> R20,R21
.even
_LcmClear::
st -y,R20
st -y,R21
.dbline -1
.dbline 366
; }
;
; /******************************************************************************
; ** 函数名: void LcmClear( void )
;
; ** 描述: 清屏
;
; ** 修改的全局变量:
;
; ** 输入参数:
;
; ** 返回值:
; *******************************************************************************/
; void LcmClear( void )
; {
.dbline 367
; Uint i1=32767;
ldi R20,32767
ldi R21,127
.dbline 368
; WriteCommand( CsrDirR );
ldi R16,76
xcall _WriteCommand
.dbline 369
; WriteCommand( CsrW );
ldi R16,70
xcall _WriteCommand
.dbline 370
; WriteData( 0 );
clr R16
xcall _WriteData
.dbline 371
; WriteData( 0 );
clr R16
xcall _WriteData
.dbline 372
; WriteCommand( mWrite );
ldi R16,66
xcall _WriteCommand
xjmp L37
L36:
.dbline 373
; while(i1--) {
.dbline 375
;
; WriteData( 0x0 );
clr R16
xcall _WriteData
.dbline 376
; }
L37:
.dbline 373
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L36
tst R3
brne L36
X7:
.dbline -2
L35:
.dbline 0 ; func end
ld R21,y+
ld R20,y+
ret
.dbsym r i1 20 i
.dbend
.dbfunc e ShowPicture _ShowPicture fV
; C_H -> R14
; C_L -> R22
; y -> R22,R23
; x -> R14,R15
; dot_sum -> R14,R15
; j -> R10
; POS -> R20,R21
; i -> R14
; address -> y+18
; Hight -> y+16
; Width -> R12,R13
; s_y -> y+12
; s_x -> y+10
.even
_ShowPicture::
xcall push_arg4
xcall push_xgsetF0FC
ldd R12,y+14
ldd R13,y+15
.dbline -1
.dbline 396
; }
;
; /******************************************************************************
; ** 函数名: void ShowPicture(Uint s_x,Uint s_y,Uint Width,Uint Hight,
; Uchar code *address)
;
; ** 描述: 显示一幅图片
;
; ** 修改的全局变量:
;
; ** 输入参数: Uint s_x,Uint s_y: 起始坐标
;
; Width:宽度0-320
;
; Hight:高度0-240
;
; ** 返回值:
; *******************************************************************************/
; void ShowPicture(Uint s_x,Uint s_y,Uint Width,Uint Hight,Uchar const *address)
; {
.dbline 400
; Uchar i,j;
; Uint x,y,POS,dot_sum;
; Uchar C_L,C_H;
; Width=Width/8;
lsr R13
ror R12
lsr R13
ror R12
lsr R13
ror R12
.dbline 401
; POS=0;
clr R20
clr R21
.dbline 420
;
; //------------------------------------------------------------
; //这种方式简单
; //for(j=0;j<Hight;j++)
; // {
; // x=s_x;
; // y=s_y+j;
; // for(i=0;i<Width;i++)
; // {
; // x=s_x+i*8;
; // LCD_put8pixel(x,y,address[POS]);
; // POS++;
; // }
; // }
;
; //------------------------------------------------------------
; //这种方式效率高
;
; for(j=0;j<Hight;j++)
clr R10
xjmp L43
L40:
.dbline 421
; {
.dbline 422
; x=s_x;
ldd R14,y+10
ldd R15,y+11
.dbline 423
; y=s_y+j;
mov R2,R10
clr R3
ldd R22,y+12
ldd R23,y+13
add R22,R2
adc R23,R3
.dbline 424
; dot_sum=y*40+(x/8);
ldi R16,40
ldi R17,0
movw R18,R22
xcall empy16s
movw R2,R16
movw R4,R14
lsr R5
ror R4
lsr R5
ror R4
lsr R5
ror R4
add R2,R4
adc R3,R5
movw R14,R2
.dbline 425
; C_L=(Uchar)dot_sum;
mov R22,R2
.dbline 426
; C_H=(Uchar)(dot_sum>>8);
mov R14,R15
clr R15
.dbline 428
;
; WriteCommand( CsrDirR );
ldi R16,76
xcall _WriteCommand
.dbline 429
; WriteCommand( CsrW );
ldi R16,70
xcall _WriteCommand
.dbline 430
; WriteData(C_L);
mov R16,R22
xcall _WriteData
.dbline 431
; WriteData(C_H);
mov R16,R14
xcall _WriteData
.dbline 432
; WriteCommand( mWrite );
ldi R16,66
xcall _WriteCommand
.dbline 434
;
; for(i=0;i<Width;i++)
clr R14
xjmp L47
L44:
.dbline 435
; {
.dbline 436
; WriteData(address[POS]);
movw R30,R20
ldd R0,y+18
ldd R1,y+19
add R30,R0
adc R31,R1
lpm R16,Z
xcall _WriteData
.dbline 437
; POS++;
subi R20,255 ; offset = 1
sbci R21,255
.dbline 438
; }
L45:
.dbline 434
inc R14
L47:
.dbline 434
mov R2,R14
clr R3
cp R2,R12
cpc R3,R13
brlo L44
X8:
.dbline 439
; }
L41:
.dbline 420
inc R10
L43:
.dbline 420
mov R2,R10
clr R3
ldd R0,y+16
ldd R1,y+17
cp R2,R0
cpc R3,R1
brsh X10
xjmp L40
X10:
X9:
.dbline -2
L39:
.dbline 0 ; func end
xcall pop_xgsetF0FC
adiw R28,4
ret
.dbsym r C_H 14 c
.dbsym r C_L 22 c
.dbsym r y 22 i
.dbsym r x 14 i
.dbsym r dot_sum 14 i
.dbsym r j 10 c
.dbsym r POS 20 i
.dbsym r i 14 c
.dbsym l address 18 pkc
.dbsym l Hight 16 i
.dbsym r Width 12 i
.dbsym l s_y 12 i
.dbsym l s_x 10 i
.dbend
.dbfunc e ShowHZ _ShowHZ fV
; address -> y+10
; column -> R12,R13
; lin -> R10,R11
.even
_ShowHZ::
xcall push_xgset003C
movw R12,R18
movw R10,R16
sbiw R28,6
.dbline -1
.dbline 445
;
; }
;
; //-----------------------------------------------------------------------------
; void ShowHZ(Uint lin,Uint column,Uchar const *address)
; {
.dbline 447
;
; ShowPicture(lin,column,16,16,address);
ldd R0,y+10
ldd R1,y+11
std y+5,R1
std y+4,R0
ldi R24,16
ldi R25,0
std y+3,R25
std y+2,R24
std y+1,R25
std y+0,R24
movw R18,R12
movw R16,R10
xcall _ShowPicture
.dbline -2
L48:
.dbline 0 ; func end
adiw R28,6
xjmp pop_xgset003C
.dbsym l address 10 pkc
.dbsym r column 12 i
.dbsym r lin 10 i
.dbend
.dbfunc e Display_Chinese _Display_Chinese fV
; ImgData -> R12,R13
; CodeID -> R12,R13
; i -> R20
; Y -> y+10
; X -> R10,R11
; UniCode -> R14,R15
.even
_Display_Chinese::
xcall push_xgset30FC
movw R10,R18
movw R14,R16
sbiw R28,2
.dbline -1
.dbline 452
;
; }
;
; void Display_Chinese(Uint UniCode,Uint X,Uint Y)
; {
.dbline 457
; Uchar i;
; Uchar const * ImgData;
; Uint CodeID;
;
; for(i=0;i<hzNum;i++)
clr R20
xjmp L53
L50:
.dbline 458
; {
.dbline 459
; if((hzIndex[2*i]==(Uchar)(UniCode>>8))&&(hzIndex[2*i+1]==(Uchar)UniCode) )
mov R2,R20
clr R3
lsl R2
rol R3
movw R6,R2
ldi R24,<_hzIndex
ldi R25,>_hzIndex
movw R30,R2
lsl R30
rol R31
add R30,R24
adc R31,R25
lpm R2,Z+
lpm R3,Z
movw R4,R14
mov R4,R5
clr R5
clr R5
cp R2,R4
cpc R3,R5
brne L54
X11:
movw R30,R6
adiw R30,1
lsl R30
rol R31
add R30,R24
adc R31,R25
lpm R2,Z+
lpm R3,Z
mov R4,R14
clr R5
cp R2,R4
cpc R3,R5
brne L54
X12:
.dbline 460
; {
.dbline 461
; CodeID=i; break;
mov R12,R20
clr R13
.dbline 461
xjmp L52
L54:
.dbline 463
; }
; }
L51:
.dbline 457
inc R20
L53:
.dbline 457
cpi R20,200
brlo L50
X13:
L52:
.dbline 464
; ImgData=&hzdot[CodeID*32];
ldi R16,32
ldi R17,0
movw R18,R12
xcall empy16s
movw R12,R16
ldi R24,<_hzdot
ldi R25,>_hzdot
add R12,R24
adc R13,R25
.dbline 465
; ShowHZ(X,Y,ImgData);
std y+1,R13
std y+0,R12
ldd R18,y+10
ldd R19,y+11
movw R16,R10
xcall _ShowHZ
.dbline -2
L49:
.dbline 0 ; func end
adiw R28,2
xjmp pop_xgset30FC
.dbsym r ImgData 12 pkc
.dbsym r CodeID 12 i
.dbsym r i 20 c
.dbsym l Y 10 i
.dbsym r X 10 i
.dbsym r UniCode 14 i
.dbend
.dbfunc e Display_ASCII _Display_ASCII fV
; ImgData -> R12,R13
; Y -> y+10
; X -> R10
; Chr -> R12
.even
_Display_ASCII::
xcall push_xgset003C
mov R10,R18
mov R12,R16
sbiw R28,6
.dbline -1
.dbline 470
;
; }
; //-------------------------------------------------------------------------------
; void Display_ASCII(Uchar Chr,Uchar X,Uint Y)
; {
.dbline 472
; Uchar const * ImgData;
; {
.dbline 474
; //ImgData=ASC_MSK+12*((Uchar)*Chr-1);
; ImgData=ASC_MSK+(12*(Chr-1));
ldi R24,12
mul R24,R12
movw R12,R0
ldi R24,<_ASC_MSK-12
ldi R25,>_ASC_MSK-12
add R12,R24
adc R13,R25
.dbline 476
;
; ShowPicture(X,Y,8,12,ImgData);
std y+5,R13
std y+4,R12
ldi R24,12
ldi R25,0
std y+3,R25
std y+2,R24
ldi R24,8
std y+1,R25
std y+0,R24
ldd R18,y+10
ldd R19,y+11
mov R16,R10
clr R17
xcall _ShowPicture
.dbline 478
;
; }
.dbline -2
L56:
.dbline 0 ; func end
adiw R28,6
xjmp pop_xgset003C
.dbsym r ImgData 12 pkc
.dbsym l Y 10 i
.dbsym r X 10 c
.dbsym r Chr 12 c
.dbend
.dbfunc e DisTest _DisTest fV
.even
_DisTest::
sbiw R28,2
.dbline -1
.dbline 482
; }
;
; void DisTest(void)
; {
.dbline 483
; Display_ASCII(0x30,0,0); //0
clr R2
clr R3
std y+1,R3
std y+0,R2
clr R18
ldi R16,48
xcall _Display_ASCII
.dbline 484
; Display_ASCII(0x31,8,12); //1
ldi R24,12
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,8
ldi R16,49
xcall _Display_ASCII
.dbline 485
; Display_ASCII(0x32,16,24);//2
ldi R24,24
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,16
ldi R16,50
xcall _Display_ASCII
.dbline 486
; Display_ASCII(0x33,24,36);//3
ldi R24,36
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,24
ldi R16,51
xcall _Display_ASCII
.dbline 487
; Display_ASCII(0x34,32,48);//4
ldi R24,48
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,32
ldi R16,52
xcall _Display_ASCII
.dbline 488
; Display_ASCII(0x35,40,60);//5
ldi R24,60
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,40
ldi R16,53
xcall _Display_ASCII
.dbline -2
L58:
.dbline 0 ; func end
adiw R28,2
ret
.dbend
.dbfunc e Display_String _Display_String fV
; i -> R10
; lenth -> y+12
; Y -> R22,R23
; X -> R20,R21
; p -> R12,R13
.even
_Display_String::
xcall push_xgsetF03C
movw R20,R18
movw R12,R16
sbiw R28,2
ldd R22,y+10
ldd R23,y+11
.dbline -1
.dbline 506
;
; }
; //-------------------------------------------------------------------------------
; /******************************************************************************
; ** 函数名: void Display_String(Uchar code *p,Uint X,
; Uint Y,Uint lenth)
;
; ** 描述: 显示一个字符串
;
; ** 修改的全局变量:
;
; ** 输入参数: Uint X,Uint Y :显示起始地址
;
; lenth :字符串长度
; ** 返回值:
; *******************************************************************************/
; void Display_String(Uchar const *p,Uint X,Uint Y,Uint lenth)
; { Uchar i;
.dbline 509
; // Uchar const * chr;
; // chr=p;
; for(i=0;i<lenth;i++)
clr R10
xjmp L63
L60:
.dbline 510
; {
.dbline 511
; if(X>319){Y=Y+16;X=0;}
ldi R24,319
ldi R25,1
cp R24,R20
cpc R25,R21
brsh L64
X14:
.dbline 511
.dbline 511
subi R22,240 ; offset = 16
sbci R23,255
.dbline 511
clr R20
clr R21
.dbline 511
L64:
.dbline 513
;
; if(p[i]<0x80) {Display_ASCII(p[i],X,Y);X=X+8;/*chr++;*/} //ASCII
mov R30,R10
clr R31
add R30,R12
adc R31,R13
lpm R24,Z
cpi R24,128
brsh L66
X15:
.dbline 513
.dbline 513
std y+1,R23
std y+0,R22
mov R18,R20
mov R30,R10
clr R31
add R30,R12
adc R31,R13
lpm R16,Z
xcall _Display_ASCII
.dbline 513
subi R20,248 ; offset = 8
sbci R21,255
.dbline 513
xjmp L67
L66:
.dbline 515
; else
; {
.dbline 516
; Display_Chinese((p[i])*256+p[i+1],X,Y);//中文
std y+1,R23
std y+0,R22
mov R2,R10
clr R3
add R2,R12
adc R3,R13
movw R4,R2
movw R30,R2
lpm R2,Z
clr R3
ldi R16,256
ldi R17,1
push R20
push R21
movw R18,R2
xcall empy16s
movw R2,R16
pop R19
pop R18
movw R30,R4
adiw R30,1
lpm R4,Z
clr R5
add R2,R4
adc R3,R5
movw R16,R2
xcall _Display_Chinese
.dbline 518
; // chr=chr+2;
; i++;
inc R10
.dbline 519
; X=X+16;
subi R20,240 ; offset = 16
sbci R21,255
.dbline 520
; }
L67:
.dbline 522
;
; }
L61:
.dbline 509
inc R10
L63:
.dbline 509
mov R2,R10
clr R3
ldd R0,y+12
ldd R1,y+13
cp R2,R0
cpc R3,R1
brsh X17
xjmp L60
X17:
X16:
.dbline -2
L59:
.dbline 0 ; func end
adiw R28,2
xjmp pop_xgsetF03C
.dbsym r i 10 c
.dbsym l lenth 12 i
.dbsym r Y 22 i
.dbsym r X 20 i
.dbsym r p 12 pkc
.dbend
.area bss(ram, con, rel)
.dbfile D:\iccv7avr\AVR_C320240\avr320240.c
_hzIndex::
.blkb 2
.dbsym e hzIndex _hzIndex A[2:1]ki
_ASC_MSK::
.blkb 1
.dbsym e ASC_MSK _ASC_MSK A[1:1]kc
_hzdot::
.blkb 1
.dbsym e hzdot _hzdot A[1:1]kc
;
; }
;
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -