请教51的串口发int类型的数据

[复制链接]
6667|9
 楼主| wofred 发表于 2010-3-11 13:25 | 显示全部楼层 |阅读模式
uint wemdu,shidu;

put[0]=wendu&0x00FF;//低8位
   put[1]=(wendu&0xFF00)>>8;//高8位
   put[2]=shidu*0x00FF;//低8位
   put[3]=(shidu*0xFF00)>>8;//高8位

这样写对吗,但为什么收到的第一个数据总是0x00呢

void initUart(void)
{
T2CON=0x30;//0011 0000
SCON=0x50;
TH2=0xFF;
TL2=0xDC;
RCAP2H=0xFF;
RCAP2L=0xDC;
TR2=1;
}


void send (void)
{uchar i,pf;
do{
SBUF=0xaa;
while(TI==0);
TI=0;
while(RI==0);
RI=0;
  }while((SBUF^0xbb)!=0);
do{
pf=0;
for(i=0;i<7;i++)
     {
SBUF=put[i];
pf+=put[i];
while(TI==0);
TI=0;
     }
SBUF=pf;
while(TI==0);TI=0;
while(RI==0);RI=0;
  }while(SBUF!=0);
TR1=0;
}

上面是初始化和发送函数
而且还有问题put[4],put[5],put[6]都应该是0的,怎么又会收到数据呢


多谢各位大侠了
 楼主| wofred 发表于 2010-3-11 13:28 | 显示全部楼层
put[0]=wendu&0x00FF;//低8位
                        put[1]=(wendu&0xFF00)>>8;//高8位
                        put[2]=shidu&0x00FF;//低8位
                        put[3]=(shidu&0xFF00)>>8;//高8位
sorry  应该是这个
原野之狼 发表于 2010-3-11 13:30 | 显示全部楼层
格式化成字符串再发送多好呀
 楼主| wofred 发表于 2010-3-11 13:34 | 显示全部楼层
额。。不好意思,怎么样格式成字符串,用哪个函数吗
3# 原野之狼
 楼主| wofred 发表于 2010-3-11 13:46 | 显示全部楼层
您在线的话,能不能多点提示呀,谢啦
4# wofred
原野之狼 发表于 2010-3-11 14:06 | 显示全部楼层
printf 知道吧
sytu_chyq 发表于 2010-3-13 09:35 | 显示全部楼层
是用sprintf么。。
zq1987731 发表于 2010-3-13 11:18 | 显示全部楼层
把fputc重定向到你串口上
就能用printf很方便的输出了
 楼主| wofred 发表于 2010-3-14 09:43 | 显示全部楼层
不好意思,这几天没上,我那样做的问题解决了,但是怪麻烦的。。。
但是还是想知道怎么用printf做,我在单片机里还没有用过这个函数,那个fputc都没见过,您能给个例子吗,谢啦
8# zq1987731
zgl7903 发表于 2010-3-14 19:27 | 显示全部楼层
要学会调试,
Keil里调试功能下有串口监视窗口, 设置个一步步调 一步步看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:a labor of love

3

主题

18

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部