智能车制作

标题: DG128 PWM的应用举例 [打印本页]

作者: 蛋求无悔    时间: 2013-1-16 16:19
标题: DG128 PWM的应用举例
PWM的使用方法比较简单,只要在系统初始化时设置好寄存器,使PWM正常工作,则不需要额外的设置,它也会一直输出波形。
本例使用PWM5通道控制LED灯的亮度,这通过调节PWM波占空比实现。
#include <hidef.h>
#include<mc9s12dg128.h>
#include"crg.h"
#pragram LINK_INFO DERIVATIVE "mc9s12dg128b"

void PWM Init (void)
{
    PWME=0x00;  //设置PWM允许寄存器,全部禁止
    PWMPOL=0x20;  //设置极性寄存器,把5通道设置成首先输出高电平,占空比计数器计数完毕后变为低电平
    PWMCLK=0x20;  //设置PWM时钟选择寄存器,5通道以Clock SA作为时钟源
    PWMPRCLK=0x04;  //设置预分频时钟选择寄存器,时钟A的时钟周期为总线周期的8分频。
    PWMCAE=0x00;  //设置居中对齐允许寄存器,设置5通道为左对齐方式
    PWMCTL=0x00;  //PWM控制寄存器,设置为非级联方式,也就是5通道单独使用
    PWMSCLA=0x05;  //设置PWM比例因子寄存器A,
    PWMPER5=0x64;  //设置PWM通道周期寄存器
}

void main (void)
{
    unsigned char i;
    unsigned long j=10000;
    SET_PLL ();         //设置锁相环 ,此处作用还有待学习
    EnableInterrupts;    //使能所有的中断
    PWMInit ();            //PWM的初始化
    for ( i=0;i<0x64;i++)
    {
         while( j - -);
         j=10000;
                 while( j - -);
                 j=10000;
         PWMDTY5=i;     //设定占空比
         PWME=0x20;    //初始化的时候禁止所有的通道,在主函数中等所有有关PWM的设置都结束之后再打开         
    }
}

真的很想说,由孙同景主编的由机械工业出版社出版的《Freescale 9S12 十六位单片机原理及嵌入式技术》这本书错误真的不少。不过,单从内容上来看此书对学习飞思卡尔还是很不错的。

作者: Peaker    时间: 2013-1-16 21:23

作者: 蛋求无悔    时间: 2013-1-16 21:29
Peaker 发表于 2013-1-16 21:23

??????
作者: Peaker    时间: 2013-1-17 07:52
蛋求无悔 发表于 2013-1-16 21:29
??????

有点基本了点
作者: 蛋求无悔    时间: 2013-1-17 09:51
Peaker 发表于 2013-1-17 07:52
有点基本了点

见笑了,刚开始进行,多多指教
作者: 王谦623    时间: 2013-1-17 15:03
小儿科了!
作者: 蛋求无悔    时间: 2013-1-17 15:20
王谦623 发表于 2013-1-17 15:03
小儿科了!

多多指教
作者: xlxsteven    时间: 2013-2-15 14:43
PWMSCLA=0x05;  //设置PWM比例因子寄存器A  这样设置后PWMSCLA的只是说多少

作者: 897087122    时间: 2013-3-24 20:29
while(j--);
  j=1000;  有这样的吗 请问?

作者: 蛋求无悔    时间: 2013-3-25 14:10
897087122 发表于 2013-3-24 20:29
while(j--);
  j=1000;  有这样的吗 请问?

请仔细看程序,不要自己没看明白就来一句“请问” 谢谢

作者: 殇夜    时间: 2014-3-24 16:26
可以问一下你的输出是16管脚吗?还有那个while(j--)是什么意思呀?好想没见过这么用的呀?




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2