新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > stc单片机IO配置与PWM

stc单片机IO配置与PWM

作者: 时间:2016-12-01 来源:网络 收藏

所有PCA模块都可用作PWM输出(上图)。输出频率取决于决于PCA定时器的时钟源。

由于所有模块共用仅有的PCA定时器,所有它们的输出频率相同。各个模块的输出占空

是独立变化的,与使用的捕获寄存器[EPCnL,CCAPnL]有关。当寄存器寄存器CL的值小于[EPCnL,CCAPnL]时,输出为低;当寄存器CL的值等于或大于[EPCnL,CCAPnL]时,输出为高。当CL的值由FF变为00溢出时,[EPCnH,CCAPnH]的内容装载到[EPCnL,CCAPnL]中。这样就可实现无干扰地更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。由于PWM是8位的,所以:PWM的频率=:PCA时钟输入源频率/256PCA时钟输入源可以从以下8种中选择一种:SYSclk,SYSclk/2,SYSclk/4,SYSclk/6,SYSclk/8,SYSclk/ 2,定时器0的溢出,ECI/P3.4输入。。

举例:要求PWM输出频率为38KHz,选SYSclk为PCA/PWM时钟输入源,求出SYSclk的值

由计算公式38000=SYSclk/256,得到外部时钟频率SYSclk=38000 x 256 x=9,728,000

如果要实现可调频率的PWM输出,可选择定时器0的溢出率或者ECI脚的输入作为PCA/PWM的时钟输入源

当EPCnL = 0及CCAPnL=0x00H时,PWM固定输出高

当EPCnL = 1及CCAPnL=0xFFH时,PWM固定输出低

例:

#definePCA_IDLE_DISABLE0//1:MCU在IDLE模式时禁止PCA工作。0:MCU在IDLE模式时允许PCA工作。

#definePCA_SOURCE_SELECT1//选择PCA的基准时钟源。

//0:系统时钟Fosc/12。

//1:系统时钟Fosc/2。

//2:定时器0的溢出。

//3:ECI/P3.4脚的外部时钟输入(最大=Fosc/2)。

//4:系统时钟Fosc。

//5:系统时钟Fosc/4。

//6:系统时钟Fosc/6。

//7:系统时钟Fosc/8。

voiden_PCA(void)

{

CMOD= (PCA_IDLE_DISABLE << 7) | (PCA_SOURCE_SELECT << 1);//初始化PCA模式寄存器。

CL= 0x00;//清除PCA计数机

CH= 0x00;

CR= 1;//启动PCA计数机 CL 00->FF

}

void initPWM()

{

PWM=0x00;

PCA_PWM0=0x02;//初始化输出0

CCAP0H= 0xFF;//初始化输出0

CCAPM0= 0x42;//设置PCA模块0工作在PWM模式.......................

PCA_PWM1=0x02;//初始化输出0

CCAP1H= 0xFF;//初始化输出0

CCAPM1= 0x42;//设置PCA模块1工作在PWM模式

en_PCA();//打开PMW

}

DALE R01F采样电阻,阻值是0.01欧

RXD为接收数据的引脚,TXD为发送数据的引脚

PMW0 输出全1

PCA_PWM0=0x00;
CCAP0H = 0x00;


PMW0输出全0
PCA_PWM0=0x00;
CCAP0H = 0x00;//set PWM wide


上一页 1 2 下一页

评论


技术专区

关闭