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

📄 yj12864.s

📁 AVR单片机开发版资料测试程序里的源程序
💻 S
📖 第 1 页 / 共 3 页
字号:
; 功    能: 移动到指定位置
; 参    数: Row--指定的行
; 	  	  Col--指定的列
; 返回值  : 无
; /********************************************/
; void LCD12864_gotoXY(uchar Row, uchar Col)
; {	
	.dbline 185
; 	switch (Row)		  //选择行
	clr R23
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	breq L35
	cpi R22,3
	ldi R30,0
	cpc R23,R30
	breq L36
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	breq L37
	xjmp L32
X0:
	.dbline 186
; 	{
L35:
	.dbline 188
; 		case 2:
; 			LCD12864_sendbyte(iCmd, LCDb_L2 + Col); break;	//写入第2行的指定列
	mov R18,R20
	subi R18,112    ; addi 144
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 188
	xjmp L33
L36:
	.dbline 190
; 		case 3:
; 			LCD12864_sendbyte(iCmd, LCDb_L3 + Col); break;	//写入第3行的指定列
	mov R18,R20
	subi R18,120    ; addi 136
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 190
	xjmp L33
L37:
	.dbline 192
; 		case 4:
; 			LCD12864_sendbyte(iCmd, LCDb_L4 + Col); break;	//写入第4行的指定列	
	mov R18,R20
	subi R18,104    ; addi 152
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 192
	xjmp L33
L32:
	.dbline 194
	mov R18,R20
	subi R18,128    ; addi 128
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 194
L33:
	.dbline -2
	.dbline 196
; 		default:
; 			LCD12864_sendbyte(iCmd, LCDb_L1 + Col); break;	//写入第1行的指定列	
; 	}
; }
L31:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r Col 20 c
	.dbsym r Row 22 c
	.dbend
	.dbfunc e LCD12864_initial _LCD12864_initial fV
	.even
_LCD12864_initial::
	.dbline -1
	.dbline 204
; /*******************************************
; 函数名称: LCD12864_initial
; 功    能: 12864液晶初始化
; 参    数: 无
; 返回值  : 无
; /********************************************/
; void LCD12864_initial(void)
; {
	.dbline 205
; 	Delayms(100);				// 等待内部复位
	ldi R16,100
	ldi R17,0
	xcall _Delayms
	.dbline 206
; 	LCD12864_portini();			//端口初始化
	xcall _LCD12864_portini
	.dbline 208
; 	
; 	LCD12864_sendbyte(iCmd, LCDb_FUNCTION);	//功能、模式设定
	ldi R18,56
	clr R16
	xcall _LCD12864_sendbyte
L39:
	.dbline 209
L40:
	.dbline 209
; 	while(LCD12864_readBF());
	xcall _LCD12864_readBF
	tst R16
	brne L39
	.dbline 210
; 	LCD12864_sendbyte(iCmd, LCDb_ON);		//打开显示
	ldi R18,12
	clr R16
	xcall _LCD12864_sendbyte
L42:
	.dbline 211
L43:
	.dbline 211
; 	while(LCD12864_readBF());
	xcall _LCD12864_readBF
	tst R16
	brne L42
	.dbline 212
; 	LCD12864_clear();						//清屏
	xcall _LCD12864_clear
L45:
	.dbline 213
L46:
	.dbline 213
; 	while(LCD12864_readBF());
	xcall _LCD12864_readBF
	tst R16
	brne L45
	.dbline 214
; 	LCD12864_sendbyte(iCmd, LCDb_ENTRY);	// 输入模式设定		
	ldi R18,6
	clr R16
	.dbline -2
	.dbline 215
; }
L38:
	.dbline 0 ; func end
	xjmp _LCD12864_sendbyte
	.dbend
	.dbfunc e LCD12864_opGDRAM _LCD12864_opGDRAM fV
;              i -> R20
;              x -> R22,R23
;              j -> R10
;        ptGDRAM -> R12,R13
	.even
_LCD12864_opGDRAM::
	xcall push_gset4
	movw R12,R16
	.dbline -1
	.dbline 223
