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

📄 xspmain.src

📁 用8052写的一个LED大屏幕显示程序
💻 SRC
📖 第 1 页 / 共 5 页
字号:
; extern  void DispScan();
; 
; void main()

	RSEG  ?PR?main?XSPMAIN
main:
	USING	0
			; SOURCE LINE # 135
; {
			; SOURCE LINE # 136
; data unsigned char	temp;
; WrReset:
			; SOURCE LINE # 138
?main?WrReset:
; 	InitAsp();
			; SOURCE LINE # 139
	LCALL	InitAsp
; 	uart_init();
			; SOURCE LINE # 140
	LCALL	uart_init
; //	IicWriteData(StrHello2);
; 	if (IicReadData(StrHello1)){
			; SOURCE LINE # 142
	MOV  	R3,#01H
	MOV  	R2,#HIGH (StrHello1)
	MOV  	R1,#LOW (StrHello1)
	LCALL	_IicReadData
	JNC  	?C0002
; 		strcpy(StrHelloBuf,StrHello);
			; SOURCE LINE # 143
	MOV  	R0,#LOW (StrHelloBuf)
	MOV  	R4,#HIGH (StrHelloBuf)
	MOV  	R5,#01H
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (StrHello)
	MOV  	R1,#LOW (StrHello)
	LCALL	?C?STRCPY
; 		strcat(StrHelloBuf,StrHello1);
			; SOURCE LINE # 144
	MOV  	DPTR,#?_strcat?BYTE+03H
	MOV  	A,#01H
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (StrHello1)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (StrHello1)
	MOVX 	@DPTR,A
	MOV  	R3,#01H
	MOV  	R2,#HIGH (StrHelloBuf)
	MOV  	R1,#LOW (StrHelloBuf)
	LCALL	_strcat
; 		strcat(StrHelloBuf,StrKongGe);
			; SOURCE LINE # 145
	MOV  	DPTR,#?_strcat?BYTE+03H
	MOV  	A,#0FFH
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (StrKongGe)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (StrKongGe)
	MOVX 	@DPTR,A
	MOV  	R3,#01H
	MOV  	R2,#HIGH (StrHelloBuf)
	MOV  	R1,#LOW (StrHelloBuf)
	LCALL	_strcat
; 		MapDrawString(StrHelloBuf);
			; SOURCE LINE # 146
	MOV  	R3,#01H
	MOV  	R2,#HIGH (StrHelloBuf)
	MOV  	R1,#LOW (StrHelloBuf)
	LCALL	_MapDrawString
; 	}	
			; SOURCE LINE # 147
	SJMP 	?C0004
?C0002:
; 	else
; 		MapDrawString(StrHello);
			; SOURCE LINE # 149
	MOV  	R3,#0FFH
	MOV  	R2,#HIGH (StrHello)
	MOV  	R1,#LOW (StrHello)
	LCALL	_MapDrawString
?C0004:
; /*
; 	MemDataCopy(&DispBuf[0],&DispShuBuf[0][0][0]);
; 	while (1){
; 		WDT_RESET();
;     }*/
;  	
; 	while (1){
			; SOURCE LINE # 156
; 		ClrPing(&DispBuf[0]);
			; SOURCE LINE # 157
	MOV  	R3,#01H
	MOV  	R2,#HIGH (DispBuf)
	MOV  	R1,#LOW (DispBuf)
	LCALL	_ClrPing
; 		if (UartEnd){	
			; SOURCE LINE # 158
	JNB  	UartEnd,?C0006
; 			if(HelloOk){
			; SOURCE LINE # 159
	JNB  	HelloOk,?C0007
; 				IicWriteData(UsartRecvFifo);
			; SOURCE LINE # 160
	MOV  	R3,#01H
	MOV  	R2,#HIGH (UsartRecvFifo)
	MOV  	R1,#LOW (UsartRecvFifo)
	LCALL	_IicWriteData
; 				HelloOk=0;
			; SOURCE LINE # 161
	CLR  	HelloOk
; 				UartEnd=0;
			; SOURCE LINE # 162
	CLR  	UartEnd
; 				goto	WrReset;
			; SOURCE LINE # 163
	SJMP 	?main?WrReset
; 			}
			; SOURCE LINE # 164
?C0007:
; 			else if (BaoZhaBit){
			; SOURCE LINE # 165
	JNB  	BaoZhaBit,?C0009
; 				LoopBaoZhaBit=1;
			; SOURCE LINE # 166
	SETB 	LoopBaoZhaBit
; 				GuanMenBit=0;
			; SOURCE LINE # 167
	CLR  	GuanMenBit
; 				strcat(UsartRecvBzFifo,StrKongGe);
			; SOURCE LINE # 168
	MOV  	DPTR,#?_strcat?BYTE+03H
	MOV  	A,#0FFH
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (StrKongGe)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (StrKongGe)
	MOVX 	@DPTR,A
	MOV  	R3,#01H
	MOV  	R2,#HIGH (UsartRecvBzFifo)
	MOV  	R1,#LOW (UsartRecvBzFifo)
	LCALL	_strcat
; 				MapDrawString(UsartRecvBzFifo);
			; SOURCE LINE # 169
	MOV  	R3,#01H
	MOV  	R2,#HIGH (UsartRecvBzFifo)
	MOV  	R1,#LOW (UsartRecvBzFifo)
	LCALL	_MapDrawString
; 			}			
			; SOURCE LINE # 170
	SJMP 	?C0008
?C0009:
; 			else if (ResetBit){
			; SOURCE LINE # 171
	JNB  	ResetBit,?C0011
; 				ResetBit=0;
			; SOURCE LINE # 172
	CLR  	ResetBit
; 				UartEnd=0;
			; SOURCE LINE # 173
	CLR  	UartEnd
; 	           		MapDrawString(StrHelloBuf);
			; SOURCE LINE # 174
	MOV  	R3,#01H
	MOV  	R2,#HIGH (StrHelloBuf)
	MOV  	R1,#LOW (StrHelloBuf)
	LCALL	_MapDrawString
; 			}			
			; SOURCE LINE # 175
	SJMP 	?C0008
?C0011:
; 			else{
			; SOURCE LINE # 176
; 				strcat(UsartRecvFifo,StrKongGe);
			; SOURCE LINE # 177
	MOV  	DPTR,#?_strcat?BYTE+03H
	MOV  	A,#0FFH
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#HIGH (StrKongGe)
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#LOW (StrKongGe)
	MOVX 	@DPTR,A
	MOV  	R3,#01H
	MOV  	R2,#HIGH (UsartRecvFifo)
	MOV  	R1,#LOW (UsartRecvFifo)
	LCALL	_strcat
; 				MapDrawString(UsartRecvFifo);
			; SOURCE LINE # 178
	MOV  	R3,#01H
	MOV  	R2,#HIGH (UsartRecvFifo)
	MOV  	R1,#LOW (UsartRecvFifo)
	LCALL	_MapDrawString
; 			}
			; SOURCE LINE # 179
?C0008:
; 			UartEnd=0;
			; SOURCE LINE # 180
	CLR  	UartEnd
; 		}
			; SOURCE LINE # 181
	SJMP 	?C0013
?C0006:
; 		else{	
			; SOURCE LINE # 182
; 			if (LoopXianShiBit && LoopBaoZhaBit){
			; SOURCE LINE # 183
	JNB  	LoopXianShiBit,?C0014
	JNB  	LoopBaoZhaBit,?C0014
; 				MapDrawString(UsartRecvBzFifo);
			; SOURCE LINE # 184
	MOV  	R3,#01H
	MOV  	R2,#HIGH (UsartRecvBzFifo)
	MOV  	R1,#LOW (UsartRecvBzFifo)
	LCALL	_MapDrawString
; 			}
			; SOURCE LINE # 185
	SJMP 	?C0015
?C0014:
; 			else{
			; SOURCE LINE # 186
; 				if (GuanMenBit) 
			; SOURCE LINE # 187
	JNB  	GuanMenBit,?C0016
; 				    MapDrawString(UsartRecvFifo);
			; SOURCE LINE # 188
	MOV  	R3,#01H
	MOV  	R2,#HIGH (UsartRecvFifo)
	MOV  	R1,#LOW (UsartRecvFifo)
	LCALL	_MapDrawString
	SJMP 	?C0015
?C0016:
; 				else if (!LoopBaoZhaBit)
			; SOURCE LINE # 189
	JB   	LoopBaoZhaBit,?C0015
;             		MapDrawString(StrHelloBuf);
			; SOURCE LINE # 190
	MOV  	R3,#01H
	MOV  	R2,#HIGH (StrHelloBuf)
	MOV  	R1,#LOW (StrHelloBuf)
	LCALL	_MapDrawString
; 				
; 			}
			; SOURCE LINE # 192
?C0015:
; 			LoopXianShiBit=~LoopXianShiBit;
			; SOURCE LINE # 193
	CPL  	LoopXianShiBit
; 		}
			; SOURCE LINE # 194
?C0013:
; 		temp=0;
			; SOURCE LINE # 195
	CLR  	A
	MOV  	temp?040,A
?C0019:
; 		while (temp<=PingShu && !UartEnd){
			; SOURCE LINE # 196
	MOV  	A,temp?040
	SETB 	C
	SUBB 	A,PingShu
	JNC  	?C0020
	JB   	UartEnd,?C0020
; //		while (temp<=PingShu ){
; 	 	     DataCopy(temp);
			; SOURCE LINE # 198
	MOV  	R7,temp?040
	LCALL	_DataCopy
;    	         MapDrawLeftShift();
			; SOURCE LINE # 199
	LCALL	MapDrawLeftShift
; //    	     MapDrawZhiJie();
; 			temp++;
			; SOURCE LINE # 201
	INC  	temp?040
; 		}
			; SOURCE LINE # 202
	SJMP 	?C0019
?C0020:
; 		WDT_RESET();
			; SOURCE LINE # 203
	LCALL	WDT_RESET
; 	}	// Main loop
			; SOURCE LINE # 204
	LJMP 	?C0004
	RET  	
; END OF main

CSEG	AT	0000BH
	LJMP	Timer0Int

; }
; /*----------------------------------------------*/
; /*----------------------------------------------*/
; /*----------定时扫描----------------------------*/
; void Timer0Int() interrupt 1 using 1{

	RSEG  ?PR?Timer0Int?XSPMAIN
	USING	1
Timer0Int:
	PUSH 	ACC
	PUSH 	DPH
	PUSH 	DPL
	PUSH 	PSW
			; SOURCE LINE # 209
;    static  bit   pCEtemp; 
;    static data unsigned char	DisplayHangShu=0;
; #ifdef ChangJia_ShangHaiKaiLun
;    static data unsigned char	DisplayHangSao=0xc3;
; #endif
; 
;    data unsigned char		i;
;    data unsigned char		ii;
;  
;  
;    	pCEtemp=pCE;					//片选保護
			; SOURCE LINE # 220
	MOV  	C,pCE
	MOV  	pCEtemp?141,C
;    	pCE=0;
			; SOURCE LINE # 221
	CLR  	pCE
;    	TH0=-MSCOUNT>>8;		// 1ms
			; SOURCE LINE # 222
	MOV  	TH0,#0FBH
; 	TL0=-MSCOUNT; 
			; SOURCE LINE # 223
	MOV  	TL0,#034H
; //	if (Timer1Count++>=10){
; //		Timer1Count=0;
; 		LeftShiftDelayCount--;
			; SOURCE LINE # 226
	DEC  	LeftShiftDelayCount
; //	}
; 	if(UartStart){
			; SOURCE LINE # 228
	JNB  	UartStart,?C0022
;     	UartTimerCount--;
			; SOURCE LINE # 229
	MOV  	A,UartTimerCount+01H
	DEC  	UartTimerCount+01H
	JNZ  	?C0139
	DEC  	UartTimerCount
?C0139:
;     		if(UartTimerCount==0) {
			; SOURCE LINE # 230
	MOV  	A,UartTimerCount+01H
	ORL  	A,UartTimerCount
	JNZ  	?C0022
;         	    	UartStep=0;
			; SOURCE LINE # 231
	MOV  	UartStep,A
;             		UartStart=0;
			; SOURCE LINE # 232
	CLR  	UartStart
;         	}
			; SOURCE LINE # 233
;     	}
			; SOURCE LINE # 234
?C0022:
;     	DPH=DptrBakHi;
			; SOURCE LINE # 235
	MOV  	DPH,DptrBakHi
;     	DPL=DptrBakLo;
			; SOURCE LINE # 236
	MOV  	DPL,DptrBakLo
; 	if (DisplayHangShu<HANGSHU){	
			; SOURCE LINE # 237
	MOV  	A,DisplayHangShu?142
	CLR  	C
	SUBB 	A,#010H
	JNC  	?C0024
; 		for (i=0;i<LIEBYTE;i++){
			; SOURCE LINE # 238
	MOV  	i?144,#00H
?C0025:
; //		DispYingXiangBuf[DisplayHangShu][i]=DispYingXiangBuf[DisplayHangShu][i];		
; //		temp=*(p++);		
; 
; #pragma asm
;         MOVX A,@DPTR
	  MOVX A,@DPTR
;         INC DPTR
	  INC DPTR
; #pragma endasm
; 
; //            	DispScan();
; 			for (ii=8;ii>0;ii--){				
			; SOURCE LINE # 248
	MOV  	ii?145,#08H
?C0028:
; 			    pCLK=0;
			; SOURCE LINE # 249
	CLR  	pCLK
; //			    _nop_();
; 				pCLK=1;
			; SOURCE LINE # 251
	SETB 	pCLK
; 			}
			; SOURCE LINE # 252
	DJNZ 	ii?145,?C0028
; 		}
			; SOURCE LINE # 253
?C0027:
	INC  	i?144
	MOV  	A,i?144
	CJNE 	A,#012H,?C0025
?C0026:
; //		pOE=1;
; 		pRCLK=0;
			; SOURCE LINE # 255
	CLR  	pRCLK
; 		pRCLK=1;
			; SOURCE LINE # 256
	SETB 	pRCLK
;         	DptrBakHi=DPH;
			; SOURCE LINE # 257
	MOV  	DptrBakHi,DPH
;         	DptrBakLo=DPL;
			; SOURCE LINE # 258
	MOV  	DptrBakLo,DPL
; 
; //上海凯伦
; #ifdef ChangJia_ShangHaiKaiLun
;         	P3=DisplayHangSao;
			; SOURCE LINE # 262
	MOV  	P3,DisplayHangSao?143
; #endif
; 
; //杭州尖峰
; #ifdef ChangJia_HangZhouJianFeng
; 		pLD=1;
; #endif
; 
; 		DisplayHangShu++;
			; SOURCE LINE # 270
	INC  	DisplayHangShu?142
; 
; #ifdef ChangJia_ShangHaiKaiLun
; 		DisplayHangSao+=0x04;
			; SOURCE LINE # 273
	MOV  	A,#04H
	ADD  	A,DisplayHangSao?143
	MOV  	DisplayHangSao?143,A
; #endif
; 
; 	}
			; SOURCE LINE # 276
	SJMP 	?C0031
?C0024:
; 	else{
			; SOURCE LINE # 277
; 		DisplayHangShu	=0;
			; SOURCE LINE # 278
	MOV  	DisplayHangShu?142,#00H
; 
; #ifdef ChangJia_ShangHaiKaiLun
; 		DisplayHangSao=0xc3;
			; SOURCE LINE # 281
	MOV  	DisplayHangSao?143,#0C3H
; #endif
;         	DptrBakHi=0;
			; SOURCE LINE # 283
	MOV  	DptrBakHi,#00H
;         	DptrBakLo=0;
			; SOURCE LINE # 284
	MOV  	DptrBakLo,#00H
; 
; //杭州尖峰
; #ifdef ChangJia_HangZhouJianFeng
; 		pLD=0;
; #endif
; 	}
			; SOURCE LINE # 290
?C0031:
;    	pCE=pCEtemp;					//片选 
			; SOURCE LINE # 291
	MOV  	C,pCEtemp?141
	MOV  	pCE,C
; }
			; SOURCE LINE # 292
	POP  	PSW
	POP  	DPL
	POP  	DPH
	POP  	ACC
	RETI 	
