STC12C5A60AD单片机,我用上位机给单片机发送数据,然后再将该数据发送到上位机,发现上位机接受都是0

这是我的程序#include<reg51.h>unsignedcharchComDat=0x41;voidInitUartComm(floatFOSC,longBAUD)... 这是我的程序
#include <reg51.h>

unsigned char chComDat = 0x41;
void InitUartComm(float FOSC, long BAUD);
void Send_Comm(unsigned char chComdat);
unsigned char Rcv_Comm();
void Delay(unsigned int n);

void main()
{
unsigned char chRcv;

InitUartComm(12,9600);

while(1)
{
chRcv = Rcv_Comm();
if(chRcv != 0)
{
Send_Comm(chRcv);
}
Delay(5);
}
}

void InitUartComm(float FOSC, long BAUD)
{
TMOD = 0x20;
TH1 = -(FOSC/12/32/BAUD);
TL1 = TH1;
TR1 = 1;
SCON = 0x50;
PCON = 0x00;
}

void Send_Comm(unsigned char chComDat)
{
SBUF = chComDat;
TI = 0;
}

unsigned char Rcv_Comm()
{
if(RI)
{
chComDat = SBUF;
RI = 0;
}
return chComDat;
}

void Delay(unsigned int n)
{
unsigned int a, b, c;
for (a=0; a<n; a++)
for (b=0; b<50; b++)
for (c=0; c<50; c++);
}
展开
 我来答
执子之手xw
2013-05-15 · TA获得超过244个赞
知道小有建树答主
回答量:248
采纳率:0%
帮助的人:158万
展开全部
你去STC官网下载V6.37的软件,里面有比特率计算器,可以直接用的,先用串口助手调试示例程序 (V6.37的软件里有),再调试你自己的程序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
joyoustech
2013-05-15 · TA获得超过1874个赞
知道小有建树答主
回答量:1465
采纳率:71%
帮助的人:1315万
展开全部
波特率是错的。

InitUartComm(12,9600);

TH1 = -(FOSC/12/32/BAUD);

自己算一下就知道。
追问
那应该怎么算
追答
函数InitUartComm中代入的晶振频率的变量值是12,也就是说TH1  = -(FOSC/12/32/BAUD);
的值是-12/12/32/9600,计算结果是0,肯定是不对的。
具体该怎么算还是要查手册,使用别人的代码的时候一定要搞明白代码的意义。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式