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

📄 u_common.c

📁 The combined demo is dedicated for S1C33L05, so DMT33L05 should be used to load and run the demo. F
💻 C
📖 第 1 页 / 共 2 页
字号:
		}
	}
	
	if (debugcounts[i].len == 0) {
		/*  */
		if ((sci_rxdata[0] == 'R' || sci_rxdata[0] == 'r') && sci_rxdata[1] == ' ') {
			p = ishex(sci_rxdata + 2,&addr);
			if (p != NULL && *p == '\0') {
				data = (unsigned long)(*((volatile BYTE *)addr));
				rsprinthex("\r\nAddress ",addr,4);
				rsprinthex(":",data,1);
				rsprint("\r\n>");
			} else {
				rsprint("\r\n>");
			}
		} else if ((sci_rxdata[0] == 'W' || sci_rxdata[0] == 'w') && sci_rxdata[1] == ' ') {
			p = ishex(sci_rxdata + 2,&addr);
			if (p != NULL && *p == ' ') {
				p = ishex(p + 1,&data);
				if (p != NULL && *p == '\0') {
					*(volatile BYTE *)addr = (BYTE)data;
					data = (unsigned long)(*((volatile BYTE *)addr));
					rsprinthex("\r\nAddress ",addr,4);
					rsprinthex(":",data,1);
					rsprint("\r\n>");
				} else {
					rsprint("\r\n>");
				}
			} else {
				rsprint("\r\n>");
			}
		} else if (sci_rxdata[0] == 'D' || sci_rxdata[0] == 'd') {
			if (sci_rxdata[1] == '\0') {
				rs232c_flag.rs232c_tx = 1;
				rs232c_dumpline = 0;
			} else if (sci_rxdata[1] == ' ') {
				p = ishex(sci_rxdata + 2,&addr);
				if (p != NULL && *p == '\0') {
					rs232c_flag.rs232c_tx = 1;
					rs232c_dumpaddr = addr;
					rs232c_dumpline = 0;
				} else {
					rsprint("\r\n>");
				}
			} else {
				rsprint("\r\n>");
			}
		} else if (rsicmp(sci_rxdata,"?",2) == 0) {
			rsprint("\r\nr xxx");
			rsprint("\r\nc xxx");
			rsprint("\r\nd xxx");
			rsprint("\r\nw xxx");
			for (i = 0;debugcounts[i].len > 0;i++) {
				rsprint("\r\n  ");
				rsprint(debugcounts[i].name);
			}
			rsprint("\r\nlist    - It displays all error counts.");
			rsprint("\r\nallzero - It clears all error counts.");
			rsprint("\r\nmsgon   - It displays a debugging message.");
			rsprint("\r\nmsgoff  - It prohibits indication of a debugging message.");
			rsprint("\r\n>");
		} else if (rsicmp(sci_rxdata,"List",5) == 0) {
			rsprint("\r\n");
			for (i = 0;debugcounts[i].len > 0;i++) {
				rsprint(debugcounts[i].name);
				rsprinthex(" = ",*(debugcounts[i].dwcount),4);
				rsprint("\r\n>");
			}
		} else if (rsicmp(sci_rxdata,"allzero",8) == 0) {
			rsprint("\r\n");
			for (i = 0;debugcounts[i].len > 0;i++) {
				*(debugcounts[i].dwcount) = 0;
				rsprint(debugcounts[i].name);
				rsprinthex(" = ",*(debugcounts[i].dwcount),4);
				rsprint("\r\n>");
			}
		} else if (rsicmp(sci_rxdata,"MSGON",6) == 0) {
			sci_msgon = 1;
			rsprint("\r\nDebug Message ON\r\n>");
		} else if (rsicmp(sci_rxdata,"MSGOFF",7) == 0) {
			sci_msgon = 0;
			rsprint("\r\nDebug Message OFF\r\n>");
		} else {
				rsprint("\r\n>");
		}
	}

	di();
	sci_rxoffset = 0;
	sci_rxdata[0] = 0x00;
	ei();
}
#if 1
/*****************************************************************************
 *
 *     RS232C 
 *     
 *   
 * 
 *****************************************************************************/
