TA的每日心情 | 开心 2021-5-16 16:27 |
---|
签到天数: 254 天 [LV.8]以坛为家I
|
我想用一个按键循环调整小灯的亮度,采用了改变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[4] = {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[key_code];
delay_ms(30);
}
}
|
|