历史上的今天
今天是:2025年07月15日(星期二)
2018年07月15日 | 关于单片机串口通信波特率问题
2018-07-15 来源:eefocus
今天学习单片机串口通信,编写了单片机与PC机的通信程序,即PC机向单片机发送信息,单片机再把信息返回给PC机,并显示出来。在调试的时候总是没有结果,检查了半天,发现错误,而且很容易被忽略的错误。用串口通信计算器在确定波特率的时候,一定要注意误差,如果过大的话(我第一次设定波特率9600,误差是6%多),通信也是有问题的,一定要把误差尽量缩小,1%以内。第二次设定波特率2400,误差1%以内。
下面是代码:
/*************************
* 串口通信
*************************/
#include
typedef unsigned int u16;
typedef unsigned char u8;
u8 receiveData,flag;
void init()
{
TMOD=0x20; //计数器工作在方式2,8位自动重装
PCON=0x00; //SMOD=0; 不倍频(不使波特率增倍) SMOD不可位寻址
TH1=0xf3;
TL1=0xf3; //波特率为2400
TR1=1;
SCON=0x50;
// SM0=0;
// SM1=1;
// SM2=0;
// REN=1; //允许串行接收位打开
EA=1; //开总中断
ES=1; //开串行口中断
}
int main()
{
init();
while(1)
{
if(1==flag)
{
flag=0;
SBUF=receiveData;
}
}
return 0;
}
void ser() interrupt 4
{
if(1==RI)
{
flag=1;
RI=0;
receiveData=SBUF;
}
else
{
TI=0;
}
}
上一篇:PC机与单片机多机通讯问题
史海拾趣
|
我厂是专业PCB制造商,专业为高科技企业加工生产双面多层(1-20层)高端精密度线路板,以及HDI,高频、高TG、高CTI、阻抗、埋盲孔、刚柔结合、铝基、无卤素等新工艺的开发,并取得了良好的成绩;我们的产品广泛用于数码产品,通讯设备,IT产品,工控,医疗 ...… 查看全部问答> |
|
初始化: RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //使能端口B时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_M ...… 查看全部问答> |
|
我是已经从事DSP开发有几年了,看到许多朋友对DSP的开发非常感兴取,我结合这几年对DSP的开发写一写自己的感受,一家之言,欢迎指教。我上研究生的第一天起根据老板的安排就开始接触DSP,那时DSP开发在国内高校刚刚开始,一台DSP开发器接近一万还是 ...… 查看全部问答> |
|
evn: ubuntu 10.04 arm-none-linux-gnueabi-gcc gcc version 4.6.1 (Sourcery CodeBench Lite 2011.09-70) part of the log:In file included from r ...… 查看全部问答> |