void rs232c_dump(void)
{
	int i,j;
	volatile BYTE *p;

	if (sci_txbusy == 0) {
		rsprinthex("\r\n ",rs232c_dumpaddr,4);
		rsprint(" : ");
		while (sci_txbusy == 1);
		for (i = 0,j = 0;i < (rs232c_dumpaddr & 0x0F) && rs232c_dumpline == 0;i++,j+=3) {
			sci_txdata[j+0] = ' ';
			sci_txdata[j+1] = ' ';
			sci_txdata[j+2] = ' ';
		}
		p = (volatile BYTE *)rs232c_dumpaddr;
		for (;i < 0x10;i++,j+=3,p++,rs232c_dumpaddr++) {
			sci_txdata[j+0] = hexstr[((*p >> 4) & 0x0F)];
			sci_txdata[j+1] = hexstr[(*p & 0x0F)];
			sci_txdata[j+2] = ' ';
		}
		sci_txdata[j+0] = '\0';
		o_rs232c();
		rs232c_dumpline++;
	}
	
	if (rs232c_dumpline > 7) {
		sci_txdata[j+0] = '\r';
		sci_txdata[j+1] = '\n';
		sci_txdata[j+2] = '>';
		sci_txdata[j+3] = '\0';
		o_rs232c();

		/* End of dump */
		rs232c_flag.rs232c_tx = 0;
	}
}
/*****************************************************************************
 *
 *     RS232C 
 *     
 *   
 * 
 *****************************************************************************/
void rs232c_printversion(void)
{
	int i,j;
	static char date[]= __DATE__;

	sci_txdata[0] = '\r';
	sci_txdata[1] = '\n';
	for (i = 2,j = 2;j < string2_desc[0];i++,j+=2) {
		sci_txdata[i] = string2_desc[j];
	}
	sci_txdata[i+0] = ' ';
	sci_txdata[i+1] = '\0';
	o_rs232c();

	while (sci_txbusy == 1)
		;
	
	for (i = 0,j = 2;j < string3_desc[0];i++,j+=2) {
		sci_txdata[i] = string3_desc[j];
	}
	sci_txdata[i+0] = ' ';
	sci_txdata[i+1] = '\0';
	o_rs232c();

	while (sci_txbusy == 1)
		;
	
	sci_txdata[0] = '[';
	for (i = 1,j = 0;date[j] != '\0';i++,j++) {
		sci_txdata[i] = date[j];
	}
	sci_txdata[i+0] = ']';
	sci_txdata[i+1] = '\r';
	sci_txdata[i+2] = '\n';
	sci_txdata[i+3] = '>';
	sci_txdata[i+4] = '\0';
	o_rs232c();
	
	while (sci_txbusy == 1)
		;
	
}
#endif
/*****************************************************************************
 *
 *     RS232C 
 *     
 *   
 * 
 *****************************************************************************/
void rs232c_enable(int enable)
{
	if (enable) {
		pINT_FSIF = 0x07;		/*  */

		bINT_ESIF_ESERR0 = 1;	/*  */
		bINT_ESIF_ESRX0 = 1;

		bSIF0_CTL_RXEN0 = 1;		/*  */
		sci_rxoffset = 0;
	} else {
		bINT_ESIF_ESERR0 = 0;
		bINT_ESIF_ESRX0 = 0;
	}

}
/*****************************************************************************
 *
 *			: 16
 *			: 16
 *			: 1616NULL
 *		: 
 *
 *****************************************************************************/
char *ishex(char *str,unsigned long *lp)
{
	BYTE c;
	unsigned long temp = 0;
	char *ret = NULL;
	int i;
	
	if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X')) {
		str+=2;
	}

	for (i = 0;i < 8;i++) {
		if (str[i] == '\0' || str[i] == ' ') break;
		c = toupper(str[i]);
		if (c >= '0' && c <= '9') {
			temp <<= 4;
			temp += (c - '0');
		} else if (c >= 'A' && c <= 'F') {
			temp <<= 4;
			temp += (c - ('A' - 10));
		} else {
			break;
		}
	}
	
	if (i > 0 && (str[i] == '\0' || str[i] == ' ')) {
		ret = (str + i);
		*lp = temp;
	}

	return ret;
}

