daiya 发表于 2019-11-21 15:54

ATtiny13A的PWM设置问题

我想用一个按键循环调整小灯的亮度,采用了改变OCR0A值的方法调整PWM占空比,可是简单的功能却实现不了,百思不得其解,问了好多论坛都没结果,代码贴在下面了,请各位高人看看问题出在哪里?

#include <tiny13a.h>
#include <delay.h>

#define uchar unsigned char
#define uint unsigned int

#define key PINB.1
#define KEY_DOWN 0

uchar key_code = 0;

flash uchar led_value = {255, 77, 26, 13};

void PWM_ini(void)
{
    TCCR0A=0x83;//快速PWM模式
    TCCR0B=0x01;//无分频
}

void key_scan()
{
    if(key == KEY_DOWN)
    {
      delay_ms(30);
      if(key == KEY_DOWN)
      {
            key_code++;
            if(key_code == 4)
                key_code = 0;
            while(!key);
      }
    }
}

void main(void)
{
    PORTB=0x02;
    DDRB=0x01;

    PWM_ini();

    while (1)
    {
      key_scan();
      OCR0A = led_value;
      delay_ms(30);
    }
}

ckvlhf 发表于 2019-11-21 21:52

实现不了你总要说个现象吧。是彻底不亮还是一直亮着还是乱闪?

ckvlhf 发表于 2019-11-21 21:53

设置了PWM所在IO的模式吗?

daiya 发表于 2019-11-22 04:43

按了很多次开关偶尔亮一下

daiya 发表于 2019-11-22 04:45

PB0设置输出了

daiya 发表于 2019-11-22 09:22

问题找到了,晶振频率设置的不对,谢谢各位的指导,愿好人一生平安!
页: [1]
查看完整版本: ATtiny13A的PWM设置问题