9600波特率每秒传送多少字节_51单片机定时器模式2与波特率的应用

一般来说,我们串口通讯用到的都是异步串行通讯,工作的方式为方式1.

方式1即为发送一个完整的信号为10个bit.起始信号为低电平,终止信号为高电平,串口通讯的两根线在平常时候都是处于高电平状态,当一旦有数据要进行转发的时候,电平拉低,通讯芯片马上对信号进行监听。这样子就能正常收发数据了。

d96301bf72f5db289bedba7a53900a7a.png

一般来说,我们都是采用定时器1的模式2(自动重装模式)来作为波特率发生器的,同理,定时器1的中断也就被我们遗弃了,因为为了波特率产生的时候不会受到干扰(如果定时器1有中断函数,那么处理中断函数会关闭定时器1中断,这时候波特率发生器就处于关闭状态了)。根据STC给我们的文档,定时器1所具有的功能是比定时器2更强大的,所以,我们更倾向于把定时器1作为一个正常的中断定时器使用,而通过定时器是用说明也可以了解,定时器2的三种

51单片机定时器模式2与波特率的应用

用途:

1.捕获模式,简单点说就是检测外部引脚跳变时间,在整个负跳变时期记录下所在数值,然后申请中断,我们人工读取数值,得到波形宽度。

90862ff4e4f4e121825b0d6eabde3783.png

2.自动重装模式。跟定时器01的方式2一样,不过这时候他的定时器范围可以达到2^16,并且这里是用的是硬件重载,所以不存在延迟效果,如果我们要使用在对精度有严格要求,并且苦恼于定时器01只能重装到2^8=256,那这个定时器确实就是很强大的选择。

3.波特率发生器,这里跟定时器1的波特率发生器是一样的,同理,他使用的也是自动重装模式,不过这里是使用的是16位的自动重装,这可能也是他其中的优点之一吧,波特率变动范围很广。

关于波特率:波特率就是用来定义串口通讯时候每秒传送的数据量,用bps表示,像我们定义的波特率为600,即每秒发送600个二进制位,而我们每个字符占用十个二进制位,所以我们一秒一共可以发送6个二进制位。

关于波特率选定:一般来说,我们是选用低一点的波特率来进行通讯,因为高的波特率如果在12MHZ的晶振工作模式下,会产生很大的误差,如果时间长了,会导致数据没有办法对上时钟而导致通讯乱码。并且高的波特率因为传送的数据量大,在线的距离拉长的时候,容易产生很严重的干扰,所以还是优先选择低波特率进行通讯。

7161b80cb86122325ca3d905b996f07e.png

关于波特率和定时器2:定时器2作为波特率发生器的时候,是通过状态位的设定,来夺取定时器1的波特率发生器的作用,所以这时候我们可以通过设定,让定时器只是作为我们程序单纯中断的用途,然后定时器2作为专门的波特率发生器,这时候我们不用设定定时器2的中断,而且当初始化之后,就不用去管定时器2的中断了,我们要注意的只是串口中断,即通讯电平拉低那一瞬间所产生的中断请求。同理,串口中断跟定时器2中断是完全不同的,这里我们不需要使用定时器2中断,定时器2溢出的时候,会执行两种功能,一就是产生定时器2中断,另外一个是会向波特率发生器发送溢出信号,这时候发生器接收到这个信号的时候,自动进行时钟校对,产生一个bps的时钟信号,所以波特率发生器是这么来的,定时器2说简单点就是用来决定时钟信号的波形宽度的。溢出率越高,那么同一个时间段里面产生的时钟信号也就越密集,发送数据同步了时钟信号,同理也就能够发送更多的数据。

通过上图可得,在600bps的情况下,T2的自动重装值为FD8F.

通过上图的时序图,我们也可以清晰的得到,在上位机和下位机,下位机的时钟频率是由程序规定的,而上位机的时钟频率是由人工设定的,我们只要知道,两个时钟频率是要完全一致的,不然收发数据没有办法正常进行。

36cab1f517a5aedcaea6ccdd2fa427aa.png

(发送)当send信号拉低的时候,txd也拉低表示要进行数据通讯,这时候发送的数据在每个时钟信号高电平的时候进行变换,在时钟信号电平的时候稳定,这样子发送出去的数据就会严格有固定的电平波长和高电平波长,当上位机进行接收到时候,当他检测到接收端的电平拉低的时候也对时钟信号进行同步,把时钟信号的高电平同步到数据接收端第一次电平拉低时刻,然后在时钟信号的低电平期间进行数据采集,比如第第二个时钟信号低电平表示的是这时候数据端的电平状态表示的是数据的第三个bit正在等待捕获,所以,如果时钟必须严格一致就是这个原因。当整个过程完成的时候,TI置位,表示接收完成,所以我们可以一直监听TI的情况,同理,置位情况下要记得给他人工清零。

5c680cfc32e12acd6252e291aeac8401.png

(接收)接收会有点不同,虽然他也是在时钟同步的情况下进行,但是他是在shift为高电平期间捕获讯号,(上位机可能也是这种情况,暂时没有找到更明确的资料),每个bit的变换时间很短,稳定时间很长,一般来说他是在时钟信号低电平中间进行信号捕获的。当整个过程完成的时候,RI置位,表示接收完成,所以我们可以一直监听RI的情况,同理,置位情况下要记得给他人工清零。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值