基于C8051F340单片机的外部振荡编程——使用外部RC振荡电路构成的振荡器的C程序

一、前言

1、外部振荡器电路可以驱动外部晶体、陶瓷谐振器、电容或 RC 网络。也可以使用一个外部CMOS 时钟提供系统时钟。
2、本文使用外部 RC 电路作为单片机的外部振荡源,电容不应大于 100pF;但当电容值很小时,PCB 的寄生电容将在总电容中占支配地位。如果所希望的频率是 100kHz,选 R = 246kΩ 和 C = 50pF。
频率计算公式如下:
RC频率公式
3、实际上手头并没有246K的电阻,实际手头只有330K的电阻和33pF的电容,计算出的RC的频率为82.5KHz。

二、程序展示

1、头文件部分

#include <c8051F340.h>  
#define XFCN 2
void OSCILLATOR_Init (void);
void PORT_Init (void);

2、主程序部分


void main (void)
{
   PCA0MD &= ~0x40;  // 关闭看门狗

   PORT_Init();       //端口初始化
   OSCILLATOR_Init ();                 //振荡器初始化

   while (1) {};  

}      

3、振荡器初始化

void OSCILLATOR_Init (void)
{

   int i;                              // 延时用
   OSCXCN = (0x40 | XFCN);      //启动外部晶振
   for (i=0; i < 256; i++);            // 延时等待启动完成
   RSTSRC = 0x06;                      // 允许丢失复位
   CLKSEL = 0x01;                      //选择外部时钟
   OSCICN = 0x00;                      // 禁止内部时钟
}

4、端口初始化

void PORT_Init (void)
{
   P0MDIN &= ~0x80;  
   P0SKIP |= 0x80;  
   P0MDOUT |= 0x01;     // P0.0输出系统时钟,用于检测
   XBR0    = 0x08;           
   XBR1    = 0x40;  
}

5、说明

由于电路板上实际存在一些寄生电容,最后实际测出的频率位89K左右,每块电路板的情况不一样,测出的实际频率也会有差别,毕竟RC作为振荡器的是一种比较粗糙的振荡器。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xll_007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值