STC单片机的两路pca/pwm可以同时一路做为定时器,另一路做pwm输出吗?寄存器设置好像有冲突

如题所述

STC单片机的两路pca/pwm可以同时一路做为定时器,另一路做pwm输出,完全可以,只是PCA

定时器的时钟频率为相同,这是一个简单的示例,PCA0为定时器,PWM1为pwm输出,

pwm输出 由定时器 中断 100次 加1 调节pwm的输出。

 

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-29
STC12C5A系列单片机没有问题,我已调试过了。但是12C56系列的单独作PWM或定时器没有问题,但同时一路做PWM与定时器不行,到现在也没有调试出来,如有高手把它调试出来了,请分享一下。
我现在把STC12C5A16S2的调试程序给大家分享:
#include "reg51.h"
#include "intrins.h"
#define FOSC 18432000L
#define T100Hz (FOSC / 12 / 100)

typedef unsigned char BYTE;
typedef unsigned int WORD;
BYTE value;
WORD num,cnt;

sbit LED = P1^0;

void DelayMs()
{
WORD ms = 5000;
while(--ms);
}
/*Declare SFR associated with the PCA */
sfr CCON = 0xD8; //PCA control register
sbit CCF0 = CCON^0; //PCA module-0 interrupt flag
sbit CCF1 = CCON^1; //PCA module-1 interrupt flag
sbit CR = CCON^6; //PCA timer run control bit
sbit CF = CCON^7; //PCA timer overflow flag
sfr CMOD = 0xD9; //PCA mode register
sfr CL = 0xE9; //PCA base timer LOW
sfr CH = 0xF9; //PCA base timer HIGH
sfr CCAPM0 = 0xDA; //PCA module-0 mode register
sfr CCAP0L = 0xEA; //PCA module-0 capture register LOW
sfr CCAP0H = 0xFA; //PCA module-0 capture register HIGH
sfr CCAPM1 = 0xDB; //PCA module-1 mode register
sfr CCAP1L = 0xEB; //PCA module-1 capture register LOW
sfr CCAP1H = 0xFB; //PCA module-1 capture register HIGH
sfr PCAPWM0 = 0xf2;
sfr PCAPWM1 = 0xf3;

void PCA_isr() interrupt 7 using 1
{
CCF1 = 0; //Clear interrupt flag
CCAP1L = value;
CCAP1H = value >> 8; //Update compare value
value += T100Hz;
if (cnt-- == 0)
{
cnt = 10; //Count 100 times
LED = !LED; //Flash once per second
}
}
void main()
{
CCON = 0; //Initial PCA control register
//PCA timer stop running
//Clear CF flag
//Clear all module interrupt flag
CL = 0; //Reset PCA base timer
CH = 0;
CMOD = 0x02; //Set PCA timer clock source as Fosc/2
//Disable PCA timer overflow interrupt
CCAP0H = CCAP0L = 0x80; //PWM0 port output 50% duty cycle square wave
CCAPM0 = 0x42; //PCA module-0 work in 8-bit PWM mode
//and no PCA interrupt
// CCAP1H = CCAP1L = 0x08; //PWM1 port output 0% duty cycle square wave
// PCAPWM0 = 0x03;
// PCAPWM1 = 0x03;
CCAPM1 = 0x49; //PCA module-1 work in 8-bit PWM mode
//and no PCA interrupt
CR = 1; //PCA timer start run
value = T100Hz;
CCAP1L = value;
CCAP1H = value >> 8; //Initial PCA module-0
value += T100Hz;
EA = 1;

while (1)
{
value++;
CCAP0H = CCAP0L = value;
CCAP1H = CCAP1L = value;
DelayMs();
}
}
第2个回答  2015-04-16

完全可以 同时做 PCA 定时器 与 PWM 输出。

第3个回答  2012-03-24
CH,CL是公用的,如果T0产生的溢出率非常低,那么如果设置pwm的语句和设置定时器的语句之间的时间比较长,那会出现问题,解决这个问题的办法就是:要么宏晶设计芯片时对每一路都设计CH,CL,要么提高T0的溢出率
第4个回答  2011-07-29
可以同时用的,不是用同一个寄存器的

