打印
[通用8051核FLASH系列]

【芯圣SDK-HC89F0541测评】+TIM

[复制链接]
574|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 芯圣电子官方QQ 于 2023-7-25 10:14 编辑

#define        ALLOCATE_EXTERN
#include "HC89F0541.h"

实现效果        P14,P15输出频率为100KHz,占空比为40%/50%的方波,两路互补输出,死区时间 为0.5us。

void main()
{

        CLKSWR = 0x51;                                                //选择内部高频RC为系统时钟,内部高频RC 2分频,Fosc=16MHz
        CLKDIV = 0x01;                                                //Fosc 1分频得到Fcpu,Fcpu=16MHz

   P1M4 = 0xC2;                        //P14设置为推挽输出
    P1M5 = 0xC2;                        //P15设置为推挽输出
        PWM0_MAP = 0x14;                                        //PWM0通道映射P14口
        PWM01_MAP = 0x15;                                        //PWM01通道映射P15口
    PWMM |= 0x01;                                                //PWM0自动重载
    PWM0C = 0x01;                                                //PWM0和PWM01均为高有效,时钟8分频
                                                   

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

        //周期计算         = 0x0014 / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
        //                        = 0x0014 / (16000000 / 8)                        
        //                         = 20   /2000000
        //                        = 10us                                   100KHz

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

        //占空比计算= 0x000A / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
        //                        = 0x000A / (16000000 / 8)                        
        //                         = 10         / 2000000
        //                        = 5us                   占空比为50%

        PWM0DH = 0x00;                                                //PWM0,PWM01高4位占空比0x00
        PWM0DL = 0x0A;                                                //PWM0,PWM01低8位占空比0x0A
        //死区调节的是PWM01相对于PWM0左右各缩减的时间
        //死区计算        = 0x0001  / (Fosc / PWM分频系数)                (Fosc见系统时钟配置的部分)
        //                        = 0x0001  /(16000000 / 8)                        
        //                         = 1          /2000000
        //                        = 0.5us
        PWM0DTH = 0x00;                                                //PWM0,PWM01高4位死区时间0x00
        PWM0DTL = 0x01;                                                //PWM0,PWM01低8位死区时间0x01
        PWMEN |= 0x11;                                                //使能PWM1以及PWM01
        
        while(1);
}




使用特权

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

本版积分规则

个人签名:32MCU单片机查询网 http://www.32mcu.com MCU选型,嵌入式设计辅助,选择最适合的MCU

35

主题

173

帖子

143

粉丝