c8051f040晶振不起振~~郁闷

[复制链接]
4537|16
 楼主| sunmax 发表于 2012-3-7 21:27 | 显示全部楼层 |阅读模式
本帖最后由 sunmax 于 2012-3-7 21:30 编辑

哎今天调试了一天,电路都检查好几遍了,以前都用过,查遍了一切可能。可是现在晶振不起振,22.1184M 和30p电容~~~ 郁闷。。。。明天准备再去买一片040,一看究竟。等俺的消息吧。。。回寝觉觉。
lyjian 发表于 2012-3-7 22:03 | 显示全部楼层
c8051f芯片的晶振是要配置才能工作的,不要拿它当51用
xjycug 发表于 2012-3-7 23:02 | 显示全部楼层
C8051内部有振荡器24M的,可以用
xjycug 发表于 2012-3-7 23:03 | 显示全部楼层
外接晶体分有源与无源,配置是不一样的
xinxi 发表于 2012-3-8 08:03 | 显示全部楼层
到这里下载一个 C8051的 配置向导,,按照向导生成的初始化代码  进行,,http://www.xhl.com.cn/upfile/Flash/2011/5/20110530164052.rar
ayb_ice 发表于 2012-3-8 08:32 | 显示全部楼层
IO需要配置正确,首先必须选择作为晶振IO,模拟IO,还要正确配置频率,还要选择作为CPU时钟。。。。
受不了了 发表于 2012-3-8 14:28 | 显示全部楼层
他家的狗默认是放出来的,估计是被狗咬到了,不用任何配置,进门就点个灯,如果灯闪就是被狗咬了
dzxc 发表于 2012-3-8 19:45 | 显示全部楼层
void SYSCLK_Init (void)
{
    unsigned char temppage;
        unsigned int n;                 //local variable used in delay FOR loop.
    temppage=SFRPAGE;
    SFRPAGE = CONFIG_PAGE;          //switch to config page to config oscillator
    OSCXCN  = 0x67;                 //16M
    for (n=0;n<255;n++);            //delay about 1ms
    while ((OSCXCN & 0x80) == 0);   //wait for oscillator to stabilize
    CLKSEL |= 0x01;                 //switch to external oscillator
    SFRPAGE=temppage;
}
zxx6176 发表于 2012-3-10 13:14 | 显示全部楼层
那么请问如何配置呢 我现在和这楼主一样,单步运行没问题,就是跑步起来,我也知道晶振需要设置,也设置过 还是不行, 能指点一下 需要怎么设置 或者设置成什么样的 就可以达到我以前用的 STC51一样的效果了么? 2# lyjian
lyjian 发表于 2012-3-10 14:28 | 显示全部楼层
那么请问如何配置呢 我现在和这楼主一样,单步运行没问题,就是跑步起来,我也知道晶振需要设置,也设置过 还是不行, 能指点一下 需要怎么设置 或者设置成什么样的 就可以达到我以前用的 STC51一样的效果了么?  2# ...
zxx6176 发表于 2012-3-10 13:14

你的问题在你发的帖子里已经有人回答:注意看门狗关了没有。
coody 发表于 2012-3-10 18:30 | 显示全部楼层
C8051F用起来是比较麻烦
dlllxm000 发表于 2012-3-10 20:42 | 显示全部楼层
一以前用过f020和f330,好像没这种问题哦,我一直都是按照官方的晶振配置的
zxx6176 发表于 2012-3-11 10:30 | 显示全部楼层
哦 谢谢啊 我看看WHACHDOG 10# lyjian
zxx6176 发表于 2012-3-12 15:42 | 显示全部楼层
您好 看门狗已经关了,而且灯也开始能够按照要求闪烁,或者规定时间内亮灭了
但现在新的问题又出现了, 把同样的语句放在子程序里跑起来,单片机 只进行第一个子程序,不会跑出来。 10# lyjian
lyjian 发表于 2012-3-12 21:53 | 显示全部楼层
您好 看门狗已经关了,而且灯也开始能够按照要求闪烁,或者规定时间内亮灭了
但现在新的问题又出现了, 把同样的语句放在子程序里跑起来,单片机 只进行第一个子程序,不会跑出来。 10# lyjian  ...
zxx6176 发表于 2012-3-12 15:42

那还要问吗,软件有问题呗
那你的程序贴出来让别人看是什么问题呗,靠别人的猜想是解决不了你的问题的
zxx6176 发表于 2012-3-13 08:08 | 显示全部楼层
void main()
{   
           
   uchar wakeup=0;
   uint i,j;
   PCA0MD &= ~0x40;                    // Disable Watchdog timer
   Oscillator_Init();                  // Initialize the system clock
   Port_Init ();                       // Initialize crossbar and GPIO
   Ext_Interrupt_Init();               // Initialize External Interrupts
   EA = 1;
  
while(1)
{  
  
  wakeup++;
  
  for(j=0;j<3;j++)
  {  
     RUN=0 ;                // 2灯亮                                       
     delay1s(1);     
  RUN=1 ;                  // 2灯灭                                    
     delay1s(1);            
  }
     RUN=1 ;
}

我看他们有的说 我子程序里的“看门狗”需要打开, 那主程序里关闭了,在延时程序里再打开一次?  我真不知道该怎么解决 以前在STC上面 没有遇到过类似的问题
请各位给小弟些许建议,往哪里去改动,有方向了 我才知道去哪里找资料 改程序

15# lyjian
lyjian 发表于 2012-3-13 08:31 | 显示全部楼层
不要看门狗的话,一开始直接关掉就行了,不用管哪里开哪里关那么麻烦。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

205

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部