以前我也回答不了这个问题。现在明白了: 楼上的回答都不全面。 芯片说明书上说的是: 主时钟可以是内部R/C时钟,也可以是外部输入的时钟或外部晶体震荡的时钟。 现在的51单片机中,低档的,一般都是外部晶振为主时钟,而高级的51单片机,可以是外部输入时钟或外部晶振的时钟,更多的是内部R/C时钟。 这个内部的时钟,是可以调节的,调节方法就是下载程序时进行设定。 看你这个程序片断,我认为可能就是高级一点的51单片机的程序。这种程序对应的单片机是内部时钟,在写程序时,先定义一个主时钟,方便计算初值,到了下载时,也好设置。以前的老芯片程序根本不会这样写,因为外部晶振基本都是确定的。 |
zl2168 发表于 2017-10-28 22:01 我已经在补了...但是好像没看到这个 |
Laptop 发表于 2017-10-26 23:39 建议从单片机基础理论学起,补补前面的基础,否则,后面类似问题多多。 |
在硬件设计的时候可以选择使用的晶体,12M的,11.0592M的都可以,根据实际情况。从你的程序来看,显然硬件上用的是11.0592M的,晶体在电路板上就在主控芯片的旁边,带有金属外壳,上面标的有11.0592字样。 程序中经常定义这种主振是为了程序便于移植。定义主振以后,程序中的波特率、定时器初值、分频器输出等,我们会直接用带主振的计算公式表示,而不是给具体的值。这样一来,即使将来我们把电路板上的主振换成12M(12000000Hz)了,只需要把主振的宏定义改一下程序就可以接着用,不需要把程序中定时器初值、波特率等等再手动计算一遍一个个的修改。 |
11.0592M,硬件决定的,你的晶振是多少就是多少,这里只是定义来给程序参考用! |
wulin 发表于 2017-10-19 09:25 嗯嗯 说的很清晰 |
13476011951 发表于 2017-10-18 22:10 那要怎么看啊? |
zl2168 发表于 2017-10-18 21:53 我的意思是 为什么要用这个,这个时钟是怎么得来的 |
这里只是对主时钟频率做了宏定义,方便程序中与此相关的运算,如软件延时、定时器设置等等。如果改用其他主时钟频率只要重新定义一下,不必把程序中所有相关程序都改动。 |
任何一个自动化的处理器,都必须有一个跳动的心脏,它就是主频,主频由振荡器产生的脉冲构成。由于它决定了处理器运行的节拍,也就决定了计算机的速度。 |
syw2074 发表于 2017-10-18 22:24 好像根据晶振来算, |
宏定义主时钟 |
要看是什么单片机 每个时钟不一样![]() ![]() ![]() ![]() ![]() |
要看是什么单片机 |
你不是已经有了注释?:宏定义主时钟HZ!但你提的问题却让人不懂什么意思?! |