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

📄 lcd.src

📁 F040 的一些软件学习
💻 SRC
📖 第 1 页 / 共 2 页
字号:
; 		RS = 1;
			; SOURCE LINE # 190
	MOV  	DPTR,#0F802H
	MOV  	A,#01H
	MOVX 	@DPTR,A
; 		for(ColumnCounter = 0; ColumnCounter < Width; ColumnCounter++)
			; SOURCE LINE # 191
;---- Variable 'ColumnCounter?551' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
?C0015:
	MOV  	A,R7
	CLR  	C
	SUBB 	A,R1
	JNC  	?C0014
; 		{
			; SOURCE LINE # 192
; 			if(!bReverseDisplay)
			; SOURCE LINE # 193
	JB   	bReverseDisplay?548,?C0018
; 			{
			; SOURCE LINE # 194
; 				WLCD = *pGraphic++;		/*r正常显示,白屏黑字*/
			; SOURCE LINE # 195
	INC  	R3
	MOV  	A,R3
	MOV  	R4,AR2
	JNZ  	?C0041
	INC  	R2
?C0041:
	DEC  	A
	MOV  	DPL,A
	MOV  	DPH,R4
	CLR  	A
	MOVC 	A,@A+DPTR
; 			}
			; SOURCE LINE # 196
	SJMP 	?C0045
?C0018:
; 			else
; 			{
			; SOURCE LINE # 198
; 				WLCD = ~(*pGraphic++);	/*r反转显示,黑屏白字*/
			; SOURCE LINE # 199
	INC  	R3
	MOV  	A,R3
	MOV  	R4,AR2
	JNZ  	?C0042
	INC  	R2
?C0042:
	DEC  	A
	MOV  	DPL,A
	MOV  	DPH,R4
	CLR  	A
	MOVC 	A,@A+DPTR
	CPL  	A
?C0045:
	MOV  	DPTR,#0F800H
	MOVX 	@DPTR,A
; 			}	
			; SOURCE LINE # 200
; 		}
			; SOURCE LINE # 201
?C0017:
	INC  	R7
	SJMP 	?C0015
; 	}
			; SOURCE LINE # 202
?C0014:
	INC  	R6
	SJMP 	?C0012
; }
			; SOURCE LINE # 203
?C0020:
	RET  	
; END OF _lcd_display_graphic

