基于C8051F340单片机的可编程计数器PCA0工作在频率输出方式的C程序

一、前言

C8051F340单片机的可编程计数器PCA0可以工作在频率输出模式,输出方波频率。
频率输出方式可在模块的CEXn引脚产生可编程频率的方波。捕捉/比较模块的高字节保持输出电平改变前要计的PCA时钟数。
频率计算公式为:
频率计算公式
FPCA是由PCA方式寄存器(PCA0MD)中的CPS2-0位选择的时钟的频率。捕捉/比较模块的低字节与PCA0计数器的低字节比较;两者匹配时,CEXn的电平发生改变,高字节中的偏移值被加到PCA0CPLn。通过将PCA0CPMn寄存器中ECOMn、TOGn和PWMn位置‘1’来使能频率输出方式。

二、程序展示

1、头文件部分

#include <c8051f340.h> 
#define SYSCLK  12000000     // 内部晶振频率12M
#define f_CEX0  50000   //定义输出频率
void OSCILLATOR_Init (void);
void PORT_Init (void);
void PCA0_Init (void);

2、主程序部分

void main (void)
{
   PCA0MD = 0x00;    // 关闭看门狗

   PORT_Init ();     //端口初始化
   OSCILLATOR_Init ();    // 晶振初始化
   PCA0_Init ();      // PCA0初始化

   while (1);
}

3、晶振初始化程序

void OSCILLATOR_Init (void)
{
   OSCICN = 0x83;   
   CLKSEL = 0x00;      
}

4、端口初始化程序

void PORT_Init (void)
{
   XBR0    = 0x00;
   XBR1    = 0x41;     //将CEX0配置到P0.0,
   P0MDOUT |= 0x01;    //设置P0.0为推挽输出
}

5、PCA0初始化程序

void PCA0_Init (void)
{
   PCA0CN = 0x00;    //停止计时,清除所有标志
   PCA0MD = 0x00;    //使用系统时钟12分频作为时基
   PCA0CPM0 = 0x46;  //设置频率输出模式
   PCA0CPH0 = (SYSCLK/12)/(2*f_CEX0);  //设置高位值

   CR = 1;   //启动PCA0
}
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xll_007

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

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

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

打赏作者

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

抵扣说明:

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

余额充值