打印
[51单片机]

c8051f410使用外部晶振后,使能交叉开关死机?

[复制链接]
2425|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ningling_21|  楼主 | 2014-3-25 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
////////////////////////////////////////////////////////////////////////////////////////////////
void init_c8051f410(void )
{        
//        、、----------------------                                      
        P1MDOUT|=0X04;                //P1.2推挽
        P1MDOUT|=0X08;                //P1.3推挽

//        、、----------------------
        P0MDOUT |=0X04;                //P0.2推挽
        P0MDOUT |=0X08;                //P0.3推挽

        P0MDOUT |=0X80;            //p0.7推挽
//        、、----------------------
        P2MDOUT =0X03;
        P2MDIN  =0XFF;
        XBR0      = 0x01;         //UART0 连接到引脚                                          
XBR1      = 0x40; //使能交叉开关
}

////////////////////////////////////////////////////////////////////////////////////////////////
void SYSCLK_Init (void)
{

        uint dly;
           OSCICN |= 0x87;                     // Configure internal oscillator for  

        while((OSCICN&0X40)!=0X40);

        CLKSEL |= 0x00;
        //------------------------------------

        P1&=~0X03;
        P1MDIN &=~0X01;
        P1MDIN &=~0X02;                //        模拟输入
        P1MDIN &=~0X04;                //  p1.2模拟输入
        //使能外部振荡器
        OSCXCN |=0X67;                //0110 0111
        //等待1毫秒
        do{
                dly=100;
                while(dly--);
        }while((OSCXCN&0X80)!=0X80);
        //查询XTLVLD =>1。
        dly=100;
        while(dly--);
        CLKSEL |=0X01;                                    
}
////////////////////////////////////////////////////////////////////////////////////////////////
void main(void)
{        
        PCA0MD    &= ~0x40;
        SYSCLK_Init();
        init_c8051f410();

        //---------------------------------
        for(;;)
        {                  
        
                run_cnt++;
                if(run_cnt>65530)
                {
                         run_cnt=0;
                         //运行灯闪烁
                        led_run=~led_run;
                }
        
        }
}
如题: 晶振初始化结束后,执行到 XBR1 =0X40 后 就死机了... 不使用外部晶振没这种现象...


相关帖子

沙发
ayb_ice| | 2014-3-25 15:46 | 只看该作者
对应GPIO要设为模拟IO,还要跳过

使用特权

评论回复
板凳
ayb_ice| | 2014-3-25 15:46 | 只看该作者
用配置向导产生代码

使用特权

评论回复
地板
ningling_21|  楼主 | 2014-3-25 16:40 | 只看该作者
ayb_ice 发表于 2014-3-25 15:46
用配置向导产生代码

不好意思,使能了外部晶振,忘记关闭内部振荡器了...

使用特权

评论回复
5
ningling_21|  楼主 | 2014-3-25 16:43 | 只看该作者

这样配置时钟就可以了

本帖最后由 ningling_21 于 2014-3-25 16:45 编辑
void SYSCLK_Init (void)                   //初始化系统时钟
{
           int i=0;
        uint dly;
        //------------------------------------
        P1        |= 0x03;
        P1MDIN &=~0X01;
        P1MDIN &=~0X02;                //        模拟输入
        P1MDIN &=~0X04;                //  p1.2模拟输入
        //使能外部振荡器
        OSCXCN |=0X67;                //0110 0111
        //等待1毫秒
        do{
                dly=100;
                while(dly--);
        }while((OSCXCN&0X80)!=0X80);
        //查询XTLVLD =>1。
        dly=100;
        while(dly--);
        CLKSEL |=0X01;
        OSCICN    = 0x00;                                    
}
用上面的代码初始化系统时钟就没问题了...

使用特权

评论回复
6
ayb_ice| | 2014-3-25 17:05 | 只看该作者
ningling_21 发表于 2014-3-25 16:40
不好意思,使能了外部晶振,忘记关闭内部振荡器了...

内部的关不关没有关系的

使用特权

评论回复
7
ningling_21|  楼主 | 2014-3-25 21:41 | 只看该作者
ayb_ice 发表于 2014-3-25 17:05
内部的关不关没有关系的

经过反复验证发现,使能交叉开关与关闭内部振荡器与否无关。

开始时把XTAL1,XTAL2两脚置为低电平时,在以后的使能交叉开关就会死机,当把X1,X2两脚置为高电平时,使能交叉开关运行正常...

芯片资料里提示初始化外部晶振时把X1,X2置为低,难道资料错了?

使用特权

评论回复
8
ayb_ice| | 2014-3-26 07:09 | 只看该作者
这都哪和哪,设为模拟口后,根本就不能控制输出了,

使用特权

评论回复
9
ningling_21|  楼主 | 2014-3-26 13:32 | 只看该作者
ayb_ice 发表于 2014-3-26 07:09
这都哪和哪,设为模拟口后,根本就不能控制输出了,

那跟什么有关系呢?

使用特权

评论回复
10
cdf1214| | 2015-3-28 16:55 | 只看该作者
本公司主营TI. NXP. IR. ON. SiLicon                                                                                                       等著名世界品牌产品。
MSP430F一系列TI储存芯片 微控处理器
MSP430F149IPMR MSP430F5438AIPZR MSP430F5438IPZR等。
C8051F 一系列SILICON 单片机 微控处理器
C8051F020 C8051F120 C8051F340 C8051F040等
LPC一系列NXP单片机  
LPC2132FBD64 LPC2134FBD64 LPC2214FBD144  
LPC2378FBD144 LPC2292FBD144等一系列供应
专营:低压差 基准源 三 五 七端稳压 二三极管 场效应 快恢复 肖特基二极管 可控硅 达林顿 整流桥 TVS管 光藕 MAX AD 集成电路
                   北京长实拓展电子销售:陈冬锋
                                     QQ:2850327057
                      电话:15711002528,13641144498

使用特权

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

本版积分规则

5013

主题

17707

帖子

51

粉丝