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

📄 xspmain.src

📁 用8052写的一个LED大屏幕显示程序
💻 SRC
📖 第 1 页 / 共 5 页
字号:
	MOV  	A,LeftShiftDelayCount
	JZ   	?C0036
	LCALL	WDT_RESET
	SJMP 	?C0034
; }
			; SOURCE LINE # 354
?C0036:
	RET  	
; END OF MapDrawZhiJie

; 
; /**************************************************************************/
; void 	DataCopy(unsigned char temp){

	RSEG  ?PR?_DataCopy?XSPMAIN
_DataCopy:
	USING	0
			; SOURCE LINE # 357
;---- Variable 'temp?446' assigned to Register 'R7' ----
; 	 	memcpy(DispYingXiangBuf,& DispShuBuf[temp][0][0],HANGSHU*LIEBYTE);
			; SOURCE LINE # 358
	MOV  	R6,#00H
	MOV  	R4,#01H
	MOV  	R5,#020H
	LCALL	?C?IMUL
	MOV  	A,#LOW (DispShuBuf)
	ADD  	A,R7
	MOV  	R1,A
	MOV  	A,#HIGH (DispShuBuf)
	ADDC 	A,R6
	MOV  	R2,A
	MOV  	R3,#01H
	MOV  	R0,#LOW (DispYingXiangBuf)
	MOV  	R4,#HIGH (DispYingXiangBuf)
	MOV  	R5,#01H
	MOV  	R6,#01H
	MOV  	R7,#020H
	LCALL	?C?COPY
; }
			; SOURCE LINE # 359
	RET  	
; END OF _DataCopy

; /*
; void 	MemDataCopy(unsigned char *c,unsigned char *d){
;     data unsigned int		i;
;     for (i=0;i<HANGSHU*LIEBYTE;i++) {
;        c[i]=d[i];
;  	  if (c[i]!=d[i]) break;
;     }
; }*/
; /*********************************************************/
; void MapDrawString(unsigned char *str)

	RSEG  ?PR?_MapDrawString?XSPMAIN
_MapDrawString:
	USING	0
			; SOURCE LINE # 369
	MOV  	DPTR,#str?547
	MOV  	A,R3
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R2
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,R1
	MOVX 	@DPTR,A