; END OF Timer0Int

; 
; /*----------------------------------------------*/
; /* Title  : Initialize 				*/
; /* Action :	初始化				*/
; /*----------------------------------------------*/
; void InitAsp(){

	RSEG  ?PR?InitAsp?XSPMAIN
InitAsp:
	USING	0
			; SOURCE LINE # 298
; 	TMOD=0x21;		//定时器1工作在方式2(自动重装载)
			; SOURCE LINE # 299
	MOV  	TMOD,#021H
;     TH0=-MSCOUNT>>8;		// 1ms
			; SOURCE LINE # 300
	MOV  	TH0,#0FBH
;     TL0=-MSCOUNT; 
			; SOURCE LINE # 301
	MOV  	TL0,#034H
; //   IE=0x00;	     		// EA=1,允许定时器0 串行口中断	
;     IE=0x92;	     		// EA=1,允许定时器0 串行口中断	
			; SOURCE LINE # 303
	MOV  	IE,#092H
;     P1=0xFF;
			; SOURCE LINE # 304
	MOV  	P1,#0FFH
;     pCE=0;
			; SOURCE LINE # 305
	CLR  	pCE
; 
; //杭州尖峰
; #ifdef ChangJia_HangZhouJianFeng
;     pLD=0;	
; #endif
; 
; //上海凯伦    
; #ifdef ChangJia_ShangHaiKaiLun
;     P3=0xc3;
			; SOURCE LINE # 314
	MOV  	P3,#0C3H
; #endif
; //    p=&DispBuf[0][0]; 
;     ClrPing(&DispBuf[0]);
			; SOURCE LINE # 317
	MOV  	R3,#01H
	MOV  	R2,#HIGH (DispBuf)
	MOV  	R1,#LOW (DispBuf)
	LCALL	_ClrPing
;     TR0=1;	       			// Start count
			; SOURCE LINE # 318
	SETB 	TR0
;     pOE=0;	
			; SOURCE LINE # 319
	CLR  	pOE
; }
			; SOURCE LINE # 320
	RET  	
