晶振为什么是11.0592(晶振为11.0592MHZ)

海潮机械 2023-01-16 08:04 编辑:admin 195阅读

1. 晶振为11.0592MHZ

不是11.059,而是11.0592,这个用在单片机串行通信系统中,用这个频率的晶振,算出来的波特率刚好是整数,比如1200bps,2400bps等等,而用12M算出来的有很多小数,对于需要精确测量时序的通信很不利。你可以参考单片机书,串行通信一章节,里面非常清楚

2. 晶振为110592mhz定时1毫秒怎么算

因为110592MHz能够准确地划分成时钟频率,与UART(通用异步接收器/发送器)量常见的波特率相关。特别是较高的波特率(19600,19200),不管多么古怪的值,这些晶振都是准确,常被使用的。

用110592晶振的原因是51单片机的定时器导致的,用51单片机的定时器做波特率发生器时,如果用11.0592Mhz的晶振,根据公式算下来需要定时器设置的值都是整数;如果用12Mhz晶振,则波特率都是有偏差的。

3. 晶振为11.0592延时1ms函数

TMOD=0x01;

ET0=1;

EA=1;

TH0=(65536-500)/256;

TL0=(65536-500)%256;

TR0=1;

中断程序里再装初值并将P1·0取反即可

500个脉冲是1ms

4. 晶振为11.0592m编写实现1m延时

传统51单片机12个晶振周期是一个指令周期,多数指令是1us,这样很容易计算程序时间但12M晶振在串口通信时,只能以很低的波特率,高速下误差极大,而11·0592MHZ的晶振在很多波特率下误差极小

5. 晶振为11.0592MHZ,工作于方式1

void delay(unsigned int x) //延时 x ms{unsigned int i,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