; /*******************************************
; 函数名称: LCD12864_opGDRAM
; 功    能: 向GDRAM写入数据,并显示(完成绘图功能)
; 参    数: ptGDRAM--GDRAM数据指针
; 返回值  : 无
; /********************************************/
; void LCD12864_opGDRAM(const uchar *ptGDRAM)
; {
	.dbline 225
; 	uchar i,j;
; 	uint x=0;
	clr R22
	clr R23
L49:
	.dbline 226
L50:
	.dbline 226
; 	while(LCD12864_readBF());	  //读忙标志
	xcall _LCD12864_readBF
	tst R16
	brne L49
	.dbline 227
; 	LCD12864_sendbyte(iCmd,LCDb_EXTCMD1);		//扩充指令集,并关闭绘图显示	
	ldi R18,52
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 229
; 	//写入并显示上半屏幕
; 	for(i=0;i<32;i++)            				//行地址计数
	clr R20
	xjmp L55
L52:
	.dbline 230
;      {	  	   	   
	.dbline 231
;            for(j=0;j<8;j++)      				//列地址计数
	clr R10
	xjmp L59
L56:
	.dbline 232
	.dbline 233
	mov R18,R20
	ori R18,128
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 234
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 235
	mov R18,R10
	ori R18,128
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 236
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 237
	movw R2,R22
	subi R22,255  ; offset = 1
	sbci R23,255
	movw R30,R2
	add R30,R12
	adc R31,R13
	lpm R18,Z
	ldi R16,1
	xcall _LCD12864_sendbyte
	.dbline 238
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 239
	movw R2,R22
	subi R22,255  ; offset = 1
	sbci R23,255
	movw R30,R2
	add R30,R12
	adc R31,R13
	lpm R18,Z
	ldi R16,1
	xcall _LCD12864_sendbyte
	.dbline 240
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 241
L57:
	.dbline 231
	inc R10
L59:
	.dbline 231
	mov R24,R10
	cpi R24,8
	brlo L56
	.dbline 242
L53:
	.dbline 229
	inc R20
L55:
	.dbline 229
	cpi R20,32
	brsh X1
	xjmp L52
X1:
	.dbline 244
;            {            		   		 
; 		   		 LCD12864_sendbyte(iCmd,0x80|i);//输入行地址
; 				 Delayus(10);
; 		   		 LCD12864_sendbyte(iCmd,0x80|j);//输入列地址
; 				 Delayus(10);
;                  LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入高位字节数据 
; 				 Delayus(10);                
; 				 LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入低位字节数据
; 				 Delayus(10); 
;            }
;      }
; 	 //写入并显示下半屏幕
; 	 for(i=0;i<32;i++)            
	clr R20
	xjmp L63
L60:
	.dbline 245
;      {	  	   	   
	.dbline 246
;            for(j=8;j<16;j++)      
	ldi R24,8
	mov R10,R24
	xjmp L67
L64:
	.dbline 247
	.dbline 248
	mov R18,R20
	ori R18,128
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 249
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 250
	mov R18,R10
	ori R18,128
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 251
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 252
	movw R2,R22
	subi R22,255  ; offset = 1
	sbci R23,255
	movw R30,R2
	add R30,R12
	adc R31,R13
	lpm R18,Z
	ldi R16,1
	xcall _LCD12864_sendbyte
	.dbline 253
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 254
	movw R2,R22
	subi R22,255  ; offset = 1
	sbci R23,255
	movw R30,R2
	add R30,R12
	adc R31,R13
	lpm R18,Z
	ldi R16,1
	xcall _LCD12864_sendbyte
	.dbline 255
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 256
L65:
	.dbline 246
	inc R10
L67:
	.dbline 246
	mov R24,R10
	cpi R24,16
	brlo L64
	.dbline 257
L61:
	.dbline 244
	inc R20
L63:
	.dbline 244
	cpi R20,32
	brsh X2
	xjmp L60
X2:
	.dbline 258
;            {            
; 		   		 LCD12864_sendbyte(iCmd,0x80|i);//输入行地址
; 				 Delayus(10);
; 		   		 LCD12864_sendbyte(iCmd,0x80|j);//输入列地址
; 				 Delayus(10);
;                  LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入高位字节数据      
; 				 Delayus(10);
; 				 LCD12864_sendbyte(iDat,ptGDRAM[x++]); //输入低位字节数据
; 				 Delayus(10); 
;            }
;      }
; 	 Delayus(10);
	ldi R16,10
	ldi R17,0
	xcall _Delayus
	.dbline 259
; 	 LCD12864_sendbyte(iCmd,LCDb_EXTCMD2);			   //打开绘图显示
	ldi R18,54
	clr R16
	xcall _LCD12864_sendbyte
	.dbline 260
; 	 LCD12864_sendbyte(iCmd,LCDb_BASCMD);			   //还原回基本指令集模式
	ldi R18,48
	clr R16
	xcall _LCD12864_sendbyte
	.dbline -2
	.dbline 261
; }
L48:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r x 22 i
	.dbsym r j 10 c
	.dbsym r ptGDRAM 12 pc
	.dbend
	.dbfunc e main _main fV
