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

📄 main.c

📁 c51单片机的串口程序
💻 C
字号:
/*****************************************************************************
|*
|*  Copyright (c) 2001 TASKING, Inc.
|*
|*  Description:
|*
|*	This module shows an example of how to initialize
|*      and use the serial port.
|*
 ****************************************************************************/
#pragma romstring
#include "serial.h"
#include "reg51.sfr"
_rom char *str_prompt        = ">>";
_rom char *str_startup       = "Compal communication inc.\n";
_rom char *str_version	     = "Charles_Wu RF station ver 1.40 xxon xxoff r00-03 alloff fxx? rst_fk pass bad clear side\n";
_rom char *str_f4press 	     = "f04press\n";
_rom char *str_f5press 	     = "f05press\n";
_rom char *str_f8press 	     = "f08press\n";
_rom char *str_rst_f_k 	     = "reset_fk\n";
_rom char *str_nokeypress    = "nokeyprs\n";
_rom char *str_unknown_cmd   = "unknwcmd\n";
_rom char *str_ok_cmd        = "cmdexeok\n";
_rom char *str_right_side    = "right_sd\n";
_rom char *str_left_side     = "left_sid\n";


unsigned char flag_TI        = 0;
unsigned char flag_xoff_sent = 0;
unsigned char flag_stopped   = 0;
unsigned char flag_send_xoff = 0;
unsigned char flag_ctrlC     = 0;
unsigned char key_f4_prs     = 0;
unsigned char key_f5_prs     = 0;
unsigned char key_f8_prs     = 0;

unsigned char se_buf[INPUT_BUFFER_SIZE+1];
char se_buf_in;
char se_buf_out;

unsigned char cmdline[COMMAND_LINE_SIZE];
unsigned char *cmdline_ptr;
char cmdindex;

/*****************************************************************************
|*
|*  Function:           romstrcmp
|*
|*  Description:
|*
|*      This special version of strcmp compares a string in data with a
|*      string located in ROM.
|*
 */
int
romstrcmp( const char *s1, _rom const char *s2 )
{
    register char res;

    while( !(res = (*s1 - *s2++)) && *s1++ )
    	;

    return( res );
}


/*****************************************************************************
|*
|*  Function:           main
|*
|*  Description:
|*
|*      Main function, initializes serial port and starts command sequence.
|*
 */
void
main( void )
{
	key_f4_prs     = 0;
	key_f5_prs     = 0;
	key_f8_prs     = 0;

	P2 = 1;
	P0 = 0;
	EA = 1;                         /* globally enable serial interrupts */
	se_initialize_port();           /* initialize the serial port */
	se_print( str_startup );	/* Print the startup message */
	while ( 1 )
	{
		se_print( str_prompt ); /* print the prompt */
		se_getline();           /* and read a command */
		/* check which command has being entered */

/*
		if ( !romstrcmp( (const char *)cmdline, "00on" ) )
		{	P2_0 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "00off" ) )
		{	P2_0 = 0;	       	
			se_print( str_ok_cmd );
		}
		else 
*/

		if ( !romstrcmp( (const char *)cmdline, "01on" ) )
		{	P2_1 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "01off" ) )
		{	P2_1 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "02on" ) )
		{	P2_2 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "02off" ) )
		{	P2_2 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "03on" ) )
		{	P2_3 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "03off" ) )
		{	P2_3 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "04on" ) )
		{	P2_4 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "04off" ) )
		{	P2_4 = 0;
			se_print( str_ok_cmd );
	       	}
		else 


/*


		if ( !romstrcmp( (const char *)cmdline, "05on" ) )
		{	P2_5 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "05off" ) )
		{	P2_5 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "06on" ) )
		{	P2_6 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "06off" ) )
		{	P2_6 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "07on" ) )
		{	P2_7 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "07off" ) )
		{	P2_7 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		//
		if ( !romstrcmp( (const char *)cmdline, "08on" ) )
		{	P0_0 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "08off" ) )
		{	P0_0 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		//
		if ( !romstrcmp( (const char *)cmdline, "09on" ) )
		{	P0_1 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "09off" ) )
		{	P0_1 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		//
		if ( !romstrcmp( (const char *)cmdline, "10on" ) )
		{	P0_2 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "10off" ) )
		{	P0_2 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		//
		if ( !romstrcmp( (const char *)cmdline, "11on" ) )
		{	P0_3 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "11off" ) )
		{	P0_3 = 0;
			se_print( str_ok_cmd );
	       	}
		else 

*/



		//



/*

		if ( !romstrcmp( (const char *)cmdline, "12on" ) )
		{	P0_4 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "12off" ) )
		{	P0_4 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		//
		if ( !romstrcmp( (const char *)cmdline, "13on" ) )
		{	P0_5 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "13off" ) )
		{	P0_5 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		//
		if ( !romstrcmp( (const char *)cmdline, "14on" ) )
		{	P0_6 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "14off" ) )
		{	P0_6 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		//
		if ( !romstrcmp( (const char *)cmdline, "15on" ) )
		{	P0_7 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "15off" ) )
		{	P0_7 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		//
*/




		if ( !romstrcmp( (const char *)cmdline, "alloff" ) )
		{
			P2 = 1;
			P0 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "clear" ) )
		{
			P0_0 = 1;
			P0_1 = 1;
			P0_3 = 0;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "pass" ) )
		{
			P0_0 = 1;
			P0_1 = 0;
			P0_3 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "bad" ) )
		{
			P0_0 = 0;
			P0_1 = 1;
			P0_3 = 1;
			se_print( str_ok_cmd );
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "f04?" ) )
		{
			if(key_f4_prs == 1)
			{
			 se_print( str_f4press );
			 P1_5 = 1;
			}
			else
			{
			 se_print( str_nokeypress );
			}
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "f05?" ) )
		{
			if(key_f5_prs == 1)
			{
			 se_print( str_f5press );
			 P1_4 = 1;
			}
			else
			{
			 se_print( str_nokeypress );
			}
	       	}
		else 
		if ( !romstrcmp( (const char *)cmdline, "f08?" ) )
		{
			if(key_f8_prs == 1)
			{
			 se_print( str_f8press );
			 P1_3 = 1;
			}
			else
			{
			 se_print( str_nokeypress );
			}
	       	}
		else 

		if ( !romstrcmp( (const char *)cmdline, "rst_fk" ) )
		{
			 se_print( str_rst_f_k );
			 key_f4_prs = 0;
			 key_f5_prs = 0;
			 key_f8_prs = 0;
	       	}
		else 

		if ( !romstrcmp( (const char *)cmdline, "ver?" ) )
		{
			 se_print( str_version );
	       	}
		else

		if ( !romstrcmp( (const char *)cmdline, "side?" ) )
		{
			if(P1_6 == 0)
			{
				 se_print( str_right_side );
			}
			else
			{
				 se_print( str_left_side );
			}
	       	}
		else

		{
			se_print( str_unknown_cmd );
		}
	}
}

⌨️ 快捷键说明

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