; {
			; SOURCE LINE # 370
;     data unsigned char	       *pFont;
;     idata unsigned char	       Font[32];
;     
; 
;     data unsigned int		FontIndex=0;
			; SOURCE LINE # 375
	CLR  	A
	MOV  	FontIndex?550,A
	MOV  	FontIndex?550+01H,A
;     idata unsigned long		FontCount;
; //    data unsigned int		FontCountL;
;   //  data unsigned char		FontCountH;
; 
;     data unsigned char		i;
;     data unsigned char		temp;
;     data unsigned int		LieShu=0;
			; SOURCE LINE # 382
	MOV  	LieShu?554,A
	MOV  	LieShu?554+01H,A
?C0038:
;     
;     data unsigned char		j;
;     data unsigned char		c, d;
;   
;   
;     
; //	for (k = 0; k <LIEBYTE; k=k+2) {
; 
; 	while ((c = str[FontIndex]) != '\0'){
			; SOURCE LINE # 391
	MOV  	DPTR,#str?547
	MOVX 	A,@DPTR
	MOV  	R3,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R2,A
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R1,A
	MOV  	DPL,FontIndex?550+01H
	MOV  	DPH,FontIndex?550
	LCALL	?C?CLDOPTR
	MOV  	c?556,A
	JNZ  	$ + 5H
	LJMP 	?C0047
; 		d = str[FontIndex + 1];
			; SOURCE LINE # 392
	MOV  	DPTR,#str?547
	MOVX 	A,@DPTR
	INC  	DPTR
	MOVX 	A,@DPTR
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	A,FontIndex?550+01H
	ADD  	A,#01H
	MOV  	R7,A
	CLR  	A
	ADDC 	A,FontIndex?550
	MOV  	DPL,R7
	MOV  	DPH,A
	LCALL	?C?CLDOPTR
	MOV  	d?557,A
; 		WDT_RESET();
			; SOURCE LINE # 393
	LCALL	WDT_RESET
; 		FontCount = 32*((unsigned long)(c - 160 - 1) * 94 + (d -160 - 1));
			; SOURCE LINE # 394
	MOV  	A,c?556
	ADD  	A,#05FH
	MOV  	R7,A
	CLR  	A
	ADDC 	A,#0FFH
	MOV  	R6,A
	CLR  	A
	MOV  	R4,A
	MOV  	R5,A
	MOV  	R3,#05EH
	MOV  	R2,A
	MOV  	R1,A
	MOV  	R0,A
	LCALL	?C?LMUL
	XCH  	A,R0
	MOV  	A,R4
	XCH  	A,R0
	XCH  	A,R1
	MOV  	A,R5
	XCH  	A,R1
	XCH  	A,R2
	MOV  	A,R6
	XCH  	A,R2
	XCH  	A,R3
	MOV  	A,R7
	XCH  	A,R3
	MOV  	A,d?557
	ADD  	A,#05FH
	MOV  	R7,A
	CLR  	A
	ADDC 	A,#0FFH
	MOV  	R6,A
	CLR  	A
	MOV  	R4,A
	MOV  	R5,A
	MOV  	A,R3
	ADD  	A,R7
	MOV  	R7,A
	MOV  	A,R2
	ADDC 	A,R6
	MOV  	R6,A
	MOV  	A,R5
	ADDC 	A,R1
	MOV  	R5,A
	MOV  	A,R4
	ADDC 	A,R0
	MOV  	R4,A
	CLR  	A
	MOV  	R3,#020H
	MOV  	R2,A
	MOV  	R1,A
	MOV  	R0,A
	LCALL	?C?LMUL
	MOV  	R0,#LOW (FontCount?551)
	LCALL	?C?LSTIDATA
; //			FontCountH=P1;	
; 			P1=(P1&0x8f)|((FontCount>>12)&0x70);	//送页面地址
			; SOURCE LINE # 396
	MOV  	R0,#LOW (FontCount?551)
	LCALL	?C?LLDIDATA
	MOV  	R0,#0CH
	LCALL	?C?ULSHR
	MOV  	A,R7
	ANL  	A,#070H
	MOV  	R3,A
	CLR  	A
	MOV  	A,P1
	ANL  	A,#08FH
	MOV  	R7,A
	CLR  	A
	MOV  	A,R3
	ORL  	A,R7
	MOV  	R7,A
	CLR  	A
	MOV  	P1,R7
; //			P1=(FontCountH&0x9f)|((FontCount>>16)<<5);	//送页面地址
; 			
; 			pFont = (unsigned char *)((unsigned long)FontCount&0x0ffff|0x10000);
			; SOURCE LINE # 399
	MOV  	R0,#LOW (FontCount?551)
	LCALL	?C?LLDIDATA
	MOV  	A,R7
	MOV  	A,R6
	CLR  	A
	MOV  	R4,A
	MOV  	A,R7
	MOV  	A,R6
	MOV  	A,#01H
	DEC  	A
	XCH  	A,R1
	MOV  	A,R7
	XCH  	A,R1
	XCH  	A,R2
	MOV  	A,R6
	XCH  	A,R2
	MOV  	pFont?548,#01H
	MOV  	pFont?548+01H,R2
	MOV  	pFont?548+02H,R1
; //		 	memcpy(Font,pFont,32);
; 		   	pCE=1;					//片选 选中020字库储存器
			; SOURCE LINE # 401
	SETB 	pCE
; 			for (i = 0; i < 32; i++) {
			; SOURCE LINE # 402
	MOV  	i?552,A
?C0040:
; 		    		if ( ( (&pFont[i]) ==0 )&& (i!=0)) P1=P1+0x10;
			; SOURCE LINE # 403
	MOV  	R6,#00H
	MOV  	A,pFont?548+02H
	ADD  	A,i?552
	MOV  	R1,A
	MOV  	A,R6
	ADDC 	A,pFont?548+01H
	ORL  	A,R1
	JNZ  	?C0043
	MOV  	A,i?552
	JZ   	?C0043
	MOV  	A,#010H
	ADD  	A,P1
	MOV  	P1,A
?C0043:
; 		    		Font[i]= pFont[i];
			; SOURCE LINE # 404
	MOV  	R3,pFont?548
	MOV  	R2,pFont?548+01H
	MOV  	R1,pFont?548+02H
	MOV  	DPL,i?552
	MOV  	DPH,#00H
	LCALL	?C?CLDOPTR
	MOV  	R7,A
	MOV  	A,#LOW (Font?549)
	ADD  	A,i?552
	MOV  	R0,A
	MOV  	A,R7
	MOV  	@R0,A
; 			}		
			; SOURCE LINE # 405
	INC  	i?552
	MOV  	A,i?552
	CJNE 	A,#020H,?C0040
?C0041:
; 			pCE=0;		
			; SOURCE LINE # 406
	CLR  	pCE
; 			PingShu	= FontIndex/LIEBYTE;					
			; SOURCE LINE # 407
	MOV  	R6,FontIndex?550
	MOV  	R7,FontIndex?550+01H
	MOV  	R4,#00H
	MOV  	R5,#012H
	LCALL	?C?UIDIV
	MOV  	PingShu,R7
; 			for (j = 0; j < HANGSHU; j++) {
			; SOURCE LINE # 408
	CLR  	A
	MOV  	j?555,A
?C0044:
; 				temp=LieShu%LIEBYTE;
			; SOURCE LINE # 409
	MOV  	R6,LieShu?554
	MOV  	R7,LieShu?554+01H
	MOV  	R4,#00H
	MOV  	R5,#012H
	LCALL	?C?UIDIV
	MOV  	temp?553,R5
; 				DispShuBuf[PingShu][j][temp]= Font[ 2 * j];     		
			; SOURCE LINE # 410
	MOV  	A,j?555
	ADD  	A,ACC
	ADD  	A,#LOW (Font?549)
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R7,A
	MOV  	B,#020H
	MOV  	A,PingShu
	MUL  	AB
	ADD  	A,#LOW (DispShuBuf)
	MOV  	DPL,A
	MOV  	A,B
	ADDC 	A,#HIGH (DispShuBuf)
	MOV  	DPH,A
	ADD  	A,PingShu
	MOV  	DPH,A
	MOV  	B,#012H
	MOV  	A,j?555
	LCALL	?C?OFFXADD
	MOV  	A,DPL
	ADD  	A,temp?553
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,DPH
	MOV  	DPH,A
	MOV  	A,R7
	MOVX 	@DPTR,A
; 				DispShuBuf[PingShu][j][temp+1]=Font[2 * j + 1];     		
			; SOURCE LINE # 411
	MOV  	A,j?555
	ADD  	A,ACC
	ADD  	A,#LOW (Font?549+01H)
	MOV  	R0,A
	MOV  	A,@R0
	MOV  	R7,A
	MOV  	B,#020H
	MOV  	A,PingShu
	MUL  	AB
	ADD  	A,#LOW (DispShuBuf+01H)
	MOV  	DPL,A
	MOV  	A,B
	ADDC 	A,#HIGH (DispShuBuf+01H)
	MOV  	DPH,A
	ADD  	A,PingShu
	MOV  	DPH,A
	MOV  	B,#012H
	MOV  	A,j?555
	LCALL	?C?OFFXADD
	MOV  	A,DPL
	ADD  	A,temp?553
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,DPH
	MOV  	DPH,A
	MOV  	A,R7
	MOVX 	@DPTR,A
; 			}	
			; SOURCE LINE # 412
	INC  	j?555
	MOV  	A,j?555
	XRL  	A,#010H
	JNZ  	?C0044
?C0045:
; 			FontIndex += 2;
			; SOURCE LINE # 413
	MOV  	A,#02H
	ADD  	A,FontIndex?550+01H
	MOV  	FontIndex?550+01H,A
	CLR  	A
	ADDC 	A,FontIndex?550
	MOV  	FontIndex?550,A
; 			LieShu +=2;
			; SOURCE LINE # 414
	MOV  	A,#02H
	ADD  	A,LieShu?554+01H
	MOV  	LieShu?554+01H,A
	CLR  	A
	ADDC 	A,LieShu?554
	MOV  	LieShu?554,A
; 	}
			; SOURCE LINE # 415
	LJMP 	?C0038
?C0047:
; 	
; 	while( (temp=LieShu%LIEBYTE) >0){
			; SOURCE LINE # 417
	MOV  	R6,LieShu?554
	MOV  	R7,LieShu?554+01H
	MOV  	R4,#00H
	MOV  	R5,#012H
	LCALL	?C?UIDIV
	XCH  	A,R7
	MOV  	A,R5
	XCH  	A,R7
	MOV  	temp?553,R7
	MOV  	A,R7
	SETB 	C
	SUBB 	A,#00H
	JC   	?C0052
; 			for (j = 0; j < HANGSHU; j++) {
			; SOURCE LINE # 418
	CLR  	A
	MOV  	j?555,A
?C0049:
; 				DispShuBuf[PingShu][j][temp]= 0;     		
			; SOURCE LINE # 419
	MOV  	B,#020H
	MOV  	A,PingShu
	MUL  	AB
	ADD  	A,#LOW (DispShuBuf)
	MOV  	DPL,A
	MOV  	A,B
	ADDC 	A,#HIGH (DispShuBuf)
	MOV  	DPH,A
	ADD  	A,PingShu
	MOV  	DPH,A
	MOV  	B,#012H
	MOV  	A,j?555
	LCALL	?C?OFFXADD
	MOV  	A,DPL
	ADD  	A,temp?553
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,DPH
	MOV  	DPH,A
	CLR  	A
	MOVX 	@DPTR,A
; 				DispShuBuf[PingShu][j][temp+1]=0;     		
			; SOURCE LINE # 420
	MOV  	B,#020H
	MOV  	A,PingShu
	MUL  	AB
	ADD  	A,#LOW (DispShuBuf+01H)
	MOV  	DPL,A
	MOV  	A,B
	ADDC 	A,#HIGH (DispShuBuf+01H)
	MOV  	DPH,A
	ADD  	A,PingShu
	MOV  	DPH,A
	MOV  	B,#012H
	MOV  	A,j?555
	LCALL	?C?OFFXADD
	MOV  	A,DPL
	ADD  	A,temp?553
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,DPH
	MOV  	DPH,A
	CLR  	A
	MOVX 	@DPTR,A
; 			}	
			; SOURCE LINE # 421
	INC  	j?555
	MOV  	A,j?555
	CJNE 	A,#010H,?C0049
?C0050:
; 		LieShu += 2;
			; SOURCE LINE # 422
	MOV  	A,#02H
	ADD  	A,LieShu?554+01H
	MOV  	LieShu?554+01H,A
	CLR  	A
	ADDC 	A,LieShu?554
	MOV  	LieShu?554,A
; 	}			
			; SOURCE LINE # 423
	SJMP 	?C0047
; }
			; SOURCE LINE # 424