;              i -> <dead>
	.even
_main::
	.dbline -1
	.dbline 270
; 
; /*******************************************
; 函数名称: main
; 功    能: 12864液晶驱动主程序
; 参    数: 无
; 返回值  : 无
; /********************************************/
; void main(void)
; {
	.dbline 272
;  uchar i;
;  Board_init( );	   							  //初始化开发板
	xcall _Board_init
	.dbline 273
;  LCD12864_initial(); 						  //初始化12864液晶
	xcall _LCD12864_initial
	xjmp L70
L69:
	.dbline 276
;   
;  while(1)
;  {
	.dbline 277
;   LCD12864_clear();
	xcall _LCD12864_clear
L72:
	.dbline 278
L73:
	.dbline 278
	xcall _LCD12864_readBF
	tst R16
	brne L72
	.dbline 279
	clr R18
	ldi R16,1
	xcall _LCD12864_gotoXY
	.dbline 280
	ldi R16,<L75
	ldi R17,>L75
	xcall _LCD12864_sendstr
	.dbline 281
	ldi R18,2
	ldi R16,2
	xcall _LCD12864_gotoXY
	.dbline 282
	ldi R16,<L76
	ldi R17,>L76
	xcall _LCD12864_sendstr
	.dbline 283
	clr R18
	ldi R16,3
	xcall _LCD12864_gotoXY
	.dbline 284
	ldi R16,<L77
	ldi R17,>L77
	xcall _LCD12864_sendstr
	.dbline 285
	ldi R18,1
	ldi R16,4
	xcall _LCD12864_gotoXY
	.dbline 286
	ldi R16,<L78
	ldi R17,>L78
	xcall _LCD12864_sendstr
	.dbline 287
	ldi R16,2000
	ldi R17,7
	xcall _Delayms
	.dbline 289
	xcall _LCD12864_clear
	.dbline 290
	ldi R16,<_GDRAM
	ldi R17,>_GDRAM
	xcall _LCD12864_opGDRAM
	.dbline 291
	ldi R16,2000
	ldi R17,7
	xcall _Delayms
	.dbline 292
L70:
	.dbline 275
	xjmp L69
X3:
	.dbline -2
	.dbline 293
;   while(LCD12864_readBF());
;   LCD12864_gotoXY(1,0);	   					  //第1行,第1列显示
;   LCD12864_sendstr("AVR_PQ1A  开发板");	  
;   LCD12864_gotoXY(2,2);		  			  	  //第2行,第3列显示
;   LCD12864_sendstr("皮球制作");	
;   LCD12864_gotoXY(3,0);						  //第3行,第1列显示
;   LCD12864_sendstr("电话:13212800564");	
;   LCD12864_gotoXY(4,1);						  //第4行,第2列显示
;   LCD12864_sendstr("www.txmcu.com ");	
;   Delayms(2000);				  			  //延时等待
;   
;   LCD12864_clear();							  //清屏幕
;   LCD12864_opGDRAM(GDRAM);					  //完成绘图,绘图后返回基本指令集模式
;   Delayms(2000);
;  }
; }
L68:
	.dbline 0 ; func end
	ret
	.dbsym l i 1 c
	.dbend
	.area data(ram, con, rel)
	.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\4_12864\YJ12864.C
L78:
	.blkb 15
	.area idata
	.byte 'w,'w,'w,46,'t,'x,'m,'c,'u,46,'c,'o,'m,32,0
	.area data(ram, con, rel)
	.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\4_12864\YJ12864.C
L77:
	.blkb 17
	.area idata
	.byte 181,231,187,176,58,49,51,50,49,50,56,48,48,53,54,52
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\4_12864\YJ12864.C
L76:
	.blkb 9
	.area idata
	.byte 198,164,199,242,214,198,215,247,0
	.area data(ram, con, rel)
	.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\4_12864\YJ12864.C
L75:
	.blkb 17
	.area idata
	.byte 'A,'V,'R,95,'P,'Q,49,'A,32,32,191,170,183,162,176,229
	.byte 0
	.area data(ram, con, rel)
	.dbfile C:\icc\examples.avr\AVR_PQ1A_DEMO\4_12864\YJ12864.C

⌨️ 快捷键说明

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