; 
; 
; /******************************************************************************************
; *函数名:		lcd_display_char
; *参数:			XStart				开始显示的X坐标像素值
; 				YStart				开始显示的Y坐标像素值
; 				bReverseDisplay		标识是否反显,1为反显,0为不反显
; 				character			显示字符的ASCII码表值
; *返回值:		无
; *描述:			字符显示程序
; *编写:			王绍伟
; *版本信息:		V1.0				2003年8月15日
; ******************************************************************************************/
; extern void lcd_display_char(				/*为整个PAGE显示,不能任意位置*/

	RSEG  ?PR?_lcd_display_char?LCD
L?0048:
	USING	0
	MOV  	R7,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	MOV  	C,bReverseDisplay?873
	MOV  	?_lcd_display_char?BIT,C
	MOV  	DPTR,#Result?876
	MOVX 	A,@DPTR
L?0049:
	MOV  	DPTR,#g_Data2Char
	MOVC 	A,@A+DPTR
L?0050:
	MOV  	DPTR,#?_lcd_display_char?BYTE+02H
	MOVX 	@DPTR,A
_lcd_display_char:
	USING	0
			; SOURCE LINE # 217
;---- Variable 'YStart?656' assigned to Register 'R5' ----
;---- Variable 'XStart?655' assigned to Register 'R1' ----
	MOV  	R1,AR7
; 						 	byte XStart,
; 						 	byte YStart,
; 						 	bool bReverseDisplay,
; 						 	byte character)                        
; {	
			; SOURCE LINE # 222
; 	byte PageCounter;		/*页标志*/
; 	byte ColumnCounter;		/*X位置标志*/
; 	byte PageStart;			/*起始页码*/
; 	byte PageEnd;			/*终止页码*/
; 	byte code *pChar;		/*指向字符存放数据(按page划分存储)区的指针*/
; 
; 	pChar = g_ASCII[character-0x20];	/*r根据ASCI码表,*/
			; SOURCE LINE # 229
	MOV  	DPTR,#character?658
	MOVX 	A,@DPTR
	MOV  	B,#010H
	MUL  	AB
	ADD  	A,#LOW (g_ASCII+0FE00H)
	MOV  	DPL,A
	MOV  	A,B
	ADDC 	A,#HIGH (g_ASCII+0FE00H)
;---- Variable 'pChar?663' assigned to Register 'R2/R3' ----
	MOV  	R3,DPL
	MOV  	R2,A
; 	PageStart = YStart >> 3;		/*r由于是整页显示,不能随意位置,所以指定除8*/
			; SOURCE LINE # 230
	MOV  	R7,AR5
	MOV  	A,R7
	RRC  	A
	RRC  	A
	RRC  	A
	ANL  	A,#01FH
	MOV  	R7,A
;---- Variable 'PageStart?661' assigned to Register 'R7' ----
; 	PageEnd = PageStart + 2;		/*r一个字符在纵向占两个page*/
			; SOURCE LINE # 231
	ADD  	A,#02H
	MOV  	DPTR,#PageEnd?662
	MOVX 	@DPTR,A
; 	
; 	for(PageCounter = PageStart; PageCounter < PageEnd; PageCounter++)
			; SOURCE LINE # 233
;---- Variable 'PageCounter?659' assigned to Register 'R6' ----
	MOV  	R6,AR7
?C0021:
	MOV  	DPTR,#PageEnd?662
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	A,R6
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0029
; 	{
			; SOURCE LINE # 234
; 		SetColumn(XStart);
			; SOURCE LINE # 235
	MOV  	R7,AR1
	LCALL	_SetColumn
; 		SetPage(PageCounter);
			; SOURCE LINE # 236
	MOV  	R7,AR6
	LCALL	_SetPage
; 
; 		RS = 1;
			; SOURCE LINE # 238
	MOV  	DPTR,#0F802H
	MOV  	A,#01H
	MOVX 	@DPTR,A
; 		for(ColumnCounter = 0; ColumnCounter < 8; ColumnCounter++)	/*r一个字符在横向占8列*/
			; SOURCE LINE # 239
;---- Variable 'ColumnCounter?660' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
?C0024:
; 		{
			; SOURCE LINE # 240
; 			if(!bReverseDisplay)
			; SOURCE LINE # 241
	JB   	bReverseDisplay?657,?C0027
; 			{
			; SOURCE LINE # 242
; 				WLCD = *pChar++;
			; SOURCE LINE # 243
	INC  	R3
	MOV  	A,R3
	MOV  	R4,AR2
	JNZ  	?C0043
	INC  	R2
?C0043:
	DEC  	A
	MOV  	DPL,A
	MOV  	DPH,R4
	CLR  	A
	MOVC 	A,@A+DPTR
; 			}
			; SOURCE LINE # 244
	SJMP 	?C0046
?C0027:
; 			else
; 			{
			; SOURCE LINE # 246
; 				WLCD = ~(*pChar++);
			; SOURCE LINE # 247
	INC  	R3
	MOV  	A,R3
	MOV  	R4,AR2
	JNZ  	?C0044
	INC  	R2
?C0044:
	DEC  	A
	MOV  	DPL,A
	MOV  	DPH,R4
	CLR  	A
	MOVC 	A,@A+DPTR
	CPL  	A
?C0046:
	MOV  	DPTR,#0F800H
	MOVX 	@DPTR,A
; 			}
			; SOURCE LINE # 248
; 		}
			; SOURCE LINE # 249
?C0026:
	INC  	R7
	MOV  	A,R7
	CJNE 	A,#08H,?C0024
; 	}
			; SOURCE LINE # 250
?C0023:
	INC  	R6
	SJMP 	?C0021
; }
			; SOURCE LINE # 251
?C0029:
	RET  	
; END OF _lcd_display_char

