找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 776|回复: 0
打印 上一主题 下一主题
收起左侧

SyncMOS 59R PWM 源码

[复制链接]
跳转到指定楼层
楼主
ID:496073 发表于 2019-3-22 15:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式




SyncMOS 59R PWM 源码


#include "OB59R16A5C.h"
#include "PWM.h"

#define PWM_VECTOR  8           //PWM Interrupt Vevtor
#define d_PWMCS     0x00        //PWMCS[2:0] (PWM clock select 0~7)
#define d_PWMXEN    0x01         //PWM Channel Enable (0~F)
#define d_PWMP0     0x00         //PWM0 Channel idle polarity select
#define d_PWMP1     0x00         //PWM1 Channel idle polarity select
#define d_PWMP2     0x00         //PWM2 Channel idle polarity select
#define d_PWMP3     0x00        //PWM3 Channel idle polarity select
#define d_PWMIE     0x00        //PWM Interrupt Enable bit
#define d_P2PWM     0x02        //PWM channel on P2/P4 select

unsigned int PWMMD = 0x03FF;     //PWMMD[9:0]=Period (PWM Max Data Register 0~1023)
unsigned int PWMD0 = 0x0200;     //PWMD0[9:0]=Duty (PWM Channel 0 Data Register 0~1023)
unsigned int PWMD1 = 0x00;     //PWMD1[9:0]=Duty (PWM Channel 1 Data Register 0~1023)
unsigned int PWMD2 = 0x00;     //PWMD2[9:0]=Duty (PWM Channel 2 Data Register 0~1023)
unsigned int PWMD3 = 0x00;     //PWMD3[9:0]=Duty (PWM Channel 3 Data Register 0~1023)

void PWM_initialize(void)  //Initialize PWM
{
    EA     = 0;                 //Disable All Interrupt Function
    AUX    = AUX | (d_P2PWM);   //Set PWM channel on P2/P4
    IEPWM  = (d_PWMIE);         //Enable PWM Interrupt Function       
    PWMMDH = PWMMD >> 8;
    PWMMDL = PWMMD;
    EA     = 1;                 //Enable All Interrupt
}

void PWM_Output(unsigned int PWMD0,unsigned int PWMD1,
                unsigned int PWMD2,unsigned int PWMD3) //PWM Output Set
{
    PWMD0H = (PWMD0>>8) | (d_PWMP0<<7);
    PWMD0L = (PWMD0);
    PWMD1H = (PWMD1>>8) | (d_PWMP1<<7);
    PWMD1L = (PWMD1);
    PWMD2H = (PWMD2>>8) | (d_PWMP2<<7);
    PWMD2L = (PWMD2);
    PWMD3H = (PWMD3>>8) | (d_PWMP3<<7);
    PWMD3L = (PWMD3);
    PWMC   = PWMC|(d_PWMCS<<5)|(d_PWMXEN);
}

void PWM_Disable(void)
{
    IEPWM = 0;      //Disable PWM Interrupt
    PWMC  = 0;      //Disable PWM Function
}

void PWM_ISR(void) interrupt PWM_VECTOR //PWM Interrupt Subroutine
{
    while(PWMIF)
    {
        PWMIF = 0;  //Clear PWM Flag
    }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表