⑴ 51单片机波特率如何设置
51单片机波特率设置主要有以下两种方式:1) 工作方式0 ,2)工作方式1 。
1) 工作方式0
SM0=0且SM1=0时,串口选择工作方式0,实质这是一种同步移位寄存器模式。 其数据传输的波特率固定为Fosc/12,数据由RXD引脚输入或输出,同步时钟由TXD引脚输出。
2)工作方式1
当SM0=0且SM1=1时,串口选择工作方式1,其数据传输的波特率由定时/计数器T1、T2的溢出速率决定,可通过程序设定。当T2CON寄存器中的RCLK和TCLK置位时,用T2作为发送和接收波特率发生器,而RCLK=TCLK=0时,用T1作为波特率发生器,两者还可以交叉使用,即发送和接收采用不同的波特率。数据由TXD引脚发送,由RXD引脚接收。
⑵ 51单片机串口通信时,程序波特率设定4800同时使SMOD=1波特率倍增
使SMOD=1的时候是指将波特率2400加倍,最终加倍后的为波特率4800,因此通信速率增大
程序波特率设定4800并且使SMOD=0时,这时候应该使用波特率2400进行通信,通信速率降低。
当单片机晶振使用12MHZ的时候,串口通信会有误差,使用SMOD加倍会减少误差。
--------网上搜不到答案,所以查询资料后回答,供后人参考
⑶ PC与C51单片机 11.0592MHz的晶振,实现 串口连接 波特率自适应 的 汇编语言程序或者详细思路,谢谢~
单片机要实现 串口连接 波特率自适应,这需要约定一个特定的同步字符,如空格,20H,电脑先发送一串空格,单片机接收后,判断是否是空格,不是就调整波特率,直到接收正确为止。然后单片机返回一个回答,电脑就停止发送同步字符了。以后就可以正常通信了。
一般的串口程序,都是要由通信协议确定波特率的,不采用这种自适应的方式,毕竟不是可靠的。
因为波特率不是固定,单片机每次开机就要重新调整。另外,就算是适应了波特率,一旦受干扰,可以破坏了已经适应的波特率。因此,这种方案 并不可取。
⑷ STM32如何实现波特率自适应(通过一个键盘来控制STM32单片机做成的设备,因为我键盘的波特率有好几种)
所谓串口的波特率自适应,如果你的键盘是发送固定格式的报文,那么需要进行波特率检测,就是把所有波特率全部试一遍,得到那个固定格式的报文的就是应该有的波特率。
按照这个思路去写程序,不然你做不到波特率自适应。当然也许你会想到更好的算法。
另外一个办法是让键盘发一个带有0和1的报文序列。这样通过判断脉冲宽度也可以得到波特率,不过这个办法复杂了点。
⑸ USB 转串口 波特率 设置高和低 都可以啊 STC单片机串口下载程序时 单片机的波特率 是多少啊
这个没有明确的规定波特率是多少,但有一个范围如4800、9600、19200、38400这些应该都可以。不过不能太高也不能太低,波特率太高不支持(会卡死),太低更不能。推荐9600够用了。你用软件下载程序的时候看准有一个波特率设置的选项的.另外可以通过命令查看串口波特率:右键我的电脑--管理--设备管理器--(右边框)端口。查看我们用的是哪个通信端口,右键看其属性,有个端口设置,里面就有你想要的信息了。这个与下载的设置波特率速度一样的(不一样下载不了).至于单片机的波特率就不用我们去研究了.
⑹ mcs-51单片机有哪几种寻址方式
51单片机有7种寻址方式:
1、立即寻址方式
采用立即寻址的指令一般是双字节的。第一个字节是指令的操作码,第二个字节是立即数。因此,操作数就是放在程序存储器中的常数。立即数前面应加前缀“#”号。
2、直接寻址方式
采用直接寻址的指令一般是双字节或三字节指令,第一字节为操作码,第二,三字节为操作数的地址码。单片机中,直接地址只能用来表示片内低128字节单元、专用寄存器和片内RAM的位地址空间。其中专用寄存器和位地址空间只能用直接寻址方式来访问。
3、寄存器寻址方式
寄存器寻址方式用于访问选定的工作寄存器R0~R7、A、B、DPTR和进位CY中的数。其中R0~R7由操作码低三位的8种组合表示,A、B、DPTR、C则隐含在操作码之中。
4、寄存器间接寻址方式
这种寻址方式中,指令指定寄存器中的内容为操作数的地址。寄存器间接寻址是用于访问片内数据存储器或片外数据存储器。当访问片内RAM
或片外的低256字节空间时,可用R0或R1做为间址寄存器;当访问片外整个64KB的地址RAM空间时,用16位寄存器DPTR做间址寄存器。这类指令都为单字节的指令,操作码的最低位表示是采用R0还是R1做间址器。
(6)单片机波特率自适应扩展阅读:
51单片机功能特性
1,可以仿真63K程序空间,接近64K的16位地址空间;
2,可以仿真64Kxdata空间,全部64K的16位地址空间;
3,可以真实仿真全部32条IO脚;
4,完全兼容keilC51UV2调试环境,可以通过UV2环境进行单步,断点,全速等操作;
5,可以使用C51语言或者ASM汇编语言进行调试;
6,可以非常方便地进行所有变量观察,包括鼠标取值观察,即鼠标放在某变量上就会立即显示出它此的值;
7,可选使用用户晶振,支持0-40MHZ晶振频率;
8,片上带有768字节的xdata,您可以在仿真时选使用他们,进行xdata的仿真;
9,可以仿真双DPTR指针;
10,可以仿真去除ALE信号输出.;
11,自适应300-38400bps的所有波特率通讯。
⑺ 请问51单片机串口通信时波特率设定4800同时使SMOD=1(也就是波特率加倍)和直接设置波特率9600区别
使用的如果是stc_isp,下载程序的话,波特率会自适应的,设置多少都不受影响;如果是正常的单片机--pc通讯,那么必须一致才可以保证数据的正确性。你说的情况,要验证后才知道结果。
⑻ 89C51串行通信中,单片机如何自动调节波特率,望高手指点!(最好有详细的程序设计过程)
要一个串口,上报又需要另一个串口,这就要求单片机具有双串口的功能,但我们知道一般的51
系列只提供一个串口,那么另一个串口只能靠程序模拟。
本文所说的模拟串口, 就是利用51的两个输入输出引脚如P1.0和P1.1,置1或0分别代表高低电
平,也就是串口通信中所说的位,如起始位用低电平,则将其置0,停止位为高电平,则将其置
1,各种数据位和校验位则根据情况置1或置0。至于串口通信的波特率,说到底只是每位电平持续
的时间,波特率越高,持续的时间越短。如波特率为9600BPS,即每一位传送时间为
1000ms/9600=0.104ms,即位与位之间的延时为为0.104毫秒。单片机的延时是通过执行若干条
指令来达到目的的,因为每条指令为1-3个指令周期,可即是通过若干个指令周期来进行延时的,
单片机常用11.0592M的的晶振,现在我要告诉你这个奇怪数字的来历。用此频率则每个指令周期
的时间为(12/11.0592)us,那么波特率为9600BPS每位要间融多少个指令周期呢?
指令周期s=(1000000/9600)/(12/11.0592)=96,刚好为一整数,如果为4800BPS则为
96x2=192,如为19200BPS则为48,别的波特率就不算了,都刚好为整数个指令周期,妙吧。至于
别的晶振频率大家自已去算吧
⑼ stc单片机驱动怎么设置参数,例如波特率
stc单片机串口下载程序时
单片机的波特率可以任意设置,它会自适应。原则上在能够正确握手的情况下设置高的波特率,这样下载速度快。在使用光耦等隔离器件产生信号延时时,可以用低的速率,保证正确握手。
⑽ 求助,串口,这个程序波特率是随便设置吗
STC单片机串口下载程序时 单片机的波特率可以任意设置,它会自适应。原则上在能够正确握手的情况下设置高的波特率,这样下载速度快。在使用光耦等隔离器件产生信号延时时,可以用低的速率,保证正确握手。