?C0052:
	RET  	
; END OF _MapDrawString

; 
; //***********************************************************************
; //串行口初始化
; void uart_init(void){

	RSEG  ?PR?uart_init?XSPMAIN
uart_init:
			; SOURCE LINE # 428
; 	SCON=0x50;		//设定串行口工作方式为方式1;允许接收
			; SOURCE LINE # 429
	MOV  	SCON,#050H
; 	PCON=0;
			; SOURCE LINE # 430
	CLR  	A
	MOV  	PCON,A
; 	TH1=USART_BAND;
			; SOURCE LINE # 431
	MOV  	TH1,#0FBH
; 	TR1=1;
			; SOURCE LINE # 432
	SETB 	TR1
; }
			; SOURCE LINE # 433
	RET  	
; END OF uart_init

CSEG	AT	00023H
	LJMP	UartInt

; 
; //串行口中断函数
; 
; void UartInt() interrupt 4 using 2{

	RSEG  ?PR?UartInt?XSPMAIN
	USING	2
UartInt:
	PUSH 	ACC
	PUSH 	B
	PUSH 	DPH
	PUSH 	DPL
	PUSH 	PSW
	USING	2
	MOV  	PSW,#010H
			; SOURCE LINE # 437
; static	bit   pCEtemp; 
;   	pCEtemp=pCE;					//片选保護
			; SOURCE LINE # 439
	MOV  	C,pCE
	MOV  	pCEtemp?758,C
;    	pCE=0;
			; SOURCE LINE # 440
	CLR  	pCE
; 	UartStart=1;
			; SOURCE LINE # 441
	SETB 	UartStart
;     UartTimerCount=2000;
			; SOURCE LINE # 442
	MOV  	UartTimerCount,#07H
	MOV  	UartTimerCount+01H,#0D0H
; 	switch (UartStep) {
			; SOURCE LINE # 443
	MOV  	A,UartStep
	DEC  	A
	JZ   	?C0056
	DEC  	A
	JNZ  	$ + 5H
	LJMP 	?C0067
	ADD  	A,#02H
	JZ   	$ + 5H
	LJMP 	?C0054
; 		case 0:
			; SOURCE LINE # 444
?C0055:
; 			UartCommand[0]=SBUF;
			; SOURCE LINE # 445
	MOV  	UartCommand,SBUF
; 	 	 	UartStep++;
			; SOURCE LINE # 446
	INC  	UartStep
; 		    	break;
			; SOURCE LINE # 447
	LJMP 	?C0054
; 		case 1:
			; SOURCE LINE # 448
?C0056:
; 			UartCommand[1]=SBUF;
			; SOURCE LINE # 449
	MOV  	UartCommand+01H,SBUF
; 	 		if(!strcmp(UartCommand,"WR")) {
			; SOURCE LINE # 450
	MOV  	R0,#LOW (UartCommand)
	MOV  	R4,#HIGH (UartCommand)
	MOV  	R5,#00H
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_0)
	MOV  	R1,#LOW (?SC_0)
	LCALL	?C?STRCMP
	MOV  	A,R7
	JNZ  	?C0057
; 	 			HelloOk=1;
			; SOURCE LINE # 451
	SETB 	HelloOk
;         	    BaoZhaBit=0;
			; SOURCE LINE # 452
	CLR  	BaoZhaBit
; 				UsartRecv_rp=0;
			; SOURCE LINE # 453
	MOV  	UsartRecv_rp,A
	MOV  	UsartRecv_rp+01H,A
;  		 		UartStep++;
			; SOURCE LINE # 454
	INC  	UartStep
;  		 	}
			; SOURCE LINE # 455
	LJMP 	?C0054
?C0057:
; 	 		else if(!strcmp(UartCommand,"RD")) {
			; SOURCE LINE # 456
	MOV  	R0,#LOW (UartCommand)
	MOV  	R4,#HIGH (UartCommand)
	MOV  	R5,#00H
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (?SC_3)
	MOV  	R1,#LOW (?SC_3)
	LCALL	?C?STRCMP
	MOV  	A,R7
	JNZ  	?C0059
; 		        UartEnd=0;	

⌨️ 快捷键说明

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