晶振11.0592mhz(晶振为什么选择11)
本文目录
- stc12c5a60s2单片机延时函数怎么写晶振11.0592Mhz和12M
- 为啥51单片机的晶振一般使用11.0592
- 为什么单片机晶振实际是11.0592MHz,而不是12MHz
- 110延时函数1ms怎么算
- 晶振为什么选择11***0592MHz
- 51单片机放置12MHZ的晶振,每一条指今的时间是多少而11.0592的呢
stc12c5a60s2单片机延时函数怎么写晶振11.0592Mhz和12M
软件延时并不精确,我都是用一个叫dpjxjl的小软件自动生成,具体准确否,没校验过,以1MS例:STC的1T单片机12MHz:
voiddelay(void)//误差0us{unsignedchara,b;for(b=129;b>0;b--)for(a=45;a>0;a--);}1T单片机11.0592MHz:
voiddelay(void)//误差-0.018084490741us{unsignedchara,b,c;for(c=8;c>0;c--)for(b=197;b>0;b--)for(a=2;a>0;a--);}
为啥51单片机的晶振一般使用11.0592
标准的51单片机晶振是1.2M-12M,一般由于一个机器周期是12个时钟周期,所以先12M时,一个机器周期是1US,好计算,而且速度相对是最高的(当然现在也有更高频率的单片机)。11.0592M是因为在进行通信时,12M频率进行串行通信不容易实现标准的波特率,比如9600,4800,而11.0592M计算时正好可以得到,因此在有通信接口的单片机中,一般选11.0592M。
为什么单片机晶振实际是11.0592MHz,而不是12MHz
晶振分好多种,他们在不同的场合有不同的应用,11.0592和12MHZ的晶振都是比较常用的,并不是说12MHZ晶振实际是11.0592MHZ,11.0952MHZ的晶振在计算时钟、串口通信波特率等运算中能够得到一个整数,计算的结构更加的精确和方便。
110延时函数1ms怎么算
voiddelay(unsignedintx)//延时xms{unsignedinti,j;for(i=x;i>0;i--)for(j=110;j>0;j--);}延时1ms即为使x=1;这程序延时约1ms(x=1时用keil测出来约0.96831272ms,近似1ms),用C语言很难做到准确的1ms。注意晶振为11.0592MHZ的时候用~晶振为12MHZ时把i=120近似值1ms
晶振为什么选择11***0592MHz
目的是降低误差。
1、单片机在通信的时候需要设置波特率。波特率是指每秒所传送的字节数。两个设备在通信时,波特率需要相同,否则通信失败。如果波特率的误差较大,则引起通信数据不稳定。在选用12M的晶振设置波特率时或多或少都存在误差,而使用11.0592M的晶振所计算出来的波特率非常准确。
2、经过实验测试,12M晶振在波特率为19200时误差达到了8.51%,而用11.0592M晶振所得到的波特率误差为0,比12M晶振通信时更稳定,所以在有串口通信的应用中11.0592M晶振更常用。
51单片机放置12MHZ的晶振,每一条指今的时间是多少而11.0592的呢
晶振的振荡频率,要根据单片机的具体应用场合来决定,并不是越高越好。11.0592MHz和12MHz的振荡频率相差不大,但如果你的单片机需要用异步串行通信功能的话,建议你选用11.0592MHz的振荡频率。
因为你在进行波特率发生器的编程中,采用这个振荡频率的话,波特率计数器的计数初值可以是整数;而采用12MHz振荡频率,则计数初值只能是一个大约值(接近于某个小数的整数),长时间通信会产生误差积累而导致通信失败。