使用C8051F时晶振不起振,请有经验的朋友赐教。

2020-01-27 11:18发布

本帖最后由 javasy 于 2012-5-22 07:32 编辑

我使用的是062,在切换外部时钟时程序一直停在了检查外部晶振处(下面程序加下划线一句),换过晶振、片子、电容等,用示波器看晶振脚上确定没起振。
哪位朋友遇到过这种情况,请指点一下,谢谢!
程序如下:

#include <c8051f060.h>
/************************************/

#define Crystal_Clock 12000000
/************************************/

void SYSCLK_Init (void);
void SYSCLK_ExtOsc_Init (void);         
/************************************/

//----------------------------------------/
//  内部时钟设置
void SYSCLK_Init (void)
{
  OSCICN = 0x83;                     
  RSTSRC = 0x04;                           // Enable missing clock detector
}

//----------------------------------------/
// 外部时钟初始化
void SYSCLK_ExtOsc_Init (void)
{
  unsigned int  i;

  #if (Crystal_Clock <= 32000)
    #define XFCN 0   
  #elif (Crystal_Clock <= 84000)
    #define XFCN 1
  #elif (Crystal_Clock <= 225000)
    #define XFCN 2
  #elif (Crystal_Clock <= 590000)
    #define XFCN 3
  #elif (Crystal_Clock <= 1500000)
    #define XFCN 4
  #elif (Crystal_Clock <= 4000000)
    #define XFCN 5
  #elif (Crystal_Clock <= 10000000)
    #define XFCN 6
  #elif (Crystal_Clock <= 30000000)
    #define XFCN 7
  #else
    #error "Defined Crystal Frequency outside allowable range!"
    #define XFCN 0
  #endif

  OSCXCN = 0x60;                     
  OSCXCN |= XFCN;
  for (i = 13000; i > 0; i--);           // 24.5MHz, 1ms=24500 SYSCLKs DJNZ=2 SYSCLKs
   while (!(OSCXCN & 0x80));  
  CLKSEL = 0x01;                       // 禁止内部振荡器;

  return;
}


/*****************************************/
//   主 程 序
void main (void)
{
  WDTCN = 0xDE;                            // Disable watchdog timer
  WDTCN = 0xAD;
  SYSCLK_Init();
  SYSCLK_ExtOsc_Init ();
  while(1);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
javasy
1楼-- · 2020-01-29 10:29
and001 发表于 2013-9-11 17:38
问题找到了吗?

问题早已经解决了,是狗的问题
and001
2楼-- · 2020-01-29 16:03
哦我正考虑用外部晶振,内部快钟太快了没必要,现在太耗电了10mA(平时)电池一下就没了
javasy
3楼-- · 2020-01-29 16:12
and001 发表于 2013-9-11 23:54
哦我正考虑用外部晶振,内部快钟太快了没必要,现在太耗电了10mA(平时)电池一下就没了 ...

你用电池供电啊?可以考虑用430单片机,功耗小,我们有一款产品上就用的430
and001
4楼-- · 2020-01-29 18:52
 精彩回答 2  元偷偷看……
and001
5楼-- · 2020-01-29 23:16
你是搞软件的就知道,如果不是可以问问你们的软件工程师!一定得用慢钟定时否则耗点一定大

一周热门 更多>