; 
; 
; /******************************************************************************************
; *函数名:		lcd_display_text
; *参数:			XStart			字符串开始X坐标像素值
; 				YStart			字符串开始Y坐标像素值,实际得按照page显示
; 				bReverseDisplay	标识是否反显
; 				pText			指向字符串ASCII码存放首址的指针
; *返回值:		无
; *描述:			显示小于8个字符的字符串文本
; *编写:			王绍伟
; *版本信息:		V1.0			2003年8月15日
; ******************************************************************************************/
; extern void lcd_display_text( byte XStart,

	RSEG  ?PR?_lcd_display_text?LCD
_lcd_display_text:
	USING	0
			; SOURCE LINE # 265
	MOV  	DPTR,#XStart?764
	MOV  	A,R7
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R5
	MOVX 	@DPTR,A
;  							 byte YStart, 
;  							 bool bReverseDisplay,
;  							 byte* pText)
; {
			; SOURCE LINE # 269
; 	byte i;
; 	byte len;
; 	len = strlen(pText);
			; SOURCE LINE # 272
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	LCALL	_strlen
	MOV  	DPTR,#len?769
	MOV  	A,R7
	MOVX 	@DPTR,A
; 	if(len > 8)
			; SOURCE LINE # 273
	SETB 	C
	SUBB 	A,#08H
	JC   	?C0030
; 	{
			; SOURCE LINE # 274
; 		len = 8;
			; SOURCE LINE # 275
	MOV  	A,#08H
	MOVX 	@DPTR,A
; 	}
			; SOURCE LINE # 276
?C0030:
; 	for(i = 0; i < len; i++)
			; SOURCE LINE # 277
	CLR  	A
	MOV  	DPTR,#i?768
	MOVX 	@DPTR,A
?C0031:
	MOV  	DPTR,#len?769
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	DPTR,#i?768
	MOVX 	A,@DPTR
	MOV  	R6,A
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0034
; 	{
			; SOURCE LINE # 278
; 		lcd_display_char(XStart + i * 8, YStart, bReverseDisplay, *pText++);
			; SOURCE LINE # 279
	MOV  	A,R6
	MOV  	B,#08H
	MUL  	AB
	MOV  	R7,A
	MOV  	DPTR,#XStart?764
	MOVX 	A,@DPTR
	ADD  	A,R7
	MOV  	R7,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	MOV  	C,bReverseDisplay?766
	MOV  	?_lcd_display_char?BIT,C
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	CLR  	A
	MOV  	B,#01H
	LCALL	?C?ILDIX
	MOV  	R1,B
	MOV  	R2,A
	LCALL	?C?CLDPTR
	LCALL	L?0050
; 	}
			; SOURCE LINE # 280
	MOV  	DPTR,#i?768
	MOVX 	A,@DPTR
	INC  	A
	MOVX 	@DPTR,A
	SJMP 	?C0031
; }
			; SOURCE LINE # 281
?C0034:
	RET  	
; END OF _lcd_display_text

