- Code: Select all
#include <avr/io.h>
#include <util/delay.h>
int main() {
unit8_t brightness = 0;
TCCR0A = 0x81; // Timer/Counter Control Register A
TCCR0B = 0x01; // Timer/Counter Control Register B
TCNT0 = 0x00; // Timer/Counter Register
OCR0A = 0x12; // Output Compare Register A
OCR0B = 0x00; // Output Compare Register B
DDRB = 0x08; // Set PB4 (Pin 3) as output
while( 1 ) {
// Increase brightness from 0 to 255
for ( brightness = 0; brightness < 255; brightness++ ) {
OCR0A = brightness; // Set PWM duty based on brightness value
_delay_ms( 10 ); // Delay 10 ms
}
// Decrease brightness from 255 to 0
for ( brightness = 255; brightness > 0; brightness-- ) {
OCR0A = brightness; // Set PWM duty based on brightness value
_delay_ms( 10 ); // Delay 10 ms
}
}
return 1;
}


