求助,C8051F330单片机系统时钟的切换问题

2020-02-05 08:48发布

本人使用C8051F330单片机,写了个程序,考虑到功耗问题,需要进行内部高频振荡器和低频振荡器时钟切换 。

正常运行时时钟为内部低频

  OSCLCN=0x80;                                   // 内部低频频时钟8分频(11K)
  while((OSCLCN&0x40)==0);
  CLKSEL=0x02;

当要转换为高频时,
所写程序如下:
        OSCLCN&=~0x80;
        OSCICN=0x83;                            // 内部高频时钟24.5M
        OSCICL+=4;                         // 时钟校准到24M
        while((OSCLCN&0x40)==0);
        CLKSEL=0;        

由高频再转为低频时:
          OSCICN&=~0x80;
          OSCLCN=0x80;                                   // 内部低频频时钟8分频(11K)
          while((OSCLCN&0x40)==0);
          CLKSEL=0x02;

系统时钟无法正常切换,为什么呢 ?望高手解答,万分感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。