[KungFu8位 MCU]

ChipON系列增强型PWM操作例程分享

[复制链接]
1021|6
手机看帖
扫描二维码
随时随地手机跟帖
yysforever|  楼主 | 2017-10-31 20:58 | 显示全部楼层 |阅读模式
/****************************************************************************************
*
* 文件名: main.c
* 项目名: 08-Enganced PWM-Half_Bridg_Output-PWM3
* 版 本: v1.0
* 日 期: 2016年05月19日 10时48分57秒
* 作 者: Administrator
* 程序说明:增强型PWM参考例程。
*                         半桥输出模式PWM3
* 适用芯片:KF8FXXX系列——KF8F211、KF8F212、KF8F213、
*                                                  KF8F214、KF8F221、KF8F222、KF8F232、KF8F233、
*                                                  KF8F312、KF8F313、KF8F321、KF8F323、
*                                                  KF8F334、KF8F335、KF8F336、···
****************************************************************************************/
#include<KF8F312.h>

#define uchar unsigned char
#define uint  unsigned int

/****************************************************************************************
* 函数名     :Delay_ms
* 函数功能:长时间延时
* 入口参数:延时基数 uchar ms_data
* 返回          :无
****************************************************************************************/
void Delay_ms(uint ms_data)
{
        uchar i;
        while(ms_data--)
        {
                i = 124;
                while(i--);
        }
}

