PWM 配置

PWM配置:定时器时钟分频详解
本文介绍了如何使用定时器进行时钟分频以实现PWM配置,详细解析了相关datasheet中的关键信息。

1、用一个定时器来做时钟分频。具体datasheet,没什么好注意的。

#include <reg52.h>

#define uchar unsigned char

uchar PWM0_Set;
uchar PWM1_Set;

/================= PCA/PWM 特殊功能寄存器定义 ======================/
sfr CCON = 0xD8;	//PCA控制寄存器
sfr CMOD = 0xD9;	//PCA模式寄存器
sfr CL = 0xE9;		//PCA Base Timer Low
sfr CH = 0xF9;		//PCA Base Timer High
sfr CCAP0L = 0xEA;	//PCA 模块0捕获寄存器 低
sfr CCAP0H = 0xFA;	//PCA 模块0捕获寄存器 高
sfr CCAP1L = 0xEB;	//PCA 模块1捕获寄存器 低
sfr CCAP1H = 0xFB;	//PCA 模块1捕获寄存器 高
sfr CCAPM0 = 0xDA;      //PCA 比较/捕获模块0寄存器
sfr CCAPM1 = 0xDB;	//PCA 比较/捕获模块1寄存器
sbit CR = 0xDE;		//PCA 计数器阵列运行控制位

/=========== 定时器 T0 初始化 ============/
void Init_Timer0(void)
{
    TMOD |= 0x00;	//使用方式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响
    TH0 = 0xFD;		//装载初值
    TL0 = 0x12;		//PWM频率 = PCA时钟输入源频率 / 256
    			//50Hz频率 则 PCA时钟输入源频率 = 50 * 256 =	12800Hz = 1.28kHz
  			//定时器已经过12分频,所以Fosc = 1MHz,则 1.28kHz = Fosc / 78.125us

    EA = 1;		//总中断打开
    ET0 = 1;		//定时器中断打开
    TR0 = 1;		//定时器开关打开
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值