欢迎来到Introzo百科
Introzo百科
当前位置:网站首页 > 技术 > 51单片机波特率4800怎么设置_51单片机40Mhz频率计

51单片机波特率4800怎么设置_51单片机40Mhz频率计

日期:2023-09-22 23:12

本文目录一览:

  • 1、请问51单片机串口通信时波特率设定4800同时使SMOD=1(也就是波特率加倍)和直接设置波特率9600区别
  • 2、51单片机程序设置波特率4800然后加倍why烧录时要置为4800才对,加倍后应该是9600呀
  • 3、假定51单片机(AT89C55WD)的工作时钟为24MHz,请将该器件配置成如下工作状态:1. 串口:波特率4800bps
  • 4、51单片机串口通信波特率若可变,由谁确定?
  • 5、51单片机串口通信时,程序波特率设定4800同时使SMOD=1波特率倍增

请问51单片机串口通信时波特率设定4800同时使SMOD=1(也就是波特率加倍)和直接设置波特率9600区别

使用的如果是stc_isp,下载程序的话,波特率会自适应的,设置多少都不受影响;如果是正常的单片机--pc通讯,那么必须一致才可以保证数据的正确性。你说的情况,要验证后才知道结果。

51单片机程序设置波特率4800然后加倍why烧录时要置为4800才对,加倍后应该是9600呀

51单片机程序设置波特率,是运行程序工作时,串口通信时的波特率,与烧录时要置多少无关。是STC单片机吗,用STC-ISP烧录程序,烧录程序时的波特率是不用设置的,软件会自动适应的。这是烧录时的波特波,与你的程序设置的波特率根本就不是一回事,你搞混了。4800加倍后是9600没有错,可那是烧录程序以后,单片机实际的通信时的波特率呀。

假定51单片机(AT89C55WD)的工作时钟为24MHz,请将该器件配置成如下工作状态:1. 串口:波特率4800bps

难道是不难,就是麻烦点,要去仔细看AT89C55WD的PDF文档,

1、串口的设置需要用到这几个寄存器

SCON=0x50; //串行方式1 REN=1;

PCON=0; //;波特率不加倍

T2CON=0x34; //定时器T2用于产生串口发送和接收的波特率。TR2=1;

ET2=1; //开T2中断

PS=1; //串口中断优先级设置为高

RCAP2H=0XFF;RCAP2L=0X70;TH2=0XFF;TL2=0X70;//配置波特率

当然这个波特率我们算 这个是22.1184M时候的4800;你可以照着PDF文档上的公式算一下24M时是多少;

2,外部中断下降沿触发:EX0=1;IT0=1;

3,20毫秒定时

void isr_Time0()interrupt 1

{

TR0=0;

TH0=0X8A; //20毫秒

TL0=0XD0;

a1=P1;

a2=P2;

TR0=1;

}

4、串口接收

void isr_com()interrupt 4

{

if(RI)

{

RI=0;

if(SBUF==0xf0)

{RE_flag=1;point1=0;}//开始接收一个包

if(RE_flag)

{

buffer[point1]=SBUF;

point1++;

if(point1=9) //接收到9个字节

{

point1=0;

RE_flag=0;//接收完一个包,停止接收

Uart1_RecFlag=1;

ES=0;

}

}

}

}

检测Uart1_RecFlag标志为1后对接收寄存器进行异或校验,正确 采纳数据执行相应程序 不正确复位Uart1_RecFlag对数据不与理睬就行;置位ES=1;

写的太详细就得编辑整个程序了,只是点了几个关键点 ,希望能对你有所帮助。

51单片机串口通信波特率若可变,由谁确定?

您好!很高兴为您解答问题,以下是我为您提供的解答内容:

你串口初始化那里的设置波特率是4800而不是9600

你在主程序中已经无条件地执行了这个display(dat - 48)程序,你可以把while(1)改成由标志位判定有无接收到串口数据,有才置位标志位,进行显示。

51单片机串口通信时,程序波特率设定4800同时使SMOD=1波特率倍增

使SMOD=1的时候是指将波特率2400加倍,最终加倍后的为波特率4800,因此通信速率增大

程序波特率设定4800并且使SMOD=0时,这时候应该使用波特率2400进行通信,通信速率降低。

当单片机晶振使用12MHZ的时候,串口通信会有误差,使用SMOD加倍会减少误差。

--------网上搜不到答案,所以查询资料后回答,供后人参考

关灯