; END OF InitAsp

; 
; /*************************************************/
; /*
; void 	MapDrawLeftShift(){
; 	   data unsigned char		i;
; 	   data unsigned char		j;
; 	   data signed char		k;
; 	   data signed char		h;
; 	   data unsigned char		temp;
; 	   data unsigned char		temp1;
; 
; 	for (i=0;i<LIEBYTE;i++){
; 		for (h=7;h>=0;h--){
; 			for (j=0;j<HANGSHU;j++){
; 				temp=DispYingXiangBuf[j][i]>>h;		
; 				for (k=LIEBYTE-1;k>=0;k--){
; 					temp1=DispBuf[j][k];	
; 					DispBuf[j][k]=(temp1<<1)|temp;	
; 					temp=temp1>>7;
; 				}	
; 			}
; 		if (UartEnd) return;
; 		WDT_RESET();
; 		LeftShiftDelayCount=1;
; 		while(LeftShiftDelayCount);	
; 		}
; 	}			
; }*/
; 
; void MapDrawZhiJie(){

	RSEG  ?PR?MapDrawZhiJie?XSPMAIN
MapDrawZhiJie:
	USING	0
			; SOURCE LINE # 350
; 	 	memcpy(DispBuf,DispYingXiangBuf,HANGSHU*LIEBYTE);
			; SOURCE LINE # 351
	MOV  	R0,#LOW (DispBuf)
	MOV  	R4,#HIGH (DispBuf)
	MOV  	R5,#01H
	MOV  	R3,#01H
	MOV  	R2,#HIGH (DispYingXiangBuf)
	MOV  	R1,#LOW (DispYingXiangBuf)
	MOV  	R6,#01H
	MOV  	R7,#020H
	LCALL	?C?COPY
; 		LeftShiftDelayCount=255;
			; SOURCE LINE # 352
	MOV  	LeftShiftDelayCount,#0FFH
?C0034:
; 		while(LeftShiftDelayCount)	WDT_RESET();	
			; SOURCE LINE # 353

⌨️ 快捷键说明

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