本帖最后由 huzb11 于 2016-7-6 13:41 编辑
小弟在搞单片机与单片机通信,又遇到一个问题。
单片机与单片机间的串口通信,如何发送与接收16位的数据?
哪位大吓指点一下。下面是STC单片机程序,能正常发送与接收8位数据。。。
void send_com(u8 k) //发送的数据长度为2^8-1=255
{
S2BUF=k;
while(!(S2CON&S2TI));
S2CON&=~S2TI;
}
u8 Recv_com(void) //发送的数据长度为2^8-1=255
{
u8 dat;
while(!(S2CON&S2RI));
S2CON&=~S2RI;
return S2BUF;
}
后面经过反复修改,改成这样子,但只收到一个 个位数。其它都不显示
void send_com(u16 k)
{
S2BUF=(k>>8)&0xff;
while(!(S2CON&S2TI));
S2CON&=~S2TI;
S2BUF=k&0xff;
while(!(S2CON&S2TI));
S2CON&=~S2TI;
}
u16 Recv_com(void)
{
u16 dat;
u8 dat1;
u8 dat2;
while(!(S2CON&S2RI));
S2CON&=~S2RI;
dat1=S2BUF<<8;
while(!(S2CON&S2RI));
S2CON&=~S2RI;
dat2=S2BUF;
dat=dat1+dat2;
return dat;
}
这哪里又有问题?有兄弟搞过没?
|