求助,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;

系统时钟无法正常切换,为什么呢 ?望高手解答,万分感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
wendoushu
1楼-- · 2020-02-05 13:10
 精彩回答 2  元偷偷看……
junrong
2楼-- · 2020-02-05 14:19
while((OSCLCN&0x40)==0);
这一句是什么意思? 因为OSCICN=0x83;  那么(OSCLCN&0x40)==0不是一直都成立了吗?

一周热门 更多>