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

📄 avr320240.s

📁 AVR单片机驱动C320240单色液晶模块的C语言程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	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 + -