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++);
} 展开
#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++);
} 展开
2个回答
展开全部
你去STC官网下载V6.37的软件,里面有比特率计算器,可以直接用的,先用串口助手调试示例程序 (V6.37的软件里有),再调试你自己的程序。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
波特率是错的。
InitUartComm(12,9600);
TH1 = -(FOSC/12/32/BAUD);
自己算一下就知道。
InitUartComm(12,9600);
TH1 = -(FOSC/12/32/BAUD);
自己算一下就知道。
追问
那应该怎么算
追答
函数InitUartComm中代入的晶振频率的变量值是12,也就是说TH1 = -(FOSC/12/32/BAUD);
的值是-12/12/32/9600,计算结果是0,肯定是不对的。
具体该怎么算还是要查手册,使用别人的代码的时候一定要搞明白代码的意义。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询