单片机串口通信问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 09:57:49
我写的程序不能返回给PC数据 是程序问题吗?请教高手
程序如下:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar dat;

void Init_Com(void)
{
TMOD = 0x20; //定时器工作方式2,初值自动装入
PCON = 0x00; //波特率不增倍
SCON = 0x50; //串行工作方式设定
TH1 = 0xFd; //定时器初值高位
TL1 = 0xFd; //定时器初值低位
TR1 = 1; //启动定时器
}

void send_char(uchar ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}

main()
{

uint i;

while (!RI) ;//判断是否收到数据
dat = SBUF; //接收数据
RI = 0; //软件清除标志位

for(i=0;i<10;i++){ //连续发送十个字节的数据
send_char((dat+i));
}

}

个人觉得是数据类型不对
uchar dat
那么dat+i
这个i应该是int类型吧?能加吗?
你把这句改下看看
send_char((dat+i));
改成
send_char(dat);
看看是不是行了

你的最大问题是没有在主程序中调用初始化的子程序,导致串口没有初始化.

楼上正解!
不过一楼说的问题也值得注意···