keil 51单片机数组转换成字符串

a[0]=1; a[1]=2; a[3]=3;
要得到字符串123,不能用printf,原因是从第二串口输出

第1个回答  2015-08-06
if((A>=0)&&(A<= 9))
{
A = A + 0x30;
}
if((A >= 10)&&(A <= 15))
{
A = A + 0x37;
}追问

用怎么用sendbyte发送呢不能用sendchar

追答

这种情况直接对SBUF操作,哪个型号的51?

追问

STC IAP15w4k58s4

追答

void Uart1INT(void) interrupt 8 //ARM
{
unsigned char tempData;
if((S2CON & 0x01) == 0x01)//接收

{
S2CON = S2CON & 0xFE;

tempData = S2BUF;
Uart1Rxd(tempData);
}
}
if((S2CON & 0x02) == 0x02)//发送
{
S2CON = S2CON & 0xFD;

if(uart1SendNum < uart1SendLength)
{
S2BUF = uart1SendBuf[uart1SendNum];
uart1SendNum ++;
}
else
{
uart1SendNum = 0;
uart1SendLength = 0;
}
}
}
串口1的收发程序,供参考

追问

sendbyte3("V:");if(dy[0]!=0x30)
{S3BUF=dy[0];}
else
{S3BUF=(' ');}
S3BUF=(dy[1]);
S3BUF=('.');
S3BUF=(dy[2]);
S3BUF=('\r');

S3BUF=('\n');
以上51单片机

AT+CIPSEND=0,7
busy s...

V:
只收到v: wifi串口只支持字符串不能用16进制

追答

你这样不行啊,你给S3BUF赋值,他就开始发送了,而你连续赋值,这么操作是不允许的。
这么改,
S3BUF = XX;
while(((S3CON & 0x02) == 0x00));//判断是否发送完成
S3CON = S4CON & 0xFD; //清除发送标志

追问

printf能不能指定串口发送

追答

没用过这个。你的串口配置程序?

追问

程序在软件上能过在硬件上过不了

追答

你看看你的UART3的中断是不是打开了,发送时没有中断入口,造成程序飞了。

本回答被网友采纳