打印

请教C8051单片机的时钟问题

[复制链接]
4368|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
ayb_ice| | 2011-1-4 09:44 | 只看该作者
/////////////////////////////////////
//  Generated Initialization File  //
/////////////////////////////////////

#include "C8051F340.h"

// Peripheral specific initialization functions,
// Called from the Init_Device() function
void PCA_Init()
{
    PCA0MD    &= ~0x40;
    PCA0MD    = 0x00;
}

void Port_IO_Init()
{
    // P0.0  -  Unassigned,  Open-Drain, Digital
    // P0.1  -  Unassigned,  Open-Drain, Digital
    // P0.2  -  Unassigned,  Open-Drain, Digital
    // P0.3  -  Unassigned,  Open-Drain, Digital
    // P0.4  -  Unassigned,  Open-Drain, Digital
    // P0.5  -  Unassigned,  Open-Drain, Digital
    // P0.6  -  Skipped,     Open-Drain, Analog
    // P0.7  -  Skipped,     Open-Drain, Analog

    // P1.0  -  Unassigned,  Open-Drain, Digital
    // P1.1  -  Unassigned,  Open-Drain, Digital
    // P1.2  -  Unassigned,  Open-Drain, Digital
    // P1.3  -  Unassigned,  Open-Drain, Digital
    // P1.4  -  Unassigned,  Open-Drain, Digital
    // P1.5  -  Unassigned,  Open-Drain, Digital
    // P1.6  -  Unassigned,  Open-Drain, Digital
    // P1.7  -  Unassigned,  Open-Drain, Digital

    // P2.0  -  Unassigned,  Open-Drain, Digital
    // P2.1  -  Unassigned,  Open-Drain, Digital
    // P2.2  -  Unassigned,  Open-Drain, Digital
    // P2.3  -  Unassigned,  Open-Drain, Digital
    // P2.4  -  Unassigned,  Open-Drain, Digital
    // P2.5  -  Unassigned,  Open-Drain, Digital
    // P2.6  -  Unassigned,  Open-Drain, Digital
    // P2.7  -  Unassigned,  Open-Drain, Digital

    // P3.0  -  Unassigned,  Open-Drain, Digital
    // P3.1  -  Unassigned,  Open-Drain, Digital
    // P3.2  -  Unassigned,  Open-Drain, Digital
    // P3.3  -  Unassigned,  Open-Drain, Digital
    // P3.4  -  Unassigned,  Open-Drain, Digital
    // P3.5  -  Unassigned,  Open-Drain, Digital
    // P3.6  -  Unassigned,  Open-Drain, Digital
    // P3.7  -  Unassigned,  Open-Drain, Digital

    P0MDIN    = 0x3F;
    P0SKIP    = 0xC0;
}

void Oscillator_Init()
{
    int i = 0;
    OSCXCN    = 0x67;
    for (i = 0; i < 3000; i++);  // Wait 1ms for initialization
    while ((OSCXCN & 0x80) == 0);
    CLKSEL    = 0x01;
}

// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void)
{
    PCA_Init();
    Port_IO_Init();
    Oscillator_Init();
}

void main(void)
{
    Init_Device();

    while(1)
    {
           ....
    }
}

使用特权

评论回复
板凳
empty_net| | 2011-1-4 10:14 | 只看该作者
抢沙发

使用特权

评论回复
地板
airwill| | 2011-1-4 10:34 | 只看该作者
乍一看, 好象很复杂.
细看, 原来就配置一下 I/O 端口,  切换设置一下时钟.
恳请 2 楼在回复时, 可以先精简一下, 再出牌.
哈哈哈哈......

使用特权

评论回复
5
ayb_ice| | 2011-1-4 11:32 | 只看该作者
LS
我那是用配置向导产生的代码

使用特权

评论回复
6
lws| | 2011-1-4 11:50 | 只看该作者
呵呵,用C8051F单片机要尽量用配置向导,楼主估计是没用过吧

使用特权

评论回复
7
dccdaa2222|  楼主 | 2011-1-4 13:49 | 只看该作者
6楼兄弟说说看怎 么用配置向导.................
OSCXCN=0X67是用外部的晶振了/...请教用内部的可以配置吗?

