51单片机定时器模式单片机定时器模式2与波特率的应用与波特率的应用
这里我们主要说的是波特率和定时器2的应用。一般来说,我们串口通讯用到的都是异步串行通讯,工作的方式
为方式1.方式1即为发送一个完整的信号为10个bit.起始信号为低电平,终止信号为高电平,串口通讯的两根线在
平常时候都是处于高电平状态,当一旦有数据要进行转发的时候,电平拉低,通讯芯片马上对信号进行监听。
这样子就能正常收发数据了。一般来说,我们都是采用定时器1的模式2(自动重装模式)来作为波特率发生器
的,同理,定时器1的中断也就被我们遗弃了,因为为了波特率产生的时候不会受到干扰(如果定时器1有中断
函数,那么处理中断函数会关闭定时器1中断,这时候波特率发生器就处于关闭状态了)。根据STC给我们的文
档
这里我们主要说的是波特率和定时器2的应用。
一般来说,我们串口通讯用到的都是异步串行通讯,工作的方式为方式1.
方式1即为发送一个完整的信号为10个bit.起始信号为低电平,终止信号为高电平,串口通讯的两根线在平常时候都是处于
高电平状态,当一旦有数据要进行转发的时候,电平拉低,通讯芯片马上对信号进行监听。这样子就能正常收发数据了。
一般来说,我们都是采用定时器1的模式2(自动重装模式)来作为波特率发生器的,同理,定时器1的中断也就被我们遗
弃了,因为为了波特率产生的时候不会受到干扰(如果定时器1有中断函数,那么处理中断函数会关闭定时器1中断,这时候
波特率发生器就处于关闭状态了)。根据STC给我们的文档,定时器1所具有的功能是比定时器2更强大的,所以,我们更倾
向于把定时器1作为一个正常的中断定时器使用,而通过定时器是用说明也可以了解,定时器2的三种
用途:
1.捕获模式,简单点说就是检测外部引脚跳变时间,在整个负跳变时期记录下所在数值,然后申请中断,我们人工读取数
值,得到波形宽度。
2.自动重装模式。跟定时器01的方式2一样,不过这时候他的定时器范围可以达到2^16,并且这里是用的是硬件重载,所
以不存在延迟效果,如果我们要使用在对精度有严格要求,并且苦恼于定时器01只能重装到2^8=256,那这个定时器确实就是
很强大的选择。
3.波特率发生器,这里跟定时器1的波特率发生器是一样的,同理,他使用的也是自动重装模式,不过这里是使用的是16
位的自动重装,这可能也是他其中的优点之一吧,波特率变动范围很广。
关于波特率:波特率就是用来定义串口通讯时候每秒传送的数据量,用bps表示,像我们定义的波特率为600,即每秒发
送600个二进制位,而我们每个字符占用十个二进制位,所以我们一秒一共可以发送6个二进制位。
关于波特率选定:一般来说,我们是选用低一点的波特率来进行通讯,因为高的波特率如果在12MHZ的晶振工作模式
下,会产生很大的误差,如果时间长了,会导致数据没有办法对上时钟而导致通讯乱码。并且高的波特率因为传送的数据量
大,在线的距离拉长的时候,容易产生很严重的干扰,所以还是优先选择低波特率进行通讯。
关于波特率和定时器2:定时器2作为波特率发生器的时候,是通过状态位的设定,来夺取定时器1的波特率发生器的作
用,所以这时候我们可以通过设定,让定时器只是作为我们程序单纯中断的用途,然后定时器2作为专门的波特率发生器,这
时候我们不用设定定时器2的中断,而且当初始化之后,就不用去管定时器2的中断了,我们要注意的只是串口中断,即通讯
电平拉低那一瞬间所产生的中断请求。同理,串口中断跟定时器2中断是完全不同的,这里我们不需要使用定时器2中断,定
时器2溢出的时候,会执行两种功能,一就是产生定时器2中断,另外一个是会向波特率发生器发送溢出信号,这时候发生器