智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1543|回复: 0
打印 上一主题 下一主题

pwm控制led亮度问题求助!!!

[复制链接]

1

主题

4

帖子

0

精华

注册会员

Rank: 2

积分
83
威望
47
贡献
26
兑换币
13
注册时间
2016-8-2
在线时间
5 小时
毕业学校
湖北汽院
跳转到指定楼层
1#
发表于 2016-8-2 10:44:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的是mc9s12xs128芯片,pwm占空比最开始设置的100%,通过定时器逐渐降低控制led亮度降低。
求大神帮忙看看哪里出错了,灯亮度没变,旁边的4位数码管还亮了。
#include <hidef.h>     
#include "derivative.h"      

#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define BUS_CLOCK                   32000000          
#define OSC_CLOCK                   16000000          
unsigned int p=100;

void INIT_PLL(void)//初始化锁相环
{
    CLKSEL &= 0x7f;      
    PLLCTL &= 0x8F;      
    CRGINT &= 0xDF;
    SYNR = 0x43;     
    REFDV = 0x81;         
    PLLCTL =PLLCTL|0x70;  
    asm NOP;
    asm NOP;
    while(!(CRGFLG&0x08));
    CLKSEL |= 0x80;        
}

void init_pwm(void)//初始化pwm
{
  PWMPOL_PPOL1= 1;
  PWMPRCLK = 0x22;   
  PWMSCLA  =  0x04;   
  PWMCLK =0x02;      
  PWMCAE   = 0x00;   
  PWMPER1  = 100;   
  PWMDTY1  = 100;   
  PWME_PWME1 = 1;   
}

void init_tim(void) //初始化定时器
{
  TSCR1_TFFCA = 1;  
  TSCR1_TEN = 1;  
  TIOS  = 0xff;     
  TCTL1 = 0x00;          
  TCTL2 = 0x00;   
  TIE   = 0x01;     
  TSCR2 = 0x07;          
  TFLG1 = 0xff;            
  TFLG2 = 0xff;     
}

void delay() //延时
{
  unsigned int i,j;
  for(i=0;i<2;i++)
  for(j=0;j<5000;j++);
}

#pragma CODE_SEG __NEAR_SEG NON_BANKED//计时中断
interrupt void scan(void)
{
  if(TFLG1_C0F == 1)
  {
    TFLG1_C0F = 1;
    TC0 = TCNT + 1250;
    if(p>1) {
    p--;
    PWMDTY01=p;
    }
    else
    p=100;
  }
}
#pragma CODE_SEG DEFAULT

void main(void)  //主函数
{
  DisableInterrupts;
  INIT_PLL();
  init_pwm();
  LEDCPU_dir=1;
  LEDCPU=0;
  EnableInterrupts;

  TFLG1_C0F = 1;
  TC0 = TCNT + 1250;
  for(;;){
  }
}


回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 16:29 , Processed in 0.041757 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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