/*****************************************************************************
 *
 *			: 
 *			: 
 *			: 
 *		: 
 *
 *****************************************************************************/
int rsicmp(char *str1,char *str2,int len)
{
	char c1,c2;
	
	while (len) {
		c1 = toupper(*str1);
		c2 = toupper(*str2);
		if (c1 == c2) {
			len--;
			str1++;
			str2++;
		} else {
			break;
		}
	}
	
	return len;
}
/*****************************************************************************
 *
 *			: 
 *			: 
 *			: 
 *		: sci_txdata	
 *				  sci_txoffset	
 *				  sci_txbusy	
 *
 *****************************************************************************/
void rsprint(char *str)
{
	int i;
	while (sci_txbusy == 1)
		;
	
	for (i = 0;i < 63;i++) {
		sci_txdata[i] = *str;
		if (*str == '\0') break;
		str++;
	}
	
	o_rs232c();
}
#ifdef MSGPRINT_ON
/*****************************************************************************
 *
 *			: 
 *			: 
 *			: 
 *		: sci_txdata	
 *				  sci_txoffset	
 *				  sci_txbusy	
 *				  sci_msgon 	
 *
 *****************************************************************************/
void rsmsgprint(char *str)
{
	int i;
	
	if (sci_msgon == 1) {
		while (sci_txbusy == 1)
			;
		
		for (i = 0;i < 63;i++) {
			sci_txdata[i] = *str;
			if (*str == '\0') break;
			str++;
		}
		
		o_rs232c();
	}
}
#endif
/*****************************************************************************
 *
 *			: (16)
 *			: 
 *			: 
 *		: sci_txdata	
 *				  sci_txoffset	
 *				  sci_txbusy	
 *
 *****************************************************************************/
void rsprinthex(char *str,unsigned long hex,int size)
{
	int i;
	
	while (sci_txbusy == 1)
		;
	
	for (i = 0;i < 63;i++) {
		sci_txdata[i] = *str;
		if (*str == '\0') break;
		str++;
	}
	
	for (;i < 62;i+=2) {
		if (size == 0) break;
		sci_txdata[i+0] = hexstr[(hex >> ((size - 1) * 8) + 4) & 0x0F];
		sci_txdata[i+1] = hexstr[(hex >> ((size - 1) * 8) + 0) & 0x0F];
		size--;
	}
	sci_txdata[i] = '\0';
	o_rs232c();
}
#ifdef MSGPRINT_ON
/*****************************************************************************
 *
 *			: (16)
 *			: 
 *			: 
 *		: sci_txdata	
 *				  sci_txoffset	
 *				  sci_txbusy	
 *
 *****************************************************************************/
void rsmsgprinthex(char *str,unsigned long hex,int size)
{
	int i;
	
	if (sci_msgon == 1) {
		while (sci_txbusy == 1)
			;
		
		for (i = 0;i < 63;i++) {
			sci_txdata[i] = *str;
			if (*str == '\0') break;
			str++;
		}
		
		for (;i < 62;i+=2) {
			if (size == 0) break;
			sci_txdata[i+0] = hexstr[(hex >> ((size - 1) * 8) + 4) & 0x0F];
			sci_txdata[i+1] = hexstr[(hex >> ((size - 1) * 8) + 0) & 0x0F];
			size--;
		}
		sci_txdata[i] = '\0';
		o_rs232c();
	}
}
#endif
/*****************************************************************************
 *
 *			: 
 *			: 
 *			: 
 *		: sci_txdata	
 *				  sci_txoffset	
 *				  sci_txbusy	
 *
 *****************************************************************************/
void o_rs232c(void)
{
	unsigned char temp;
	
	if (sci_txbusy == 0 && sci_txdata[0] != '\0') {
		di();
		bSIF0_CTL_TXEN0 = 1;		/*  */
		pSIF0_TXD = sci_txdata[0];
		sci_txoffset = 1;
		sci_txbusy = 1;

		ei();
	}
}

#endif /* DEBUG_PRINT */

⌨️ 快捷键说明

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