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

📄 lcd.s

📁 基于AVR单片机的热电偶测量系统源码
💻 S
📖 第 1 页 / 共 3 页
字号:
	xcall push_gset4
	mov R10,R18
	mov R12,R16
	.dbline -1
	.dbline 145
; }
; 
; 
; 
; void Clear_DDRAM(unsigned char c_page_start,unsigned char c_page_end)
; { 
	.dbline 148
; 	unsigned char i,j;
; 	unsigned char start_page;   //用于存放清除的起始页数
; 	unsigned char c_column_msb=0x10,c_column_lsb=0x04;  //清除的起始列为第4列
	ldi R20,16
	.dbline 148
	ldi R20,4
	.dbline 150
; 	
; 	start_page = Gen_Page(c_page_start);    //取得清除的起始页地址
	mov R16,R12
	xcall _Gen_Page
	mov R22,R16
	.dbline 151
; 	for(j=c_page_start;j<=c_page_end;j++)
	mov R20,R12
	xjmp L11
L8:
	.dbline 152
; 	{
	.dbline 153
;     	Send_Command(0x10);	//从第4列开始清除LCD显示的数据
	ldi R16,16
	xcall _Send_Command
	.dbline 154
;         Send_Command(0x04);
	ldi R16,4
	xcall _Send_Command
	.dbline 155
;         Send_Command(start_page);	//清除位置在第start_page页
	mov R16,R22
	xcall _Send_Command
	.dbline 156
;         for(i=0;i<=127;i++)
	clr R12
	xjmp L15
L12:
	.dbline 157
	.dbline 158
	clr R16
	xcall _Send_Byte
	.dbline 159
L13:
	.dbline 156
	inc R12
L15:
	.dbline 156
	ldi R24,127
	cp R24,R12
	brsh L12
	.dbline 160
	inc R22
	.dbline 161
L9:
	.dbline 151
	inc R20
L11:
	.dbline 151
	cp R10,R20
	brsh L8
	.dbline -2
L7:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r c_column_lsb 20 c
	.dbsym r c_column_msb 20 c
	.dbsym r start_page 22 c
	.dbsym r j 20 c
	.dbsym r i 12 c
	.dbsym r c_page_end 10 c
	.dbsym r c_page_start 12 c
	.dbend
	.dbfunc e Bmp8x8 _Bmp8x8 fV
;              i -> R20
;          pdata -> R22,R23
;         column -> R20
;           page -> R10
	.even
_Bmp8x8::
	xcall push_gset3
	mov R20,R18
	mov R10,R16
	ldd R22,y+6
	ldd R23,y+7
	.dbline -1
	.dbline 169
;         {
;         	Send_Byte(WHITE);	//清除页内所有列显示的数据
;         }
;         start_page++;   //清除下一页数据
;     }
; }
; 
; //////////////////////////////////////////////////////////////////////////
; //绘制一个8*8大小的位图
; //////////////////////////////////////////////////////////////////////////
; void Bmp8x8(unsigned char page,unsigned char column,const unsigned char 
; *pdata)
; {
	.dbline 172
; 	  unsigned char i;
; 	  
; 	  Send_Command(Gen_Page(page));	//送页地址
	mov R16,R10
	xcall _Gen_Page
	xcall _Send_Command
	.dbline 173
; 	  Send_Command(Gen_Column_LSB(column));	//送低4位地址
	mov R16,R20
	xcall _Gen_Column_LSB
	xcall _Send_Command
	.dbline 174
; 	  Send_Command(Gen_Column_MSB(column));	//送高4位地址
	mov R16,R20
	xcall _Gen_Column_MSB
	xcall _Send_Command
	.dbline 175
; 	  for(i=0;i<=7;i++)	//水平宽度为8列
	clr R20
	xjmp L20
L17:
	.dbline 176
	.dbline 177
	movw R30,R22
	lpm R16,Z
	xcall _Send_Byte
	.dbline 178
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 179
L18:
	.dbline 175
	inc R20
L20:
	.dbline 175
	ldi R24,7
	cp R24,R20
	brsh L17
	.dbline -2
L16:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r pdata 22 pkc
	.dbsym r column 20 c
	.dbsym r page 10 c
	.dbend
	.dbfunc e Bmp8x16 _Bmp8x16 fV
;              j -> R20
;              i -> R14
;          pdata -> R10,R11
;         column -> R12
;           page -> R22
	.even
_Bmp8x16::
	xcall push_gset5
	mov R12,R18
	mov R22,R16
	ldd R10,y+10
	ldd R11,y+11
	.dbline -1
	.dbline 186
; 	  {
; 	  	  Send_Byte(*pdata);
; 	  	  pdata++;
; 	  }
; }
; //////////////////////////////////////////////////////////////////////////
; //绘制一个8*16大小的位图
; //////////////////////////////////////////////////////////////////////////
; void Bmp8x16(unsigned char page,unsigned char column,const unsigned char 
; *pdata)
; {
	.dbline 190
; 	   unsigned char i;
; 	   unsigned char j;
; 	   
; 	   for(j=0;j<=1;j++)
	clr R20
	xjmp L25
L22:
	.dbline 191
; 	   {
	.dbline 192
; 	   	   Send_Command(Gen_Page(page));
	mov R16,R22
	xcall _Gen_Page
	xcall _Send_Command
	.dbline 193
; 	       Send_Command(Gen_Column_LSB(column));
	mov R16,R12
	xcall _Gen_Column_LSB
	xcall _Send_Command
	.dbline 194
; 	       Send_Command(Gen_Column_MSB(column));  
	mov R16,R12
	xcall _Gen_Column_MSB
	xcall _Send_Command
	.dbline 195
;      	   for(i=0;i<=7;i++)
	clr R14
	xjmp L29
L26:
	.dbline 196
	.dbline 197
	movw R30,R10
	lpm R16,Z
	xcall _Send_Byte
	.dbline 198
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 199
L27:
	.dbline 195
	inc R14
L29:
	.dbline 195
	ldi R24,7
	cp R24,R14
	brsh L26
	.dbline 200
	inc R22
	.dbline 201
L23:
	.dbline 190
	inc R20
L25:
	.dbline 190
	ldi R24,1
	cp R24,R20
	brsh L22
	.dbline -2
L21:
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 14 c
	.dbsym r pdata 10 pkc
	.dbsym r column 12 c
	.dbsym r page 22 c
	.dbend
	.dbfunc e Bmp8x16_rev _Bmp8x16_rev fV
;              j -> R20
;              i -> R14
;          pdata -> R10,R11
;         column -> R12
;           page -> R22
	.even
_Bmp8x16_rev::
	xcall push_gset5
	mov R12,R18
	mov R22,R16
	ldd R10,y+10
	ldd R11,y+11
	.dbline -1
	.dbline 209
; 	       {
; 	   	       Send_Byte(*pdata);
; 	   	       pdata++;
; 	       }
; 	       page++;
; 	   }
; }
; 
; //////////////////////////////////////////////////////////////////////////
; //绘制一个反白显示8*16大小的位图
; //////////////////////////////////////////////////////////////////////////
; void Bmp8x16_rev(unsigned char page,unsigned char column,const unsigned char 
; *pdata)
; {
	.dbline 213
; 	   unsigned char i;
; 	   unsigned char j;
; 	   
; 	   for(j=0;j<=1;j++)
	clr R20
	xjmp L34
L31:
	.dbline 214
; 	   {
	.dbline 215
; 	   	   Send_Command(Gen_Page(page));
	mov R16,R22
	xcall _Gen_Page
	xcall _Send_Command
	.dbline 216
; 	       Send_Command(Gen_Column_LSB(column));
	mov R16,R12
	xcall _Gen_Column_LSB
	xcall _Send_Command
	.dbline 217
; 	       Send_Command(Gen_Column_MSB(column));  
	mov R16,R12
	xcall _Gen_Column_MSB
	xcall _Send_Command
	.dbline 218
;      	   for(i=0;i<=7;i++)
	clr R14
	xjmp L38
L35:
	.dbline 219
	.dbline 220
	movw R30,R10
	lpm R16,Z
	com R16
	xcall _Send_Byte
	.dbline 221
	movw R24,R10
	adiw R24,1
	movw R10,R24
	.dbline 222
L36:
	.dbline 218
	inc R14
L38:
	.dbline 218
	ldi R24,7
	cp R24,R14
	brsh L35
	.dbline 223
	inc R22
	.dbline 224
L32:
	.dbline 213
	inc R20
L34:
	.dbline 213
	ldi R24,1
	cp R24,R20
	brsh L31
	.dbline -2
L30:
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r j 20 c
	.dbsym r i 14 c
	.dbsym r pdata 10 pkc
	.dbsym r column 12 c
	.dbsym r page 22 c
	.dbend
	.dbfunc e Draw_NtoArab _Draw_NtoArab fV
;         number -> y+8
;         column -> R22
;           page -> R20
	.even
_Draw_NtoArab::
	xcall push_gset3
	mov R22,R18
	mov R20,R16
	sbiw R28,2
	.dbline -1
	.dbline 231
; 	       {
; 	   	       Send_Byte(~(*pdata));
; 	   	       pdata++;
; 	       }
; 	       page++;
; 	   }
; }
; 
; //////////////////////////////////////////////////////////////////////
; //数值大小与阿拉伯数字之间的转换显示
; //////////////////////////////////////////////////////////////////////
; void Draw_NtoArab(unsigned char page,unsigned char column,unsigned char number)
; {
	.dbline 232
; 	switch(number)
	ldd R10,y+8
	clr R11
	tst R10
	brne X0
	tst R11
	brne X2
	xjmp L43
X2:
X0:
	movw R24,R10
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brne X3
	xjmp L44
X3:
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brne X4
	xjmp L45
X4:
	cpi R24,3
	ldi R30,0
	cpc R25,R30
	brne X5
	xjmp L46
X5:
	cpi R24,4
	ldi R30,0
	cpc R25,R30
	brne X6
	xjmp L47
X6:
	cpi R24,5
	ldi R30,0
	cpc R25,R30
	brne X7
	xjmp L48
X7:
	cpi R24,6
	ldi R30,0
	cpc R25,R30
	brne X8
	xjmp L49
X8:
	cpi R24,7
	ldi R30,0
	cpc R25,R30
	brne X9
	xjmp L50
X9:
	cpi R24,8
	ldi R30,0
	cpc R25,R30
	brne X10
	xjmp L51
X10:
	cpi R24,9
	ldi R30,0
	cpc R25,R30
	brne X11
	xjmp L52
X11:
	xjmp L40
X1:
	.dbline 233
; 	{
L43:
	.dbline 235
; 		  case 0x00:
; 		  	{
	.dbline 236
; 		  		  Bmp8x16(page,column,arab_0);
	ldi R24,<_arab_0
	ldi R25,>_arab_0
	std y+1,R25
	std y+0,R24
	mov R18,R22
	mov R16,R20
	xcall _Bmp8x16
	.dbline 237
; 		  		  break;
	xjmp L41
L44:
	.dbline 240
; 		  	}
; 		  case 0x01:
; 		  	{
	.dbline 241
; 		  		  Bmp8x16(page,column,arab_1);
	ldi R24,<_arab_1
	ldi R25,>_arab_1
	std y+1,R25
	std y+0,R24
	mov R18,R22
	mov R16,R20
	xcall _Bmp8x16
	.dbline 242
; 		  		  break;
	xjmp L41
L45:
	.dbline 246
; 		  		  
; 		  	}
; 		  case 0x02:
; 		  	{
	.dbline 247
; 		  		  Bmp8x16(page,column,arab_2);
	ldi R24,<_arab_2
	ldi R25,>_arab_2
	std y+1,R25
	std y+0,R24
	mov R18,R22
	mov R16,R20
	xcall _Bmp8x16
	.dbline 248
; 		  		  break;
	xjmp L41
L46:
	.dbline 251
; 		  	}
; 		  case 0x03:
; 		  {
	.dbline 252
; 		  	      Bmp8x16(page,column,arab_3);
	ldi R24,<_arab_3
	ldi R25,>_arab_3
	std y+1,R25
	std y+0,R24
	mov R18,R22
	mov R16,R20
	xcall _Bmp8x16
	.dbline 253
; 		  	      break;
	xjmp L41
L47:
	.dbline 256
; 		  }
; 		  case 0x04:
; 		  	{
	.dbline 257
; 		  		   Bmp8x16(page,column,arab_4);
	ldi R24,<_arab_4
	ldi R25,>_arab_4
	std y+1,R25
	std y+0,R24
	mov R18,R22
	mov R16,R20
	xcall _Bmp8x16
	.dbline 258
; 		  		   break;
	xjmp L41
L48:
	.dbline 261
; 		  	}
; 		  case 0x05:
; 		  	{
	.dbline 262
; 		  		   Bmp8x16(page,column,arab_5);
	ldi R24,<_arab_5
	ldi R25,>_arab_5
	std y+1,R25
	std y+0,R24
	mov R18,R22
	mov R16,R20
	xcall _Bmp8x16
	.dbline 263
; 		  		   break;
	xjmp L41
L49:
	.dbline 266
; 		  	}
; 		  case 0x06:
; 		  	{
	.dbline 267
; 		  		   Bmp8x16(page,column,arab_6);
	ldi R24,<_arab_6
	ldi R25,>_arab_6
	std y+1,R25
	std y+0,R24
	mov R18,R22
	mov R16,R20
	xcall _Bmp8x16
	.dbline 268
; 		  		   break;
	xjmp L41
L50:
	.dbline 271
; 		  	}
; 		  case 0x07:
; 		  	{
	.dbline 272
; 		  		   Bmp8x16(page,column,arab_7);
	ldi R24,<_arab_7
	ldi R25,>_arab_7
	std y+1,R25
	std y+0,R24
	mov R18,R22
	mov R16,R20
	xcall _Bmp8x16
	.dbline 273
; 		  		   break;
	xjmp L41

⌨️ 快捷键说明

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