; 
; 
; /******************************************************************************************
; *函数名:		lcd_display_byte
; *参数:			XStart
; 				YStart
; 				bHex			标识是否为十六进制数据
; 				bReverseDisplay	标识是否反显
; 				value
; *返回值:		无
; *描述:			在LCD液晶屏上显示一个字节的内容,若此字节中数标识用
; 				十六进制显示,则其中字节的高四位为				一个字符的ASCII码
; 				值,低四位又是另外一个字符的ASCII码字
; *编写:王绍伟
; *版本信息:V1.0			2003年8月15日
; ******************************************************************************************/
; extern void lcd_display_byte(byte XStart,

	RSEG  ?PR?_lcd_display_byte?LCD
_lcd_display_byte:
	USING	0
			; SOURCE LINE # 298
	MOV  	DPTR,#XStart?870
	MOV  	A,R7
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R5
	MOVX 	@DPTR,A
;  							 byte YStart, 
;  							 bool bHex,
;  							 bool bReverseDisplay,
;  							 byte value)
;  {
			; SOURCE LINE # 303
; 	 byte Shift;		/*暂存余数*/
; 	 byte Result;		/*暂存除得结果值*/
; 
; 	 if(bHex)
			; SOURCE LINE # 307
	JNB  	bHex?872,?C0035
; 	 {
			; SOURCE LINE # 308
; 		lcd_display_char(XStart + 8, YStart, bReverseDisplay, g_Data2Char[value&0x0F]);
			; SOURCE LINE # 309
	MOV  	DPTR,#XStart?870
	MOVX 	A,@DPTR
	ADD  	A,#08H
	MOV  	R7,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	MOV  	C,bReverseDisplay?873
	MOV  	?_lcd_display_char?BIT,C
	INC  	DPTR
	MOVX 	A,@DPTR
	ANL  	A,#0FH
	LCALL	L?0049
; 		lcd_display_char(XStart, YStart, bReverseDisplay, g_Data2Char[value>>4]);
			; SOURCE LINE # 310
	MOV  	DPTR,#XStart?870
	MOVX 	A,@DPTR
	MOV  	R7,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	MOV  	C,bReverseDisplay?873
	MOV  	?_lcd_display_char?BIT,C
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R6,A
	SWAP 	A
	ANL  	A,#0FH
; 	 }
			; SOURCE LINE # 311
	SJMP 	?C0047
?C0035:
; 	 else
; 	 {
			; SOURCE LINE # 313
; 	 	Shift = value % 100;
			; SOURCE LINE # 314
	MOV  	DPTR,#value?874
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	B,#064H
	DIV  	AB
	INC  	DPTR
	MOV  	A,B
	MOVX 	@DPTR,A
; 	 	Result = value / 100;
			; SOURCE LINE # 315
	MOV  	A,R7
	MOV  	B,#064H
	DIV  	AB
	INC  	DPTR
	MOVX 	@DPTR,A
; 	 	if(Result)
			; SOURCE LINE # 316
	JZ   	?C0037
; 	 	{
			; SOURCE LINE # 317
; 	 		lcd_display_char(XStart, YStart, bReverseDisplay, g_Data2Char[Result]);
			; SOURCE LINE # 318
	MOV  	DPTR,#XStart?870
	MOVX 	A,@DPTR
	LCALL	L?0048
; 	 	}
			; SOURCE LINE # 319
?C0037:
; 	 	Result = Shift / 10;
			; SOURCE LINE # 320
	MOV  	DPTR,#Shift?875
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	B,#0AH
	DIV  	AB
	MOV  	R6,A
	INC  	DPTR
	MOVX 	@DPTR,A
; 	 	Shift = Shift % 10;
			; SOURCE LINE # 321
	MOV  	A,R7
	MOV  	B,#0AH
	DIV  	AB
	MOV  	DPTR,#Shift?875
	MOV  	A,B
	MOVX 	@DPTR,A
; 	 	if(Result)
			; SOURCE LINE # 322
	MOV  	A,R6
	JZ   	?C0038
; 		{
			; SOURCE LINE # 323
; 			lcd_display_char(XStart + 8, YStart, bReverseDisplay, g_Data2Char[Result]);
			; SOURCE LINE # 324
	MOV  	DPTR,#XStart?870
	MOVX 	A,@DPTR
	ADD  	A,#08H
	LCALL	L?0048
; 	 	}	
			; SOURCE LINE # 325
?C0038:
; 		lcd_display_char(XStart + 16, YStart, bReverseDisplay, g_Data2Char[Shift]);
			; SOURCE LINE # 326
	MOV  	DPTR,#XStart?870
	MOVX 	A,@DPTR
	ADD  	A,#010H
	MOV  	R7,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R5,A
	MOV  	C,bReverseDisplay?873
	MOV  	?_lcd_display_char?BIT,C
	MOV  	DPTR,#Shift?875
	MOVX 	A,@DPTR
?C0047:
	LCALL	L?0049
; 	 }
			; SOURCE LINE # 327
;  }
			; SOURCE LINE # 328
?C0039:
	RET  	
; END OF _lcd_display_byte

	END

⌨️ 快捷键说明

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