用STC单片机的PCA做定时器,输出PWM
define Start_PWM()CR = 1\/\/PCA计时器开始工作 define Stop_PWM()CR = 0\/\/PCA计时器停止工作 extern void InitPWM();extern void ChangePWM(uint16 f);\/\/***pwm.C include "pwm.h"include "stc15F2k60s2.h"define CCP_S0 0x10 \/\/P_SW1.4 define CCP_S1 0x20 \/\/P_SW1.5...

stc单片机中的pca定时器跟普通定时器有什么不同
其实就是个功能稍微强大点的定时器 - -! 比如STC12C2052AD,它的PCA是16位的计数器,计数脉冲可选(时钟分频后做为计数信号,或者外部信号),包含两个比较单元,这两个比较单元可以用来产生比较匹配或者PWM,也就是上面所说的 两个模块。 觉得STC的手册真别扭。。。 当PCA本身的计数数值与比较匹配相等时,可以触发中断...

STC单片机定时器怎么用
但凡是用到需要精确定时的控制,都要对片内相关的定时器进行配置,可以是T0也可以是T1,有些单片机或许更多,他们可以单独使用,也可以顺序使用。STC单片机的PCA定时器是配合其硬件PWM功能使用的可编程定时器,一般情况下当使用硬件PWM功能时需要配置PCA定时器,至于其他用途使用可以参看数据手册。关于“指定...

STC单片机产生PWM波
我记得STC 这款芯片如果使用自身PCA\/PWM模块的话,频率计算如下图:所以频率=(16M)\/256;这里假设您使用的是16M的晶振,并且在相关寄存器中配置了PCA时钟输入是ECI 如果是其他就是 内部晶振 = SYSclk

求教用STC 1T的单片机的PWM模拟产生两路DA的方案,是用于把温湿度数字信...
80-(-40)=120,120\/01=1200 所以需要10bit(2^10=1024)的DA才行,那就是说至少要10bit的PWM。但STC12单片机的PCA只能产生8bit的PWM波形,所以不太适合。另外,PWM波形转变为直流电之后,占空比和直流电的电压值不是成线性的,因为在PWM占空比比较小时,滤波电路对PWM的滤波效果并不好。

请教STC单片机timer0和PCA模块的问题!
定时器0作为PCA模块时钟源后, 其溢出速度可能会很快(根据你的设置而定),开放timer0中断会频繁的进入中断,极端情况下,比如,24MHZ,定时器0分频为12,则溢出率为2MHZ, MCU基本就在中断里了.所以,定时器0作为PCA模块时钟源后,不要允许中断,被独占.

求stc单片机的PCA定时器程序!!!
\/* --- 演示 STC 1T 系列单片机 用PCA功能实现16位定时器 ---*\/ include "reg51.h"include "intrins.h"define FOSC 18432000L define T100Hz (FOSC \/ 12 \/ 100)typedef unsigned char BYTE;typedef unsigned int WORD;\/*Declare SFR associated with the PCA *\/ sfr CCON = 0xD8; \/\/PC...

你们之前用stc12c5a60s2这个单片机时是用PCA来产生pwm波么?如果是的...
stc12c5a60s2单片机 的 PCA 定时器 PWM 发生器,与 T0 T1 定时器 无关,相互是独立的 使用 PWM 发生器。 不会影响 T0 T1 的使用,进不了中断 应该 是 定时器 设置有问题,检查一下 程序吧。

关于STC12C5A60S2单片机的PCA\/PWM应用
工作在pwm模式下cl一定是从0加到255溢出的 不会装载任何值 ccap0l是会自动跟cl比较 大于输出0小于输出1 cl完成一个255计数之后ccap0h的值重新装入ccap0l cl还是从0开始计数 epcnl的作用是 固定pwm输出 当 epc0l=1时 pwm固定输出低 epc0l=0时 pwm固定输出高 ...

51单片机中改变PCA时基输出的PWM频率没改变时怎么回事
这里的意思是。传统51的定时器是没有PWM功能的,但是PHILIP的增强型51,它的定时器有这功能,所以单独提出说明了,即定时器自己就能输出PWM。有PCA的意思是,在定时器的基础上,实现了一些其它的功能,实现这个工能的东西是PCA。有PCA的单片机,PWM、捕捉、高速输出、频率输出等都可以用模块完成(用你的...

相似回答