Estoy intentando escribir un programa para LED como un contador binario en el controlador atmega8.
Los primeros 2 bits (MSB) están conectados a portd y los últimos 6 bits están conectados al puerto c:
Aquí está mi código:
#define F_CPU 10000000UL//clock frequency
#include <avr/io.h>
#include <util/delay.h>//header for the delay
int main(void)
{
/* main function */
DDRC=0b11111111;//to make all the port in C as output
DDRD =0b11111111;//to make all the port in D as output
int x=0,a=64,b=128,c=192;//input variables
while (1)
{
//for nos from 0 to 64
if(x<64)
{
PORTC = x;
PORTD = 0b00000000;
_delay_ms(200);
x++;
}//if no is equal to 64 then the if condition breaks
//for nos from 64 to 128
x=0;//initializing to 0
if((a<128) && (x<64))
{
PORTC = x;
PORTD = 0b01000000;
_delay_ms(200);
x++;
a++;
}//if no is equal to 128 then the if condition breaks
//for nos from 128 to 192
x=0;//initializing to 0
if((b<192) && (x<64))
{
PORTC = x;
PORTD = 0b10000000;
_delay_ms(200);
x++;
b++;
}//if no is equal to 192 then the if condition breaks
//for nos from 192 to 256
x=0;//initializing to 0
if((c<256) && (x<64))
{
PORTC = x;
PORTD = 0b11000000;
_delay_ms(200);
x++;
c++;
}//if no is equal to 256 then the if condition breaks
//initializing the variables to keep the while loop running
x=0;
a=64;
b=128;
c=192;
}
}
}
}
¿Podría, por favor, hacerme saber si el código está escrito de manera adecuada y si funciona o no?