打印
[通用8051核FLASH系列]

PWM这个计算看不懂

[复制链接]
215|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jiangzb520|  楼主 | 2025-4-21 08:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define ALLOCATE_EXTERN
#include "HC89F1603.h"
/***************************************************************************************
  * @实现效果        P22,P11输出频率为1.955KHz,占空比为33.3%的方波
***************************************************************************************/
void main()
{
/************************************系统初始化****************************************/
        WDTCCR = 0x00;                                                //关闭看门狗
                                        //本例程为方便测试关闭看门狗,实际使用中,建议客户打开看门狗,详见WDT复位例程
        CLKSWR = 0x51;                                                //选择内部高频RC为系统时钟,内部高频RC 2分频,Fosc=16MHz
        CLKDIV = 0x01;                                                //Fosc 1分频得到Fcpu,Fcpu=16MHz
/*************************************PWM初始化****************************************/
        P2M1 = P2M1&0xF0|0x08;                        //P22设置为推挽输出
    P1M0 = P1M0&0xF0|0x08;              //P10设置为推挽输出
       
        PWM0_MAP = 0x22;                                        //PWM0通道映射P22口
        PWM01_MAP = 0x10;                                        //PWM01通道映射P10口

        //独立模式下,PWM0和PWM01共用一个周期寄存器
        //PWM0的占空比调节使用                        PWM0组的占空比寄存器
        //PWM01的占空比调节使用                        PWM0组的死区寄存器

        //周期计算         = 0x03ff / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
        //                        = 0x03ff / (16000000 / 8)                       
        //                         = 1023   /2000000
        //                        = 511.5us                                   约1.955kHz

        PWM0PH = 0x03;                                                //周期高4位设置为0x03
        PWM0PL = 0xFF;                                                //周期低8位设置为0xFF

        //占空比计算= 0x0155 / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
        //                        = 0x0155 / (16000000 / 8)                       
        //                         = 341          / 2000000
        //                        = 170.5us                   占空比为 170.5/511.5 = 33.3%

        PWM0DH = 0x01;                                                //PWM0高4位占空比0x01
        PWM0DL = 0x55;                                                //PWM0低8位占空比0x55
        PWM0DTH = 0x01;                                                //PWM01高4位占空比0x01
        PWM0DTL = 0x55;                                                //PWM01低8位占空比0x55
       
        PWM0C = 0x01;                                                  //PWM0高有效,PWM01高有效,时钟8分频
        PWM0EN = 0x0F;                                                //使能PWM0,工作于独立模式
       
        while(1);
}

里面0X03FF怎么来的,规格书也没有看到,还有0X01和0X55这个怎么来的,规格书不详细,dmeo也不是很明白 ,芯片型号HC89F1603

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

32

主题

201

帖子

3

粉丝