搜索
bottom↓
回复: 3

C8051f023的晶振频率如何设置,我设置了,有问题呀?大虾...

[复制链接]

出0入0汤圆

发表于 2012-6-20 22:23:33 | 显示全部楼层 |阅读模式
#include <c8051f020.h>
sbit led=P1^4;
void delay(int dl)
{
    int i,j;
    for (i=0; i<=dl; i++)
    {
        for (j=0; j<=20000; j++)
        {
        }
    }
}
main()
{   int i;
    WDTCN     = 0xDE;
    WDTCN     = 0xAD; //禁用看门狗
//设置时钟源,用config2 生成的代码,晶振18.432MHZ  
        OSCXCN    = 0x67;
    for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
    while ((OSCXCN & 0x80) == 0); //运行到这句停止了调试,调试无法继续下去了
    OSCICN    = 0x08;


    while(1)
    {
        delay(300);
        led=0;
        delay(300);
        led=1;
    }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2012-6-21 12:16:32 | 显示全部楼层
自己顶一下。

出0入0汤圆

 楼主| 发表于 2012-6-21 21:36:56 | 显示全部楼层
自己顶一下。

出0入0汤圆

 楼主| 发表于 2012-6-22 00:19:10 | 显示全部楼层
网上搜了下这个问题,找到了c8051f060的晶振设置的程序例子,自己改了下,终于能用了。

/////////////////////////////////////
//        Generated Initialization File  //
/////////////////////////////////////

#include "C8051F020.h"

// Peripheral specific initialization functions,
// Called from the Init_Device() function
sbit Power5    = P1^4;
static int t=0;
void Reset_Sources_Init()
{
    WDTCN     = 0xDE;
    WDTCN     = 0xAD;
}

void Port_IO_Init()
{
    P1MDOUT   = 0x10;
    XBR2      = 0x40;
}

void Oscillator_Init()
{
    int i;
    //设置内部时钟
    OSCICN = 0x05;                      // Configure internal oscillator for  4MHZ
    RSTSRC = 0x04;                                           //启用时钟丢失检测
    //设置外部时钟源
    OSCXCN    = 0x67;                                   //晶振频率大于6.7MHZ
    for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
    while ((OSCXCN & 0x80) == 0); //
    //切换时钟源到外部时钟
    OSCICN    = 0x0C;
}

void Timer_Init()
{
    TCON      = 0x10;
    TMOD      = 0x01;
        //定时寄存器初值设定
    TL0       = 0xE0;
    TH0       = 0xFF;
}

void Interrupts_Init()
{
    IE        = 0x02;        //启用0号定时器中断
}

timer0()  interrupt 1
{


    TF0=0;                 //0#定时器溢出寄存器复位
    t++;
    if (t==30)                                                //接近1秒钟一次
    {
        Power5=1;
    }
    if (t>=60)
    {
        Power5=0;
        t=0;
    }
}
// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
    Oscillator_Init();
    Reset_Sources_Init();
    Timer_Init();
    Port_IO_Init();

    Interrupts_Init();
}

void delayms(int de)
{
    int i,j;
    for (i=0; i<=30; i++)
    {
        for (j=0; j<=de; j++)
            {  }
    }

}
void main()
{
    Init_Device();

    ET0=1;                                //启用0#定时器中断功能
    EA=1;                           //开全局中断
    TR0=1;                           //启动0#定时器计数
    while(1)
    {

    }

}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 00:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表