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

📄 uart.lst

📁 8052串口驱动--(包括波特率计算,以及几个内存查看的shell命令)
💻 LST
📖 第 1 页 / 共 2 页
字号:
 342   2      		else
 343   2      		{
 344   3      			CmdError();
 345   3      			return;
 346   3      		}
 347   2      	}
 348   1      
 349   1      	Cmd[2] = (Cmd[2] << 4) & 0xf0;
 350   1      	Cmd[3] = Cmd[3] & 0x0f;
 351   1      
 352   1      	ch = Cmd[2] | Cmd[3];
 353   1      
 354   1      	pchar = ch;
*** WARNING 259 IN LINE 354 OF UART.C: '=': pointer: different mspace
 355   1      
 356   1      	for (j=0; j<8; j++)
 357   1      	{
 358   2      		sprintf(buffer, "0x%02x: ", (unsigned) ch);
 359   2      		PrintStr(buffer);
 360   2      		for (i = 0; i < 16; i++)
 361   2      		{
 362   3      			sprintf(buffer, "%02x ", (unsigned) *pchar++);
 363   3      			PrintStr(buffer);
 364   3      		}
 365   2      		PrintStr("\n");
 366   2      		ch = (ch + 16) % 256;
 367   2      	}
 368   1      }
 369          
 370          
 371          void CmdDC()
 372          {
 373   1      	int i, j;
 374   1      	unsigned char code * pchar;         // memory access pointer
 375   1      	unsigned int ch;
 376   1      	unsigned char buffer[100];
 377   1      
 378   1      	if (Cmd[6] != '\0')
 379   1      	{
 380   2      		CmdError();
 381   2      		return;
 382   2      	}
 383   1      	
 384   1      	for (i=2; i<=5; i++)
 385   1      	{
 386   2      		if ((Cmd[i] >= '0' && Cmd[i] <='9') || (Cmd[i] >= 'a' && Cmd[i] <='f') 
 387   2      			|| (Cmd[i] >= 'A' && Cmd[i] <='F'))
 388   2      		{
C51 COMPILER V4.01,  UART                                                                  06/10/05  11:07:07  PAGE 7   

 389   3      			if ((Cmd[i] >= 'a' && Cmd[i] <='f') || (Cmd[i] >= 'A' && Cmd[i] <='F'))
 390   3      				Cmd[i] += 9;
 391   3      		}
 392   2      		else
 393   2      		{
 394   3      			CmdError();
 395   3      			return;
 396   3      		}
 397   2      	}
 398   1      
 399   1      	Cmd[2] = (Cmd[2] << 4) & 0xf0;
 400   1      	Cmd[3] = Cmd[3] & 0x0f;
 401   1      	Cmd[4] = (Cmd[4] << 4) & 0xf0;
 402   1      	Cmd[5] = Cmd[5] & 0x0f;
 403   1      	
 404   1      	Cmd[2] = Cmd[2] | Cmd[3];
 405   1      	Cmd[4] = Cmd[4] | Cmd[5];
 406   1      
 407   1      
 408   1      	ch = (unsigned int)Cmd[2] & 0x00ff;
 409   1      	ch = (ch << 8) | ((unsigned int)Cmd[4] & 0x00ff);
 410   1      
 411   1      	pchar = ch;
*** WARNING 259 IN LINE 411 OF UART.C: '=': pointer: different mspace
 412   1      
 413   1      	for (j=0; j<8; j++)
 414   1      	{
 415   2      		sprintf(buffer, "0x%04x: ", (unsigned) ch);
 416   2      		PrintStr(buffer);
 417   2      		for (i = 0; i < 16; i++)
 418   2      		{
 419   3      			sprintf(buffer, "%02x ", (unsigned) *pchar++);
 420   3      			PrintStr(buffer);
 421   3      		}
 422   2      		PrintStr("\n");
 423   2      		ch = (ch + 16) % 0xffff;
 424   2      	}
 425   1      }
 426          
 427          
 428          void CmdDX()
 429          {
 430   1      	int i, j;
 431   1      	unsigned char xdata * pchar;         // memory access pointer
 432   1      	unsigned int ch;
 433   1      	unsigned char buffer[100];
 434   1      
 435   1      	if (Cmd[5] != '\0')
 436   1      	{
 437   2      		CmdError();
 438   2      		return;
 439   2      	}
 440   1      	
 441   1      	for (i=2; i<=4; i++)
 442   1      	{
 443   2      		if ((Cmd[i] >= '0' && Cmd[i] <='9') || (Cmd[i] >= 'a' && Cmd[i] <='f') 
 444   2      			|| (Cmd[i] >= 'A' && Cmd[i] <='F'))
 445   2      		{
 446   3      			if ((Cmd[i] >= 'a' && Cmd[i] <='f') || (Cmd[i] >= 'A' && Cmd[i] <='F'))
 447   3      				Cmd[i] += 9;
 448   3      		}
 449   2      		else
 450   2      		{
 451   3      			CmdError();
 452   3      			return;
 453   3      		}
C51 COMPILER V4.01,  UART                                                                  06/10/05  11:07:07  PAGE 8   

 454   2      	}
 455   1      
 456   1      	Cmd[2] = Cmd[2] & 0x0f;
 457   1      	Cmd[3] = (Cmd[3] << 4) & 0xf0;
 458   1      	Cmd[4] = Cmd[4] & 0x0f;
 459   1      	
 460   1      	Cmd[3] = Cmd[3] | Cmd[4];
 461   1      
 462   1      
 463   1      	ch = (unsigned int)Cmd[2] & 0x00ff;
 464   1      	ch = (ch << 8) | ((unsigned int)Cmd[3] & 0x00ff);
 465   1      
 466   1      	pchar = ch;
 467   1      
 468   1      	for (j=0; j<8; j++)
 469   1      	{
 470   2      		sprintf(buffer, "0x%03x: ", (unsigned) ch);
 471   2      		PrintStr(buffer);
 472   2      		for (i = 0; i < 16; i++)
 473   2      		{
 474   3      			sprintf(buffer, "%02x ", (unsigned) *pchar++);
 475   3      			PrintStr(buffer);
 476   3      		}
 477   2      		PrintStr("\n");
 478   2      		ch = (ch + 16) % 0xfff;
 479   2      	}
 480   1      }
 481          
 482          
 483          /****************************************************************************************
 484          *   功能: M命令功能函数,修改memory内容
 485          *		  CmdMI(): 修改内部RAM
 486          **		  CmdMX(): 修改外部RAM
 487          *   参数: 无
 488          ****************************************************************************************/
 489          void CmdMI();
 490          void CmdMX();
 491          
 492          void CmdM()
 493          {
 494   1      	switch (Cmd[1])
 495   1      	{
 496   2      	case 'i' :
 497   2      		CmdMI();
 498   2      		break;
 499   2      	case 'x' :
 500   2      		CmdMX();
 501   2      		break;
 502   2      	default :
 503   2      		CmdError();
 504   2      		break;
 505   2      	}
 506   1      }
 507          
 508          
 509          void CmdMI()
 510          {
 511   1      	int i;
 512   1      	unsigned char idata * pchar;         // memory access pointer
 513   1      	unsigned char ch1, ch2, ch3;
 514   1      
 515   1      	if (Cmd[8] != '\0')
 516   1      	{
 517   2      		CmdError();
 518   2      		return;
 519   2      	}
C51 COMPILER V4.01,  UART                                                                  06/10/05  11:07:07  PAGE 9   

 520   1      
 521   1      	for (i=2; i<=7; i++)
 522   1      	{
 523   2      		if ((Cmd[i] >= '0' && Cmd[i] <='9') || (Cmd[i] >= 'a' && Cmd[i] <='f') 
 524   2      			|| (Cmd[i] >= 'A' && Cmd[i] <='F'))
 525   2      		{
 526   3      			if ((Cmd[i] >= 'a' && Cmd[i] <='f') || (Cmd[i] >= 'A' && Cmd[i] <='F'))
 527   3      				Cmd[i] += 9;
 528   3      		}
 529   2      		else
 530   2      		{
 531   3      			CmdError();
 532   3      			return;
 533   3      		}
 534   2      	}
 535   1      	Cmd[2] = (Cmd[2] << 4) & 0xf0;
 536   1      	Cmd[3] = Cmd[3] & 0x0f;
 537   1      	ch1 = Cmd[2] | Cmd[3];
 538   1      
 539   1      	Cmd[4] = (Cmd[4] << 4) & 0xf0;
 540   1      	Cmd[5] = Cmd[5] & 0x0f;
 541   1      	ch2 = Cmd[4] | Cmd[5];
 542   1      
 543   1      	Cmd[6] = (Cmd[6] << 4) & 0xf0;
 544   1      	Cmd[7] = Cmd[7] & 0x0f;
 545   1      	ch3 = Cmd[6] | Cmd[7];
 546   1      
 547   1      	for (pchar=ch1; pchar<=ch2; pchar++)
*** WARNING 259 IN LINE 547 OF UART.C: '=': pointer: different mspace
 548   1      	{
 549   2      		*pchar = ch3;
 550   2      	}
 551   1      
 552   1      	PrintStr("Momery modify successful!\n");
 553   1      }
 554          
 555          
 556          void CmdMX()
 557          {
 558   1      	int i;
 559   1      	unsigned char xdata * pchar;         // memory access pointer
 560   1      	unsigned int ch1, ch2;
 561   1      	unsigned char ch3;
 562   1      
 563   1      	if (Cmd[10] != '\0')
 564   1      	{
 565   2      		CmdError();
 566   2      		return;
 567   2      	}
 568   1      
 569   1      	for (i=2; i<=9; i++)
 570   1      	{
 571   2      		if ((Cmd[i] >= '0' && Cmd[i] <='9') || (Cmd[i] >= 'a' && Cmd[i] <='f') 
 572   2      			|| (Cmd[i] >= 'A' && Cmd[i] <='F'))
 573   2      		{
 574   3      			if ((Cmd[i] >= 'a' && Cmd[i] <='f') || (Cmd[i] >= 'A' && Cmd[i] <='F'))
 575   3      				Cmd[i] += 9;
 576   3      		}
 577   2      		else
 578   2      		{
 579   3      			CmdError();
 580   3      			return;
 581   3      		}
 582   2      	}
 583   1      	Cmd[2] = Cmd[2] & 0x0f;
 584   1      	Cmd[3] = (Cmd[3] << 4) & 0xf0;
C51 COMPILER V4.01,  UART                                                                  06/10/05  11:07:07  PAGE 10  

 585   1      	Cmd[4] = Cmd[4] & 0x0f;
 586   1      	
 587   1      	Cmd[3] = Cmd[3] | Cmd[4];
 588   1      	ch1 = (unsigned int)Cmd[2] & 0x00ff;
 589   1      	ch1 = (ch1 << 8) | ((unsigned int)Cmd[3] & 0x00ff);	
 590   1      
 591   1      	Cmd[5] = Cmd[5] & 0x0f;
 592   1      	Cmd[6] = (Cmd[6] << 4) & 0xf0;
 593   1      	Cmd[7] = Cmd[7] & 0x0f;
 594   1      	
 595   1      	Cmd[6] = Cmd[6] | Cmd[7];
 596   1      	ch2 = (unsigned int)Cmd[5] & 0x00ff;
 597   1      	ch2 = (ch2 << 8) | ((unsigned int)Cmd[6] & 0x00ff);
 598   1      
 599   1      	Cmd[8] = (Cmd[8] << 4) & 0xf0;
 600   1      	Cmd[9] = Cmd[9] & 0x0f;
 601   1      	ch3 = Cmd[8] | Cmd[9];
 602   1      
 603   1      
 604   1      	for (pchar=ch1; pchar<=ch2; pchar++)
 605   1      	{
 606   2      		*pchar = ch3;
 607   2      	}
 608   1      
 609   1      	PrintStr("Momery modify successful!\n");
 610   1      }
 611          
 612          
 613          /****************************************************************************************
 614          *   功能: 帮助命令
 615          *   参数: 无
 616          ****************************************************************************************/
 617          void CmdH(void)
 618          {
 619   1      	if ((Cmd[0] == '?' && Cmd[1] == '\0')
 620   1      	    || (Cmd[1] == 'e' && Cmd[2] == 'l' && Cmd[3] == 'p' && Cmd[4] == '\0'))
 621   1      	{
 622   2      		PrintStr("  di [adr]              读idata内容,adr为2位16进制数\n");
 623   2      		PrintStr("  dc [adr]              读code内容,adr为4位16进制数\n");
 624   2      		PrintStr("  dx [adr]              读xdata内容,adr为3位16进制数\n");
 625   2      		PrintStr("  mi [adr] [adr] [data] 修改idata内容,adr,data为2位16进制数\n");
 626   2      		PrintStr("  mc [adr] [adr] [data] 修改code内容,adr为4位16进制数\n");
 627   2      		PrintStr("  mx [adr] [adr] [data] 修改xdata内容,adr为3位16进制数\n");
 628   2      		PrintStr("  help / ?              列出帮助信息\n");
 629   2      	}
 630   1      	else
 631   1      		CmdError();	
 632   1      }
 633          
 634          
 635          main()
 636          {
 637   1      	unsigned char combuf[32];
 638   1      	uartInit();
 639   1      	
 640   1      	Welcome();
 641   1      	
 642   1      	Cmd[0] = '?';
 643   1      	Cmd[1] = '\0';
 644   1      	CmdH();
 645   1      	
 646   1      	CmdLine();
 647   1      	while(1)
 648   1      	{
 649   2      		while(!RIflag);
 650   2      		if(readRxBuf(combuf))
C51 COMPILER V4.01,  UART                                                                  06/10/05  11:07:07  PAGE 11  

 651   2      		{
 652   3      			parse(combuf, Cmd);
 653   3      			switch(Cmd[0])
 654   3      			{
 655   4      				case 'd':
 656   4      					CmdD();
 657   4      					break;
 658   4      				case 'm':
 659   4      					CmdM();
 660   4      					break;
 661   4      				case 'h':
 662   4      				case '?':
 663   4      					CmdH();
 664   4      					break;
 665   4      				default:
 666   4      					CmdError();
 667   4      					break;						
 668   4      			}
 669   3      			CmdLine();
 670   3      		}
 671   2      	}
 672   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   5477    ----
   CONSTANT SIZE    =    707    ----
   XDATA SIZE       =   1485    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  3 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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