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

📄 serial_lcd.s

📁 一个有关st7920控制器的测试程序和驱动程序的12864LCD的例程
💻 S
📖 第 1 页 / 共 2 页
字号:
; 	 wr_lcd(0x36,1);
	ldi R18,1
	ldi R16,54
	xcall _wr_lcd
	.dbline 186
; 	 wr_lcd(Lcd_Set_Function_Basic,1); //30H--基本指令操作
	ldi R18,1
	ldi R16,48
	xcall _wr_lcd
	.dbline -2
L35:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 22 c
	.dbsym r bmp 10 pkc
	.dbend
	.dbfunc e Lcd_clrbmp _Lcd_clrbmp fV
;              i -> R20
;              j -> R22
	.even
_Lcd_clrbmp::
	xcall push_gset2
	.dbline -1
	.dbline 202
; }
; 
; 
; 
; /*********************************************************************************************************
; ** 函数名称: void Lcd_clrbmp(void)
; ** 功能描述: 清除bmp图片
; ** 输 入:     
; ** 输 出:        
; ** 全局变量: 无
; ** 调用模块: Lcd_scomm() Lcd_sdata()
; ** 说明:
; ** 注意:
; ********************************************************************************************************/
; void Lcd_clrbmp(void)
; {
	.dbline 205
;  	 unsigned char i,j;
; 	// wr_lcd(Lcd_Clear,1);
; 	 wr_lcd(Lcd_Set_Function_Basic+2,1);
	ldi R18,1
	ldi R16,50
	xcall _wr_lcd
	.dbline 206
; 	 wr_lcd(Lcd_Set_Function_Extend,1);
	ldi R18,1
	ldi R16,52
	xcall _wr_lcd
	.dbline 207
; 	 for(i=0;i<32;i++)
	clr R20
	xjmp L56
L53:
	.dbline 208
; 	 {
	.dbline 209
;         for(j=0;j<16;j++)
	clr R22
	xjmp L60
L57:
	.dbline 210
	.dbline 211
	ldi R18,1
	ldi R16,50
	xcall _wr_lcd
	.dbline 212
	ldi R18,1
	ldi R16,54
	xcall _wr_lcd
	.dbline 214
	ldi R18,1
	mov R16,R20
	subi R16,128    ; addi 128
	xcall _wr_lcd
	.dbline 215
	ldi R18,1
	mov R16,R22
	subi R16,128    ; addi 128
	xcall _wr_lcd
	.dbline 217
	ldi R18,1
	ldi R16,50
	xcall _wr_lcd
	.dbline 218
	clr R18
	clr R16
	xcall _wr_lcd
	.dbline 219
	clr R18
	clr R16
	xcall _wr_lcd
	.dbline 220
L58:
	.dbline 209
	inc R22
L60:
	.dbline 209
	cpi R22,16
	brlo L57
	.dbline 221
L54:
	.dbline 207
	inc R20
L56:
	.dbline 207
	cpi R20,32
	brlo L53
	.dbline 222
; 		{
; 		   wr_lcd(Lcd_Set_Function_Basic+2,1);
; 	       wr_lcd(Lcd_Set_Function_Extend+2,1);
; 		   
; 		   wr_lcd(0x80+i,1);
; 		   wr_lcd(0x80+j,1);
; 		   
; 		   wr_lcd(Lcd_Set_Function_Basic+2,1);
; 		   wr_lcd(0x00,0);
; 		   wr_lcd(0x00,0);
; 		}
; 	 }
; 	 wr_lcd(0x36,1);
	ldi R18,1
	ldi R16,54
	xcall _wr_lcd
	.dbline 223
; 	 wr_lcd(Lcd_Set_Function_Basic,1); //30H--基本指令操作
	ldi R18,1
	ldi R16,48
	xcall _wr_lcd
	.dbline -2
L52:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 22 c
	.dbend
	.dbfunc e Lcd_lineclr _Lcd_lineclr fV
;              i -> R20
;            row -> R20
	.even
_Lcd_lineclr::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 238
; }
; 
; 
; /*********************************************************************************************************
; ** 函数名称: Lcd_lineclr()
; ** 功能描述: 清除一行的显示
; ** 输 入: unsigned char row 要清除显示的行
; ** 输 出: 
; ** 全局变量: 无
; ** 调用模块: 无
; ** 说明:
; ** 注意:
; *******************************************************************************************************/
; void Lcd_lineclr(unsigned char row)
; {
	.dbline 240
;     unsigned char i;
;  	switch(row)
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L65
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L70
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L75
	cpi R20,4
	ldi R30,0
	cpc R21,R30
	breq L80
	xjmp L63
X3:
	.dbline 241
; 	{
L65:
	.dbline 243
; 	  case 1:
; 	  {
	.dbline 244
; 	     wr_lcd(Lcd_Set_Ddram,1);
	ldi R18,1
	ldi R16,128
	xcall _wr_lcd
	.dbline 245
	clr R20
	xjmp L69
L66:
	.dbline 245
	clr R18
	ldi R16,32
	xcall _wr_lcd
L67:
	.dbline 245
	inc R20
L69:
	.dbline 245
; 		 for(i=0;i<16;i++) wr_lcd(' ',0);
	cpi R20,16
	brlo L66
	.dbline 246
; 		 break;
	xjmp L63
L70:
	.dbline 249
; 	  }
; 	  case 2:
; 	  {
	.dbline 250
; 	     wr_lcd(Lcd_Set_Ddram+0x10,1);
	ldi R18,1
	ldi R16,144
	xcall _wr_lcd
	.dbline 251
	clr R20
	xjmp L74
L71:
	.dbline 251
	clr R18
	ldi R16,32
	xcall _wr_lcd
L72:
	.dbline 251
	inc R20
L74:
	.dbline 251
; 		 for(i=0;i<16;i++) wr_lcd(' ',0);
	cpi R20,16
	brlo L71
	.dbline 252
; 		 break;
	xjmp L63
L75:
	.dbline 255
; 	  }
; 	  case 3:
; 	  {
	.dbline 256
; 	     wr_lcd(Lcd_Set_Ddram+0x08,1);
	ldi R18,1
	ldi R16,136
	xcall _wr_lcd
	.dbline 257
	clr R20
	xjmp L79
L76:
	.dbline 257
	clr R18
	ldi R16,32
	xcall _wr_lcd
L77:
	.dbline 257
	inc R20
L79:
	.dbline 257
; 		 for(i=0;i<16;i++) wr_lcd(' ',0);
	cpi R20,16
	brlo L76
	.dbline 258
; 		 break;
	xjmp L63
L80:
	.dbline 261
; 	  }
; 	  case 4:
; 	  {
	.dbline 262
; 	     wr_lcd(Lcd_Set_Ddram+0x18,1);
	ldi R18,1
	ldi R16,152
	xcall _wr_lcd
	.dbline 263
	clr R20
	xjmp L84
L81:
	.dbline 263
	clr R18
	ldi R16,32
	xcall _wr_lcd
L82:
	.dbline 263
	inc R20
L84:
	.dbline 263
	cpi R20,16
	brlo L81
	.dbline 264
	.dbline 267
L63:
	.dbline -2
L61:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r row 20 c
	.dbend
	.dbfunc e Lcd_linedisp _Lcd_linedisp fV
;              i -> R22
;            row -> R22
;              p -> R20,R21
	.even
_Lcd_linedisp::
	xcall push_gset2
	mov R22,R18
	movw R20,R16
	.dbline -1
	.dbline 284
; 		 for(i=0;i<16;i++) wr_lcd(' ',0);
; 		 break;
; 	  }
; 	  
; 	  default: break;
; 	}
; }
; 
; 
; /*********************************************************************************************************
; ** 函数名称: void Lcd_linedisp(unsigned char *p,unsigned char row)
; ** 功能描述: 在一行中显示
; ** 输 入: unsigned char row 要清除显示的行
; ** 输 出: 
; ** 全局变量: 无
; ** 调用模块: 无
; ** 说明:
; ** 注意:
; *******************************************************************************************************/
; 
; void Lcd_linedisp(unsigned char *p,unsigned char row)
; {
	.dbline 286
;    unsigned char i;
;    switch(row)
	clr R23
	cpi R22,1
	ldi R30,0
	cpc R23,R30
	breq L89
	cpi R22,2
	ldi R30,0
	cpc R23,R30
	breq L94
	cpi R22,3
	ldi R30,0
	cpc R23,R30
	breq L99
	cpi R22,4
	ldi R30,0
	cpc R23,R30
	brne X5
	xjmp L104
X5:
	xjmp L86
X4:
	.dbline 287
; 	{
L89:
	.dbline 289
; 	  case 1:
; 	  {
	.dbline 290
; 	   	 Lcd_lineclr(1);
	ldi R16,1
	xcall _Lcd_lineclr
	.dbline 291
; 	     wr_lcd(Lcd_Set_Ddram,1);
	ldi R18,1
	ldi R16,128
	xcall _wr_lcd
	.dbline 292
	clr R22
	xjmp L93
L90:
	.dbline 292
	clr R18
	mov R30,R22
	clr R31
	add R30,R20
	adc R31,R21
	ldd R16,z+0
	xcall _wr_lcd
L91:
	.dbline 292
	inc R22
L93:
	.dbline 292
; 		 for(i=0;i<16;i++) wr_lcd(p[i],0);
	cpi R22,16
	brlo L90
	.dbline 293
; 		 break;
	xjmp L87
L94:
	.dbline 296
; 	  }
; 	  case 2:
; 	  {
	.dbline 297
; 	     Lcd_lineclr(2);
	ldi R16,2
	xcall _Lcd_lineclr
	.dbline 298
; 	     wr_lcd(Lcd_Set_Ddram+0x10,1);
	ldi R18,1
	ldi R16,144
	xcall _wr_lcd
	.dbline 299
	clr R22
	xjmp L98
L95:
	.dbline 299
	clr R18
	mov R30,R22
	clr R31
	add R30,R20
	adc R31,R21
	ldd R16,z+0
	xcall _wr_lcd
L96:
	.dbline 299
	inc R22
L98:
	.dbline 299
; 		 for(i=0;i<16;i++) wr_lcd(p[i],0);
	cpi R22,16
	brlo L95
	.dbline 300
; 		 break;
	xjmp L87
L99:
	.dbline 303
; 	  }
; 	  case 3:
; 	  {
	.dbline 304
; 	     Lcd_lineclr(3);
	ldi R16,3
	xcall _Lcd_lineclr
	.dbline 305
; 	     wr_lcd(Lcd_Set_Ddram+0x08,1);
	ldi R18,1
	ldi R16,136
	xcall _wr_lcd
	.dbline 306
	clr R22
	xjmp L103
L100:
	.dbline 306
	clr R18
	mov R30,R22
	clr R31
	add R30,R20
	adc R31,R21
	ldd R16,z+0
	xcall _wr_lcd
L101:
	.dbline 306
	inc R22
L103:
	.dbline 306
; 		 for(i=0;i<16;i++) wr_lcd(p[i],0);
	cpi R22,16
	brlo L100
	.dbline 307
; 		 break;
	xjmp L87
L104:
	.dbline 310
; 	  }
; 	  case 4:
; 	  {
	.dbline 311
; 	     Lcd_lineclr(4);
	ldi R16,4
	xcall _Lcd_lineclr
	.dbline 312
; 	     wr_lcd(Lcd_Set_Ddram+0x18,1);
	ldi R18,1
	ldi R16,152
	xcall _wr_lcd
	.dbline 313
	clr R22
	xjmp L108
L105:
	.dbline 313
	clr R18
	mov R30,R22
	clr R31
	add R30,R20
	adc R31,R21
	ldd R16,z+0
	xcall _wr_lcd
L106:
	.dbline 313
	inc R22
L108:
	.dbline 313
; 		 for(i=0;i<16;i++) wr_lcd(p[i],0);
	cpi R22,16
	brlo L105
	.dbline 314
; 		 break;
L86:
L87:
	.dbline -2
L85:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 22 c
	.dbsym r row 22 c
	.dbsym r p 20 pc
	.dbend
	.dbfunc e Lcd_backwhite _Lcd_backwhite fV
;           line -> R20
	.even
_Lcd_backwhite::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 331
; 	  }
; 	}
; }
; 
; 
; /*********************************************************************************************************
; ** 函数名称: void Lcd_backwhite(unsigned char line)
; ** 功能描述: 反白显示
; ** 输 入: unsigned char row 要反白显示的行 row=0,1行3行反白显示  row=1,二行四行反白显示
; ** 输 出: 
; ** 全局变量: 无
; ** 调用模块: 无
; ** 说明:
; ** 注意:
; *******************************************************************************************************/
; void Lcd_backwhite(unsigned char line)
; {
	.dbline 332
; 	wr_lcd(Lcd_Set_Function_Extend,1);
	ldi R18,1
	ldi R16,52
	xcall _wr_lcd
	.dbline 333
; 	wr_lcd(Lcd_Back_White+line,1);
	ldi R18,1
	mov R16,R20
	subi R16,252    ; addi 4
	xcall _wr_lcd
	.dbline 334
; 	wr_lcd(Lcd_Set_Function_Basic,1);
	ldi R18,1
	ldi R16,48
	xcall _wr_lcd
	.dbline -2
L109:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r line 20 c
	.dbend

⌨️ 快捷键说明

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