📄 u_common.c
字号:
}
}
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 + -