TI中文支持网
TI专业的中文技术问题搜集分享网站

我用串行助手以hex的形式向MSP430单片机发送数据,每次只发送一组数据,比如十六进制的40,然后用一个数组中的一位来保存,那么这个时候数组中保存的是什么?怎样才能把它读出来实现16进制转换10进制? 这是我的代码

我用串行助手以hex的形式向MSP430单片机发送数据,每次只发送一组数据,比如十六进制的40,然后用一个数组中的一位来保存,那么这个时候数组中保存的是什么?怎样才能把它读出来实现16进制转换10进制?
这是我的代码

#pragma vector = UART0RX_VECTOR
__interrupt void UART0_RXISR(void)
{

Data1[count1]=RXBUF0; //数据存入Data数组中

// TXBUF0 =RXBUF0; 

if(Data1[count1++]==0) //是否到达末尾
{

for(j1=0;j1<count1;j1++)
{ Buffer1[j1]=Data1[j1]; }//复制字符串

}

Data32[0]=Data1[0];
long v=hexToDec(Data32);

if(v==64) 

P2OUT = 0x7f; 
send_string("led is on"); 
flag=1; 

}
if(v==72) 

P2OUT = 0xff; 
send_string("led is off"); 
flag=1; 

}
}

/* 十六进制数转换为十进制数 */
long hexToDec(char *source)
{
long sum = 0;
long t = 1;
int i, len;
len = strlen(source);
for(i=len-1; i>=0; i–)
{
sum += t * getIndexOfSigns(*(source + i));
t *= 16;
}

return sum;
}
/* 返回ch字符在sign数组中的序号 */
int getIndexOfSigns(char ch)
{
if(ch >= '0' && ch <= '9')
{
return ch – '0';
}
if(ch >= 'A' && ch <='F')
{
return ch – 'A' + 10;
}
if(ch >= 'a' && ch <= 'f')
{
return ch – 'a' + 10;
}
return -1;

灰小子:

数组里存储的就是16进制数

你可以通过串口把数组里的数发送到串口助手观察一下

Susan Yang:

串行助手以hex的形式向MSP430单片机发送数据,数组里存储的是16进制数. 关于进制转换,您可以看一下E2E上的帖子
e2e.ti.com/…/653001

user726315:

回复 Susan Yang:

数组中的一位来保存两位的十六进制数?这种说法不对吧,一位只有两种状态,0和1,怎么可能保存两位的十六进制数?应该说是用数组中的一组数据(一字节)来保存接收到的数据

赞(0)
未经允许不得转载:TI中文支持网 » 我用串行助手以hex的形式向MSP430单片机发送数据,每次只发送一组数据,比如十六进制的40,然后用一个数组中的一位来保存,那么这个时候数组中保存的是什么?怎样才能把它读出来实现16进制转换10进制? 这是我的代码
分享到: 更多 (0)