我用串行助手以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,怎么可能保存两位的十六进制数?应该说是用数组中的一组数据(一字节)来保存接收到的数据