原本打算发送 7E 01 01 00 01 01 04 0D
原来程序是:
调用:SendString_PH_START("7E 01 01 00 01 01 04 0D");
定义:
void SendString_PH_START(uchar *ptr)
{
for(int j=0;j<24;j++)
{
while (!(IFG2 & UTXIFG1));
TXBUF1 = *ptr++;
}
while (!(IFG2 & UTXIFG1));
TXBUF1 = '
';//回车
}
后来串口调试发现其实要点击“以十六进制数发送”才可以。
那我这样改对不对?貌似没反应啊。。。。
SendString_PH_START("0x7E 0x01 0x01 0x00 0x01 0x01 0x04 0x0D");
void SendString_PH_START(uchar *ptr)
{
for(int j=0;j<40;j++)
{
while (!(IFG2 & UTXIFG1));
TXBUF1 = *ptr++;
}
while (!(IFG2 & UTXIFG1));
TXBUF1 = '
';//回车
}
此帖出自
小平头技术问答
谢谢你!我的基础确实不扎实!等考完六级一定重新学一遍C!
大神,我程序中之前都是把数据当做字符来处理的,后来发现其实这些都是十六进制数,我这段程序:
本以为RXBUF1接收到的都是字符 '7' 'E' 之类的字符,其实是十六进制数 0x7E,但是我后面的程序和计算都是以字符为依据,我想我红 {MOD}框里标出来的程序能不能更改一下,先把RXBUF1接收到的十六进制数处理成字符再赋给ptr485[]行不行?
我想下面这样改,我知道我这样不对,您能不能指点一下?
比如RXBUF1接收到的是0x7E
ptr485[rxcount++] = RXBUF1/16; //这边得到7 ?????
ptr485[rxcount++] = RXBUF1%16;//这边得到E ?????
你可以把接收到的数据转换成BCD字符,然后在进行处理。
一周热门 更多>