网上有关“单片机在做定时计数器时能用11.0592m的晶振吗?”话题很是火热,小编也是针对单片机在做定时计数器时能用11.0592m的晶振吗?寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。
关键看你需要定时的精度需要到什么
以51单片机为例,如果用12MHz的晶振
一计数的周期是12个时钟周期,
所以计数频率是1MHz,一个记数的周期是1us
刚好整数,是比较好计算,如果需要10ms的定时
那么计数就要10000个周期
如果换成11.0592M的晶振,
一个记数周期,12个时钟周期,约为1.085us
那么要定时 10ms,就要 10ms/1.085us约为 9216.6个周期
取9216或9217 和实际的误差也就
9216*1.085-10000=-0.640us
9217*1.085-10000=0.445us
这样误差不会超过1us
实际上,使用11.0592M的晶振的误差不会超过1.1us
而通常控制中用到的定时可能到ms甚至s的量级,基本上可以忽略的
只是使用11.0592M晶振,其周期非整数,在计算需要多少个周期的时候稍为麻烦一点而已
单片机常用的是12M跟11.0592MHZ
一般情况下,一个机器周期是12个时钟周期,所以用12M时,一个机器周期是1US,好计算,而且速度相对是最高的,当然现在也有更高频率的单片机。
而进行通信是,一般选择11.0592M,12M频率进行串行通信不容易实现标准的波特率,比如9600,4800,而11.0592M计算时正好可以得到,因此在有通信接口的单片机中,一般选11.0592M
计算一下就知道了。如我们要得到9600
的波特率,晶振为11.0592M
和12M,定时器1
为模式2,SMOD
设为1,分别看看那所要求的TH1
为何值。代入公式:
11.0592M
9600=(2÷32)×((11.0592M/12)/(256-TH1))
TH1=250
12M
9600=(2÷32)×((12M/12)/(256-TH1))
TH1≈249.49
上面的计算可以看出使用12M
晶体的时候计算出来的TH1
不为整数,而TH1
的值只能取整数,这样它就会有一定的误差存在不能产生精确的9600
波特率。当然一定的误差是可以在使用中被接受的,就算使用11.0592M
的晶体振荡器也会因晶体本身所存在的误差使波特率产生误差,但晶体本身的误差对波特率的影响是十分之小的,可以忽略不计
(扬兴科技为您解答)
关于“单片机在做定时计数器时能用11.0592m的晶振吗?”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!
本文来自作者[kpedzd]投稿,不代表迪紫号立场,如若转载,请注明出处:https://kpedzd.cn/bkdq/202501-61503.html
评论列表(4条)
我是迪紫号的签约作者“kpedzd”!
希望本篇文章《单片机在做定时计数器时能用11.0592m的晶振吗?》能对你有所帮助!
本站[迪紫号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育
本文概览:网上有关“单片机在做定时计数器时能用11.0592m的晶振吗?”话题很是火热,小编也是针对单片机在做定时计数器时能用11.0592m的晶振吗?寻找了一些与之相关的一些信息进行分...