使用特权

评论回复
8
ayb_ice| | 2011-1-4 14:05 | 只看该作者
就是这个软件

未命名.JPG (106.51 KB )

未命名.JPG

使用特权

评论回复
9
lws| | 2011-1-4 17:43 | 只看该作者
7# dccdaa2222
http://www.xhl.com.cn/download.asp?bigdownid=7&bigdownname=调试器
Configuration Wizard 2.90 你用了就知道了。

使用特权

评论回复
10
shell.albert| | 2011-1-4 19:28 | 只看该作者
仔细看Datasheet,对于有一些外部振荡信号,通过寄存器是查不出来的.之前就犯过这样的错误.仔细看Datasheet!!!!!!!!!!!!!!!!!!

使用特权

评论回复
11
ningling_21| | 2011-1-4 20:29 | 只看该作者
配置向导方便的很...

使用特权

评论回复
12
我是土匪| | 2011-1-5 09:24 | 只看该作者
学习了

使用特权

评论回复
13
大秦正声| | 2011-1-5 10:05 | 只看该作者
内部的12M晶振正常的条件下有+/-1.5%的误差!
校验后可达到+/-0.25%的误差。
使用内部先关狗!
PCA0MD =0;//关闭看门狗

OSCICN=0xc3;//选用内部12MHz

使用特权

评论回复
14
ayb_ice| | 2011-1-5 11:45 | 只看该作者
内部的12M晶振正常的条件下有+/-1.5%的误差!
校验后可达到+/-0.25%的误差。
使用内部先关狗!
PCA0MD =0;//关闭看门狗

OSCICN=0xc3;//选用内部12MHz
大秦正声 发表于 2011-1-5 10:05



没有说"校验后可达到+/-0.25%的误差。"
出厂时本来就就是经过校准的,手册说的一般是+/-2%,不过保证是在全工作范围的

使用特权

评论回复
15
大秦正声| | 2011-1-5 13:16 | 只看该作者
c8051f32x/34x出厂校验内部的12M晶振有+/-1.5%的误差!
经过软件设定后usb通信晶振频率有0.25%的误差!
普通的c8051f31x等内部的晶振有+/-2%的误差!

使用特权

评论回复
16
dccdaa2222|  楼主 | 2011-1-7 17:09 | 只看该作者
没有说"校验后可达到+/-0.25%的误差。"
出厂时本来就就是经过校准的,手册说的一般是+/-2%,不过保证是在全工作范围的
ayb_ice 发表于 2011-1-5 11:45


为会我用配置向导配出来是:
OSCICN=0x83;

使用特权

评论回复
17
大秦正声| | 2011-1-8 12:46 | 只看该作者
可以仔细看下边的图片!
就会找到的!

欢迎到我的博客
http://yang96381.blog.163.com/

c8051f.JPG (147.53 KB )

c8051f.JPG

使用特权

评论回复
18
lvchachey| | 2011-8-7 22:23 | 只看该作者
C8051的配置向导在哪里下载啊?可不可以给个链接?楼上的已经失效了啊

使用特权

评论回复
19
mixsall| | 2011-8-8 02:10 | 只看该作者
to 18L
   我有这个 我是从新华龙的网站上面下的  仔细找找就能找到;找不到可以联系我 Q853636827;

使用特权

评论回复
20
289172800| | 2011-8-8 17:25 | 只看该作者
[b]楼上各位,新华龙单片机手册上面指出 ,ad参考电压要比电源电压低0.3v,大家知道这是为什么吗?如果我参考电压和电源电压接在一起会有什么后果.

我现在手上有个项目是是用c8051f120的,我的ad参考电压接的是3.3v,和电源电压接在一起.现在出现我把ad脚接到地的读出ad不为0.有几十左右的ad值. 接3.3v读出的ad值也不能达到4095. 首先说明一下.我总共用了10个通道. 不是所有的通道都有这个现象.也不是所有的板子有这个现象. 会有一部分板子的某几个通道会有这个现象. 大家看看.这是什么原因. 还有我用烙铁烫下管脚,所有现象都消失了.但过了几个小时有会有这个现象.

使用特权

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

本版积分规则

11

主题

42

帖子

1

粉丝