我想用一個按鍵循環調整小燈的亮度,采用了改變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);
}
}
|