在使用STC12C5A60S2系列单片机PCA输出PWM时需要设置PCA时钟源,如以下代码
void PCA_Init(void)
{
CCON = 0; //PCA初始化
CMOD = 0x00; //空闲时不计数,不产生中断,时钟源为Sysclk/12,PWM频率大约为4KHz
CL = 0x00; //PCA低8位清零
CH = 0x00; //PCA高8位清零
CCAPM0 = 0x42; //8位PWM模式,无中断
CCAP0H = 0xc0; //PWM0占空比(调节此处值调节PWM占空比)
CCAP0L = 0xc0; //PWM0占空比(调节此处值调节PWM占空比)
CCAPM1 = 0x42; //8位PWM模式,无中断
CCAP1H = 0x40; //PWM1占空比(调节此处值调节PWM占空比)
CCAP1L = 0x40; //PWM1占空比(调节此处值调节PWM占空比)
CR = 1; //启动PCA计数器
}
其中CMOD寄存器结构如下图所示:
其中CPS2、CPS1、CPS0为PCA计数脉冲源选择控制位。
PCA计数脉冲选择具体如下所示:
CPS2 CPS1 CPS0 选择PCA/PWM时钟源输入
0 0 0 0,系统时钟/12,SYSclk/12
0 0 1 1,系统时钟/2,SYSclk/2
0 1 0 2,定时器0的溢出脉冲。由于定时器0可以工作在1T模式,所以达到记一个时钟就溢出,从而达到最高频率CPU工作时钟SYSclk。通过改变定时器0的溢出率,可以实现可调频率的PWM输出。
0 1 1 3,ECI/P1.2(或P4.1)脚输入的外部时钟(最大速率 = SYSclk/2)
1 0 0 4,系统时钟,SYSclk
1 0 1 5,系统时钟/4,SYSclk/4
1 1 0 6,系统时钟/6,SYSclk/6
1 1 1 7,系统时钟/8,SYSc/8
关键字:STC12C5A60S2系列 单片机 PCA 时钟源
引用地址:
STC12C5A60S2系列单片机PCA时钟源设置
推荐阅读最新更新时间:2024-03-16 16:23
基于51单片机的多任务机制及应用
1 引言 传统的单片机程序一般采用单任务机制,单任务系统具有简单直观、易于控制的优点。然而由于程序只能按顺序依次执行,缺乏灵活性,只能使用中断函数实时地处理一些较短的任务,在较复杂的应用中使用极为不便。嵌入式多任务操作系统的出现解决了这个问题。在多任务系统中可以同时执行多个并行任务,任务之间可以相互跳转。但是嵌入式操作系统在提供强大功能的同时,也带来了代码量大、结构复杂、对硬件要求较高、开发难度大且成本高等问题。而很多时候只需要实现简单的多任务操作就可以满足实际需要,本文设计的这种简单的多任务机制,在只增加极少量C语言代码的前提下,不需使用汇编,无需对原本的程序进行大改动,就可以实现多任务操作。 实时操作系统RTOS的核
[单片机]
PIC单片机浮点数格式及其与十进制数之间的转换和程序设计步骤
在我们设计的仪表中采用PIC系列单片机,碰到了浮点数的运算问题,查阅其有关资料发现,其浮点数的格式及其与十进制数之间的转换,与我们常用的MCS-51单片机所提供的三字节、四字节浮点数完全不同,本文将说明其浮点数的格式及其与十进制数之间的转换和程序设计步骤。 1 浮点数的格式 Microchip公司单片机所采用的浮点数格式是IEEE-754标准的变异型。32位浮点数格式为: 其中:×表示一位二进制数0或1;eb为指数的偏差;S为浮点数的符号位,S=0为正数,S=1为负数;小数点“·”在符号位S的右边;BY0BY1BY2为尾数的小数部分。 应特别注意: ⑴浮点数隐含其整数部分为1。 ⑵十进制数0的浮点数表示为00H,00H,00
[单片机]
基于AT89C52单片机的SD卡读写设计
长期以来,以Flash Memory为存储体的SD卡因具备体积小、功耗低、可擦写以及非易失性等特点而被广泛应用于消费类电子产品中。特别是近年来,随着价格不断下降且存储容量不断提高,它的应用范围日益增广。当数据采集系统需要长时间地采集、记录海量数据时,选择SD卡作为存储媒质是开发者们一个很好的选择。在电能监测以及无功补偿系统中,要连续记录大量的电压、电流、有功功率、无功功率以及时间等参数,当单片机采集到这些数据时可以利用SD作为存储媒质。本文主要介绍了SD卡在电能监测及无功补偿数据采集系统中的应用方案。 设计方案 应用AT89C52读写SD卡有两点需要注意。首先,需要寻找一个实现AT89C52单片机与SD卡通讯的解决方案
[单片机]
关于51单片机中C语言编写的精确延时函数
有些特殊的应用会用到比较精确的延时(比如DS18B20等),而C不像汇编,延时精准度不好算。本人经过反复调试,对照KEIL编译后的汇编源文件,得出了以下几条精确延时的语句(绝对精确!本人已通过实际测试),今天贴上来,希望对需要的朋友有所帮助 sbit LED = P1^0; // 定义一个管脚(延时测试用) unsigned int i = 3; // 注意i,j的数据类型, unsigned char j = 3; // 不同的数据类型延时有很大不同 //-----------------各种精确延时语句----------------------------------- while( (i--)!=1 ); //
[单片机]
MSP430单片机时钟程序的设计
在430中,一个时钟周期 = MCLK晶振的倒数。如果MCLK是8M,则一个时钟周期为1/8us; 一个机器周期 = 一个时钟周期,即430每个动作都能完成一个基本操作; 一个指令周期 = 1~6个机器周期,具体根据具体指令而定。 另:指令长度,只是一个存储单位与时间没有必然关系。 MSP430根据型号的不同最多可以选择使用3个振荡器。我们可以根据需要选择合适的振荡频率,并可以在不需要时随时关闭振荡器,以节省功耗。这3个振荡器分别为: (1)DCO 数控RC振荡器。它在芯片内部,不用时可以关闭。DCO的振荡频率会受周围环境温度和MSP430工作电压的影响,且同一型号的芯片所产生的频率也不相同。但DCO的调节功能可以改善它的性能
[单片机]
基于单片机设计的分布式电池管理系统
1 前言 随着高科技及其产业的迅速发展,大存储容量的电池组能源系统已经越来越被人们所重视,在很多领域中都得到广泛地应用,如在汽车产业发展的新方向、新热点——电动汽车及混合动力车的研究及产业化中,将作为车载能源的主要供给者。 蓄电池组是由一定数量的单体电池串联组成的,它可以进行百次至千次的充放电;在使用中必须注意其各个单体电池的各种特性、电池温度、电池的剩余电量及总电流等参数,因为这些参数直接影响电池的使用寿命,必须做到优化运行和有效监控,防止电池出现过充、过放及温度过高等问题,从而延长电池的使用寿命和降低成本,特别是提高电池的可靠性。可以把给电池组配套的电子、控制及数字技术称为数字“电池电子技术”。同样在汽车的电子、数
[单片机]
探析上拉电阻和下拉电阻的用处和区别
因为单片机的输出端都是开漏输出的,就像三极管的集电极一样,如果没有上拉电阻它输出不了高电平。而下拉电阻就是拉低电平,跟上面是相反的,不过在单片机中,一般都是要上拉电阻的多,很少有下拉电阻的单片机。 加上下拉电阻就是加在单片机管脚的带负荷能力.如上拉电阻的接法就是电源正通过一个合适阻值的电阻后接到需上接的管脚即可. 上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用。同理,下拉就是将不确定的信号通过一个电阻嵌位在低电平,电阻同时起限流作用。 上拉是对器件注入电流;下拉是输出电流,只是弱强。 上拉电阻的阻值不同,没有什么严格区分,对于非集电极(或漏极)开路输出型电路(如普通门电路)提升电流和电压的能力是
[单片机]
MCS 51单片机的温度控制系统方案
在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。、采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。本文以它为例进行介绍,希望能收到举一反三和触类旁通的效果。 1硬件电路设计 以热电偶为检测元件的单片机 温度控制系统 电路原理图如图1所示 。 1.1 温度检测和变送器 温度检测元件和变送器的类型选择与被控温度的范围和精度等级有关。镍铬/镍铝热电偶适用于0℃-1000℃的温度检测范
[单片机]