打印
[PIC®/AVR®/dsPIC®产品]

PIC单片机的时钟设置

[复制链接]
438|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
youtome|  楼主 | 2022-4-30 21:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
 单片机的时钟信号好比是单片机的心脏。单片机的时钟频率决定了单片机运行一个指令周期的时间。原理的话应该是晶振与外部电容构成电容三点式振荡电路,此时时钟输入为正弦波,经过内部施密特触发器整形变为方波。

  内部时钟方式:
  利用单片机内部的振荡器,然后在引脚XTAL1(18脚)和XTAL2(19脚)两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30PF左右;这两个电容对频率有微调的作用,晶振的频率范围可在1.2MHz-12MHz之间选择。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。
  外部时钟方式:

  此方式是利用外部振荡脉冲接入XTAL1或XTAL2。HMOS和CHMOS单片机外时钟信号接入方式不同,HMOS型单片机(例如8051)外时钟信号由XTAL2端脚注入后直接送至内部时钟电路,输入端XTAL1应接地。由于XTAL2端的逻辑电平不是TTL的,故建议外接一个上接电阻。对于CHMOS型的单片机(例如80C51),因内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外时钟信号接到XTAL1而XTAL2悬空。

  PIC单片机时钟的设置

  时钟设置一般只和两处有关 一个是配置字,一个是振荡器控制寄存器 OSCCON 下面我们以PICLF1823为例子进行讲解。

  PICLF1823 配置字设置 中与时钟有关的就是 FOSC《2:0》:振荡器选择位,和PLLEN:PLL使能位 。

  OSCCON 是有关内部时钟频率选择,如果只用外部时钟一般不理会。以下是数据手册中OSCCON寄存器的详细介绍。

  实例讲解:

        使用内部时钟将时钟频率设置成8MHZ

  开发环境:MPLAB X IDE

  芯片型号:PICLF1823

  #include

  __CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON&

  CLKOUTEN_OFF&IESO_ON&FCMEN_ON);

  __CONFIG(PLLEN_OFF&LVP_OFF) ;//将FOSC《2:0》:振荡器选择位设置成 INTOSC,

  void init_fosc(void)

  {

  OSCCON = 0x70;//8MHZ IRCF《3:0》时钟频率选择位设置成8MHZ

  }

  int main(int argc, char** argv) {

  init_fosc();

  while(1);

  }

  PLL是用来做什么的呢?他的作用就是能将8MHZ的时钟频率X4变成32MHZ,记住只有8MHZ可以,其他频率是不行的。

  使用内部时钟将时钟频率设置成32MHZ

  开发环境:MPLAB X IDE

  芯片型号:PICLF1823

  #include

  __CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON

  &CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//这个要放到上一行去

  __CONFIG(PLLEN_ON&LVP_OFF) ;//将FOSC《2:0》:振荡器选择位设置成 INTOSC,使能PLLEN

  void init_fosc(void)

  {

  OSCCON = 0xF0;//32MHZ IRCF《3:0》时钟频率选择位设置成8MHZ ,使能4XPLL

  }

  int main(int argc, char** argv) {

  init_fosc();

  while(1);

  }


使用特权

评论回复
沙发
pzsh| | 2022-5-4 14:05 | 只看该作者
现在可以直接用MCC来配置了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

3715

帖子

2

粉丝