/****************************************************************************************
* 函数名     :init_mcu
* 函数功能:mcu初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_mcu()
{
        /***时钟初始化****/
        OSCCTL = 0X60;      // 8M时钟

        /***端口初始化****/
        TR0 = 0x08;                                //设置P03端口为输入,P0其他I/O口为输出
        TR1 = 0x00;                                //设置P1端口为输出
        TR2 = 0x00;                                //设置P2端口为输出
        P0 = 0;                                        //P0口输出低电平
        P1 = 0;                                        //P1口输出低电平
        P2 = 0;                                        //P2口输出低电平
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_pwm()
{
        /***PWM相关寄存器初始化****/
        PWM3CTL1=0x0F;        // 不开启自动使能,死区时间设定为0x0f   即当前延时T = 15*(4*(1/8M)) = 15*500ns = 7.5us
        P3ASCTL=0x00;        // 禁止自动关闭源,默认关闭状态为1。
        PATRCTL=0x10;        // 开启转向同步。
        PWM3CTL0=0x80;  // 半桥输出模式,暂不开启PWM3,默认有效状态高电平。

        PWM3L=0x32;                // 占空比初始化 50%,=(PWM3L:(PDT1:PDT0))/(4*(PP3+1))=00110010:00/4*(0X63+1)=50%
        PDT1=0;                        // IN PWM3CTL0 bit 5
        PDT0=0;                        // IN PWM3CTL0 bit 4
        PP3=0x63;                // 4倍数值构成PWM周期最小单位=(99+1)*4*(1/8MHz)*1=50us,F=1/T=20KHz
        // PWM使能
        T2=0;
        T2CTL=0x04;                // 启动T2,分频器1为1分频
        P3ON1=1;                // IN PWM3CTL0 bit 3
        P3ON0=1;                // IN PWM3CTL0 bit 2
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm功能函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void pwm_function()
{

}

/****************************************************************************************
* 函数名     :main
* 函数功能:程序入口主函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void main()
{
        init_mcu();
        init_pwm();
        Delay_ms(10);
        while(1)
        {
                pwm_function();
                Delay_ms(100);
        }
}

/****************************************************************************************
* 函数名     :int_fun
* 函数功能:中断入口
* 入口参数:无
* 返回          :无
****************************************************************************************/
void int_fun() __interrupt
{

}


yysforever|  楼主 | 2017-10-31 20:58 | 显示全部楼层
/****************************************************************************************
*
* 文件名: main.c
* 项目名: 08-Enganced PWM-Half_Bridg_Output-PWM4
* 版 本: v1.0
* 日 期: 2016年05月19日 10时48分57秒
* 作 者: Administrator
* 程序说明:增强型PWM参考例程。
*                         半桥输出模式PWM4
* 适用芯片:KF8VXXX系列——KF8V216、KF8V218
****************************************************************************************/
#include<KF8V216.h>

#define uchar unsigned char
#define uint  unsigned int

/****************************************************************************************
* 函数名     :Delay_ms
* 函数功能:长时间延时
* 入口参数:延时基数 uchar ms_data
* 返回          :无
****************************************************************************************/
void Delay_ms(uint ms_data)
{
        uchar i;
        while(ms_data--)
        {
                i = 124;
                while(i--);
        }
}

/****************************************************************************************
* 函数名     :init_mcu
* 函数功能:mcu初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_mcu()
{
        /***时钟初始化****/
        OSCCTL = 0X70;      // 16M时钟

        /***端口初始化****/
        TR0 = 0x08;                                //设置P03端口为输入,P0其他I/O口为输出
        TR1 = 0x00;                                //设置P1端口为输出
        TR2 = 0x00;                                //设置P2端口为输出
        P0 = 0;
        P1 = 0;
        P2 = 0;
        P0LR = 0;                                //P0口输出低电平
        P1LR = 0;                                //P1口输出低电平
        P2LR = 0;                                //P2口输出低电平
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_pwm()
{
        /***PWM相关寄存器初始化****/
        PWM4CTL1=0x0F;        // 不开启自动使能,死区时间设定为0x0f   即当前延时T = 15*(1/16M) = 15*62.5ns = 937.5ns
        P4ASCTL=0x00;        // 禁止自动关闭源,默认关闭状态为1。
        PATRCTL=0x10;        // 开启转向同步,全部输出,0x11 P3A 0x12 P3B  0x14 P3C 0x18 P3D

        PP4H=0X00;
        PP4L=0XFF;                //T=(0X00FF+1)*(1/16MHz)*1=16us,F=1/T=62.5KHz

        PWM4L0=0X80;        //初始化占空比0X0080/(0X00FF+1)=50%
        PWM4L1=0X00;

        /****T2使能******/
        T2H=0;
        T2L=0;
        T2CTL=0X04;                // 启动T2,T2分频比1

        PWM4CTL0=0x8C;  //  半桥输出模式,默认有效状态高电平。
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm功能函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void pwm_function()
{
        static uchar direction=0;
        if(direction)
        {
                PWM4L0++;
                if(PWM4L0>=200)
                {
                        direction=0;
                }
        }
        else
        {
                PWM4L0--;
                if(PWM4L0<100)
                {
                        direction=1;
                }
        }
}

/****************************************************************************************
* 函数名     :main
* 函数功能:程序入口主函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void main()
{
        init_mcu();
        init_pwm();
        Delay_ms(10);
        while(1)
        {
                pwm_function();
                Delay_ms(10);
        }
}

//中断函数0:0X04入口地址
void int_fun0() __interrupt (0)
{

}


//中断函数1:0x14入口地址
void int_fun1() __interrupt (1)
{

}

使用特权

评论回复
yysforever|  楼主 | 2017-10-31 20:58 | 显示全部楼层
/****************************************************************************************
*
* 文  件  名: main.c
* 项  目  名: 08-Enganced PWM-Half_Bridg_Output-PWM5
* 版         本: v1.0
* 日         期: 2016年05月16日 11时38分22秒
* 作         者: Administrator
* 程序说明:增强型PWM参考例程。
*                         半桥输出模式PWM5
* 适用芯片:KF8FX156系列——KF8F2156、KF8F3156、KF8F4156
*                         KF8FX155系列——KF8F3155、KF8F4155
*                         KF8F4158系列——KF8F4158
*                         KF8VXXX系列——KF8V429
****************************************************************************************/
#include<KF8F4156.h>

#define uchar unsigned char
#define uint  unsigned int

/****************************************************************************************
* 函数名     :Delay_ms
* 函数功能:长时间延时
* 入口参数:延时基数 uchar ms_data
* 返回          :无
****************************************************************************************/
void Delay_ms(uint ms_data)
{
        uchar i;
        while(ms_data--)
        {
                i = 124;
                while(i--);
        }
}

/****************************************************************************************
* 函数名     :init_mcu
* 函数功能:mcu初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_mcu()
{
        /***时钟初始化****/
        OSCCTL = 0x70;          //设置为16M

        /***端口初始化****/
        TR0 = 0x08;                                //设置P03端口为输入,P0其他I/O口为输出
        TR1 = 0x00;                                //设置P1端口为输出
        TR2 = 0x00;                                //设置P2端口为输出
        TR3 = 0x00;                                //设置P3端口为输出
        P0 = 0;
        P1 = 0;
        P2 = 0;
        P3 = 0;
        P0LR = 0;                                //P0口输出低电平
        P1LR = 0;                                //P1口输出低电平
        P2LR = 0;                                //P2口输出低电平
        P3LR = 0;                                //P3口输出低电平
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_pwm()
{
        /***PWM相关寄存器初始化****/

        P5ASCTL                = 0b00000000;                        //设置PWM5关闭时候PWM口输出电平                这里为默认设置,关闭PWM时候都输出0
        PWM5CTL2        = 0b00000001;                        //PWM周期自动填充更新
        PWM5CTL0        = 0b10001100;                         //半桥输出PWM  高电平有效    PWM5A  PWM5B作为互补输出
        PWM5CTL1        = 0b00000011;                        //死区时间设置   死区时间为  一个T2时间基准          这里设置为3基准时间
        PP5H                = 0;                                        //高位
        PP5L                = 40;                                        //低位                        设置PWM周期  周期时间为PP5+1进行计算
        PWM5L1                = 0;                                        //高位
        PWM5L0                = 20;                                        //地位                            设置PWM占空比
        T2H                        = 0;
        T2L                        = 0;                                        //PWM时钟源 T2相关设置
        T2CTL0                = 0b00000000;
        T2ON                = 1;
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm功能函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void pwm_function()
{

}

/****************************************************************************************
* 函数名     :main
* 函数功能:程序入口主函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void main()
{
        init_mcu();
        init_pwm();
        Delay_ms(10);

        while(1)
        {
                pwm_function();
                Delay_ms(10);
        }
}

//中断函数0:0X04入口地址
void int_fun0() __interrupt (0)
{

}


//中断函数1:0x14入口地址
void int_fun1() __interrupt (1)
{

}

使用特权

评论回复
yysforever|  楼主 | 2017-10-31 20:59 | 显示全部楼层
/****************************************************************************************
*
* 文件名: main.c
* 项目名: 09-Enganced PWM-Full_Bridge_Output-PWM3
* 版 本: v1.0
* 日 期: 2016年05月19日 10时48分57秒
* 作 者: Administrator
* 程序说明:增强型PWM参考例程。
*                         全桥输出模式PWM3
* 适用芯片:KF8FXXX系列——KF8F211、KF8F212、KF8F213、
*                                                  KF8F214、KF8F221、KF8F222、KF8F232、KF8F233、
*                                                  KF8F312、KF8F313、KF8F321、KF8F323、
*                                                  KF8F334、KF8F335、KF8F336、···
****************************************************************************************/
#include<KF8F312.h>

#define uchar unsigned char
#define uint  unsigned int

unsigned char Full_Bridge_Way;  //全桥正向反向标记 1 正向   0 反向
unsigned char Full_PWM_Bak;                //占空比高位备份,全桥转向防直通措施

/****************************************************************************************
* 函数名     :Delay_ms
* 函数功能:长时间延时
* 入口参数:延时基数 uchar ms_data
* 返回          :无
****************************************************************************************/
void Delay_ms(uint ms_data)
{
        uchar i;
        while(ms_data--)
        {
                i = 124;
                while(i--);
        }
}

/****************************************************************************************
* 函数名     :init_mcu
* 函数功能:mcu初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_mcu()
{
        /***时钟初始化****/
        OSCCTL = 0X60;      // 8M时钟

        /***端口初始化****/
        TR0 = 0x0C;                                //设置P03端口为输入,P0其他I/O口为输出,P02设为自动关断源,所以设为上拉输入
        TR1 = 0x00;                                //设置P1端口为输出
        TR2 = 0x00;                                //设置P2端口为输出
        P0 = 0;                                        //P0口输出低电平
        P1 = 0;                                        //P1口输出低电平
        P2 = 0;                                        //P2口输出低电平

        PUPH = 0;                // 使能总上拉 PUPH
        PUR = 0X04;         // 使能P02上拉,P02设为自动关断源,所以设为上拉输入
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_pwm()
{
        /***PWM相关寄存器初始化****/
        PWM3CTL1=0x80;        // 开启自动使能,死区仅对半桥有效
        P3ASCTL=0x44;        // 选择自动关闭源 INT0(P02)为低电平   关闭状态下P3A、P3C端口为高电平    P3B、P3D端口为低电平
        PATRCTL=0x10;        // 开启转向同步。
        PWM3CTL0=0x40;  // 全桥正向输出模式,暂不开启,默认有效状态高电平。

        Full_Bridge_Way=1;

        PWM3L=0x32;                // 占空比初始化 50%,=(PWM3L:(PDT1:PDT0))/(4*(PP3+1))=00110010:00/4*(0X63+1)=50%
        PDT1=0;                        // IN PWM3CTL0 bit 5
        PDT0=0;                        // IN PWM3CTL0 bit 4
        PP3=0x63;                // 4倍数值构成PWM周期最小单位=(99+1)*4*(1/8MHz)*4=200us,F=1/T=5KHz
        // PWM使能
        T2=0;
        T2CTL=0x05;                // 启动T2,分频器1为4分频
        P3ON1=1;                // IN PWM3CTL0 bit 3
        P3ON0=1;                // IN PWM3CTL0 bit 2
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm功能函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void pwm_function()
{
        //全桥转向,需防止接近百分百占空比下的,开关管导通时间小于截止时间时的直通,-
        //如果占空比运行模式均小于一定值,可以不考虑直通现象,详细介绍见数据手册。
        if(Full_Bridge_Way)
        {
                Full_PWM_Bak=PWM3L;
                PWM3L=0x3F;                                // 暂时降低占空比
                Delay_ms(1);                        // 延后1个周期的时间,使占空比生效
                PWM3CTL0|=0x80;
                Full_Bridge_Way=0;
                PWM3L=Full_PWM_Bak;                // 占空比还原
        }
        else
        {
                Full_PWM_Bak=PWM3L;
                PWM3L=0x3F;                                // 暂时降低占空比
                Delay_ms(1);                        // 延后1个周期的时间,使占空比生效
                PWM3CTL0&=0x7F;
                Full_Bridge_Way=1;
                PWM3L=Full_PWM_Bak;                // 占空比还原
        }
}

/****************************************************************************************
* 函数名     :main
* 函数功能:程序入口主函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void main()
{
        init_mcu();
        init_pwm();
        Delay_ms(10);
        while(1)
        {
                pwm_function();
                Delay_ms(50);
        }
}

/****************************************************************************************
* 函数名     :int_fun
* 函数功能:中断入口
* 入口参数:无
* 返回          :无
****************************************************************************************/
void int_fun() __interrupt
{

}

使用特权

评论回复
yysforever|  楼主 | 2017-10-31 20:59 | 显示全部楼层
/****************************************************************************************
*
* 文件名: main.c
* 项目名: 09-Enganced PWM-Full_Bridge_Output-PWM4
* 版 本: v1.0
* 日 期: 2016年05月19日 10时48分57秒
* 作 者: Administrator
* 程序说明:增强型PWM参考例程。
*                         全桥输出模式PWM4
* 适用芯片:KF8VXXX系列——KF8V216、KF8V218
****************************************************************************************/
#include<KF8V216.h>

#define uchar unsigned char
#define uint  unsigned int

unsigned char Full_Bridge_Way;  //全桥正向反向标记 1 正向   0 反向
unsigned char Full_PWM_Bak;                //占空比高位备份,全桥转向防直通措施

/****************************************************************************************
* 函数名     :Delay_ms
* 函数功能:长时间延时
* 入口参数:延时基数 uchar ms_data
* 返回          :无
****************************************************************************************/
void Delay_ms(uint ms_data)
{
        uchar i;
        while(ms_data--)
        {
                i = 124;
                while(i--);
        }
}

/****************************************************************************************
* 函数名     :init_mcu
* 函数功能:mcu初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_mcu()
{
        /***时钟初始化****/
        OSCCTL = 0X70;      // 16M时钟

        /***端口初始化****/
        TR0 = 0x0C;                                //设置P03端口为输入,P0其他I/O口为输出,P02设为自动关断源,所以设为上拉输入
        TR1 = 0x00;                                //设置P1端口为输出
        TR2 = 0x00;                                //设置P2端口为输出
        P0 = 0;
        P1 = 0;
        P2 = 0;
        P0LR = 0;                                //P0口输出低电平
        P1LR = 0;                                //P1口输出低电平
        P2LR = 0;                                //P2口输出低电平

        PUPH = 0;                        // 使能总上拉 PUPH
        PUR = 0X04;                 // 使能P02上拉,P02设为自动关断源,所以设为上拉输入
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_pwm()
{
        /***PWM相关寄存器初始化****/
        PWM4CTL1=0x80;        // 开启自动使能,死区仅对半桥有效
        P4ASCTL=0x44;        // 选择自动关闭源 INT0(P02)为低电平   关闭状态下P3A、P3C端口为高电平    P3B、P3D端口为低电平
        PATRCTL=0x10;        // 开启转向同步

        PP4H=0X00;
        PP4L=0XFF;                //T=(0X00FF+1)*(1/16MHz)*1=16us,F=1/T=62.5KHz

        PWM4L0=0X80;        //初始化占空比0X0080/(0X00FF+1)=50%
        PWM4L1=0X00;

        /****T2使能******/
        T2H=0;
        T2L=0;
        T2CTL=0X04;                // 启动T2,T2分频比1

        PWM4CTL0=0x4C;  // 全桥正向输出模式,默认有效状态高电平。

        Full_Bridge_Way=1;
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm功能函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void pwm_function()
{
        //全桥转向,需防止接近百分百占空比下的,开关管导通时间小于截止时间时的直通,-
        //如果占空比运行模式均小于一定值,可以不考虑直通现象,详细介绍见数据手册。
        if(Full_Bridge_Way)
        {
                Full_PWM_Bak=PWM4L0;
                PWM4L0=0x3F;                                // 暂时降低占空比
                Delay_ms(1);                        // 延后1个周期的时间,使占空比生效
                PWM4CTL0|=0x80;
                Full_Bridge_Way=0;
                PWM4L0=Full_PWM_Bak;                // 占空比还原
        }
        else
        {
                Full_PWM_Bak=PWM4L0;
                PWM4L0=0x3F;                                // 暂时降低占空比
                Delay_ms(1);                        // 延后1个周期的时间,使占空比生效
                PWM4CTL0&=0x7F;
                Full_Bridge_Way=1;
                PWM4L0=Full_PWM_Bak;                // 占空比还原
        }
}

/****************************************************************************************
* 函数名     :main
* 函数功能:程序入口主函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void main()
{
        init_mcu();
        init_pwm();
        Delay_ms(10);
        while(1)
        {
                pwm_function();
                Delay_ms(10);
        }
}

//中断函数0:0X04入口地址
void int_fun0() __interrupt (0)
{

}


//中断函数1:0x14入口地址
void int_fun1() __interrupt (1)
{

}

使用特权

评论回复
yysforever|  楼主 | 2017-10-31 20:59 | 显示全部楼层
/****************************************************************************************
*
* 文  件  名: main.c
* 项  目  名: 09-Enganced PWM-Full_Bridge_Output-PWM5
* 版         本: v1.0
* 日         期: 2016年05月16日 11时38分22秒
* 作         者: Administrator
* 程序说明:增强型PWM参考例程。
*                         全桥输出模式PWM5
* 适用芯片:KF8FX156系列——KF8F2156、KF8F3156、KF8F4156
*                         KF8FX155系列——KF8F3155、KF8F4155
*                         KF8F4158系列——KF8F4158
*                         KF8VXXX系列——KF8V429
****************************************************************************************/
#include<KF8F4156.h>

#define uchar unsigned char
#define uint  unsigned int

unsigned char  TimeCnt;
unsigned char  PSTRCTLTEMP;
unsigned char         PWM5CTL0TEMP;

/****************************************************************************************
* 函数名     :Delay_ms
* 函数功能:长时间延时
* 入口参数:延时基数 uchar ms_data
* 返回          :无
****************************************************************************************/
void Delay_ms(uint ms_data)
{
        uchar i;
        while(ms_data--)
        {
                i = 124;
                while(i--);
        }
}

/****************************************************************************************
* 函数名     :init_mcu
* 函数功能:mcu初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_mcu()
{
        /***时钟初始化****/
        OSCCTL = 0x70;          //设置为16M

        /***端口初始化****/
        TR0 = 0x08;                                //设置P03端口为输入,P0其他I/O口为输出
        TR1 = 0x00;                                //设置P1端口为输出
        TR2 = 0x00;                                //设置P2端口为输出
        TR3 = 0x00;                                //设置P3端口为输出
        P0 = 0;
        P1 = 0;
        P2 = 0;
        P3 = 0;
        P0LR = 0;                                //P0口输出低电平
        P1LR = 0;                                //P1口输出低电平
        P2LR = 0;                                //P2口输出低电平
        P3LR = 0;                                //P3口输出低电平
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm初始化函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void init_pwm()
{
        /***PWM相关寄存器初始化****/

        P5ASCTL                = 0b00000000;                        //设置PWM5关闭时候PWM口输出电平                这里为默认设置,关闭PWM时候都输出0
        PWM5CTL2        = 0b00000001;                        //PWM周期自动填充更新
        PWM5CTL0        = 0b01001100;                         //初始化先先正向全桥输出
        PSTRCTL                = 0b00011001;                        //PWM单项输出时候,和全桥输出时候,PWM信号控制是否输出到相应IO上, PSTRCTL(3:0)分别为P5D P5C P5B P5A
        PP5H                = 0;                                        //高位
        PP5L                = 40;                                        //低位                        设置PWM周期  周期时间为PP5+1进行计算
        PWM5L1                = 0;                                        //高位
        PWM5L0                = 20;                                        //  地位    设置PWM占空比
        T2H                        = 0;
        T2L                        = 0;                                        //PWM时钟源 T2相关设置
        T2CTL0                = 0b00000000;
        T2ON                = 1;
}


/********************************************
*函数名称:T0TimeTurnOnFun
*函数功能:开启定时器0
*输入参数:无
*输出参数:无
* **********************************************/
void   T0TimeTurnOnFun()
{
        T0CS = 0;
        PSA = 0;
        PS2 = 1;
        PS1 = 1;
        PS0 = 1;
        T0=        240;
        T0IE = 1;
        AIE = 1;
}

/****************************************************************************************
* 函数名     :init_pwm
* 函数功能:pwm功能函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void pwm_function()
{
         if(TimeCnt>25)                        //25ms变化一次    周期为50HZ
         {
                 TimeCnt = 0 ;
                 PSTRCTLTEMP = PSTRCTL;
                 PSTRCTLTEMP ^= 0b00001111;                        //取反全桥模式,正向和反向切换
                 PWM5CTL0TEMP = PWM5CTL0;
                 PWM5CTL0TEMP ^= 0b10000000;
                 PSTRCTL         = 0;
                 PWM5CTL0    =0;
                 _NOP();                                //全桥  模式  正向和反向切换进行延时
                 _NOP();
                 _NOP();
                 _NOP();
                 PSTRCTL = PSTRCTLTEMP;
                 PWM5CTL0 = PWM5CTL0TEMP;
         }
}

/****************************************************************************************
* 函数名     :main
* 函数功能:程序入口主函数
* 入口参数:无
* 返回          :无
****************************************************************************************/
void main()
{
        init_mcu();
        init_pwm();
        T0TimeTurnOnFun();
        Delay_ms(10);

        while(1)
        {
                pwm_function();
        }
}

//中断函数0:0X04入口地址
void int_fun0() __interrupt (0)
{
        if(T0IF)                                //定时中断   1ms
        {
                T0IF = 0;
                T0=        240;
                TimeCnt++;
        }
}


//中断函数1:0x14入口地址
void int_fun1() __interrupt (1)
{

}

使用特权

评论回复
haolaishi| | 2017-11-22 20:18 | 显示全部楼层
支持下,就是中断有点乱的。

使用特权

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

本版积分规则

20

主题

254

帖子

0

粉丝