Está en la página 1de 12

CODIGO Nº01:

#define F_CPU 8000000


#include <avr/io.h>
#include <util/delay.h>

int main(void)
{ //Declarando pines:
//Entrada:
DDRC&=~((1<<DDC1)|(1<<DDC4)|(1<<DDC5));
//Salida:
DDRB=0xFF;
//Activando pull up interno:
PORTC|=(1<<PORTC1)|(1<<PORTC4)|(1<<PORTC5);
//Variables de control:
int primeraCuenta=1; //Permitirá saber si estamos, o no, en la primera
ronda de nuestro conteo
int unidades=0; //Permitirá guardar el valor de las unidades
int decenas=0; //Permitirá guardar el valor de las decenas
int noEstePresionadoElOtroBoton=1; //Permitirá salir de un conteo en caso
se presione el otro botón
//Estado inicial
PORTB=0x00;
while (1)
{
if((PINC&(1<<PINC1))==0){

while((PINC&(1<<PINC1))==0){}//Mientras el botón C1 esté


presionado no hacer nada ...

while(noEstePresionadoElOtroBoton){ //Mientras no se presione


el otro botón ...
while((PINC&(1<<PINC5))==0){} //Mientras el
interruptor C5 esté presionado no hacer nada(pausa) ...

if(primeraCuenta){ //Si estamos en la primera ronda de


nuestro conteo entonces ...
primeraCuenta=0; //Igualamos a cero para que en
la siguiente ronda usemos la otra condicional
for(int i=15;i<=31;i++){ //Contador ascendente
while((PINC&(1<<PINC5))==0){} //Mientras
el interruptor C5 esté presionado no hacer nada(pausa)...
if((PINC&(1<<PINC4))==0){ //Si el botón
4(el otro) es presionado entonces ...
noEstePresionadoElOtroBoton=0;
//Variable de control es 0
primeraCuenta=1; //Para poder
empezar la cuenta inicial
break;//Salimos del bucle for
}
unidades=i%10; //Residuo
decenas=i/10; //División entera
PORTB=(PORTB&0)|((unidades)|
(decenas<<4)); //Primero tenemos todo el puerto C en cero, para luego
//sumarle nuestro valor concatenado.
_delay_ms(400);
}
for(int i=30;i>=1;i--){ //Contador descendente
while((PINC&(1<<PINC5))==0){} //Mientras
el interruptor C5 esté presionado no hacer nada ...
if((PINC&(1<<PINC4))==0){ //Si el botón
4(el otro) es presionado entonces ...
noEstePresionadoElOtroBoton=0;
//Variable de control es 0
primeraCuenta=1; //Para poder
empezar la cuenta inicial
break;//Salimos del bucle for
}
unidades=i%10;
decenas=i/10;
PORTB=(PORTB&0)|((unidades)|
(decenas<<4));
_delay_ms(400);
}
}

else{
for(int i=2;i<=31;i++){ //Contador ascendente
while((PINC&(1<<PINC5))==0){} //Mientras
el interruptor C5 esté presionado no hacer nada ...
if((PINC&(1<<PINC4))==0){ //Si el botón
4(el otro) es presionado entonces ...
noEstePresionadoElOtroBoton=0;
//Variable de control es 0
primeraCuenta=1; //Para poder
empezar la cuenta inicial
break;//Salimos del bucle for
}
unidades=i%10;
decenas=i/10;
PORTB=(PORTB&0)|((unidades)|
(decenas<<4)); //Primero tenemos todo el puerto C en cero, para luego
//sumarle nuestro valor concatenado.
_delay_ms(400);
}
for(int i=30;i>=1;i--){ //Contador descendente
while((PINC&(1<<PINC5))==0){} //Mientras
el interruptor C5 esté presionado no hacer nada ...
if((PINC&(1<<PINC4))==0){ //Si el botón
4(el otro) es presionado entonces ...
noEstePresionadoElOtroBoton=0;
//Variable de control es 0
primeraCuenta=1; //Para poder
empezar la cuenta inicial
break;//Salimos del bucle for
}
unidades=i%10;
decenas=i/10;
PORTB=(PORTB&0)|((unidades)|
(decenas<<4));
_delay_ms(400);
}
}
}

else if((PINC&(1<<PINC4))==0){

while((PINC&(1<<PINC4))==0){}//Mientras el botón C4 esté


presionado no hacer nada ...
while(noEstePresionadoElOtroBoton){ //Mientras no se presione
el otro botón ...
while((PINC&(1<<PINC5))==0){} //Mientras el
interruptor C5 esté presionado no hacer nada(pausa) ...

if(primeraCuenta){ //Si estamos en la primera ronda de


nuestro conteo entonces ...
primeraCuenta=0; //Igualamos a cero para que en
la siguiente ronda usemos la otra condicional
for(int i=15;i>=1;i-=2){ //Contador ascendente
while((PINC&(1<<PINC5))==0){} //Mientras
el interruptor C5 esté presionado no hacer nada(pausa)...
if((PINC&(1<<PINC1))==0){ //Si el botón
1(el otro) es presionado entonces ...
noEstePresionadoElOtroBoton=0;
//Variable de control es 0
primeraCuenta=1; //Para poder
empezar la cuenta inicial
break;//Salimos del bucle for
}
unidades=i%10; //Residuo
decenas=i/10; //División entera
PORTB=(PORTB&0)|((unidades)|
(decenas<<4)); //Primero tenemos todo el puerto C en cero, para luego
//sumarle nuestro valor concatenado.
_delay_ms(400);
}
for(int i=3;i<=31;i+=2){ //Contador descendente
while((PINC&(1<<PINC5))==0){} //Mientras
el interruptor C5 esté presionado no hacer nada ...
if((PINC&(1<<PINC1))==0){ //Si el botón
1(el otro) es presionado entonces ...
noEstePresionadoElOtroBoton=0;
//Variable de control es 0
primeraCuenta=1; //Para poder
empezar la cuenta inicial
break;//Salimos del bucle for
}
unidades=i%10;
decenas=i/10;
PORTB=(PORTB&0)|((unidades)|
(decenas<<4));
_delay_ms(400);
}
}

else{
for(int i=29;i>=1;i-=2){ //Contador ascendente
while((PINC&(1<<PINC5))==0){} //Mientras
el interruptor C5 esté presionado no hacer nada ...
if((PINC&(1<<PINC1))==0){ //Si el botón
1(el otro) es presionado entonces ...
noEstePresionadoElOtroBoton=0;
//Variable de control es 0
primeraCuenta=1; //Para poder
empezar la cuenta inicial
break;//Salimos del bucle for
}
unidades=i%10;
decenas=i/10;
PORTB=(PORTB&0)|((unidades)|
(decenas<<4)); //Primero tenemos todo el puerto C en cero, para luego
//sumarle nuestro valor concatenado.
_delay_ms(400);
}
for(int i=3;i<=31;i+=2){ //Contador descendente
while((PINC&(1<<PINC5))==0){} //Mientras
el interruptor C5 esté presionado no hacer nada ...
if((PINC&(1<<PINC1))==0){ //Si el botón
1(el otro) es presionado entonces ...
noEstePresionadoElOtroBoton=0;
//Variable de control es 0
primeraCuenta=1; //Para poder
empezar la cuenta inicial
break;//Salimos del bucle for
}
unidades=i%10;
decenas=i/10;
PORTB=(PORTB&0)|((unidades)|
(decenas<<4));
_delay_ms(400);
}
}
}

noEstePresionadoElOtroBoton=1;
}
}

CODIGO PARA DOS PULSADORES, UNO CUENTA Y EL OTRO LO DETIENE

#define F_CPU 1000000


#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
DDRD=0xFF;
DDRC=0X00;
PORTC=PORTC|(1<<PORTC1)|(1<<PORTC4);

int i=0;
int centinela=1;

while (1)
{
while (!(PINC&(1<<PINC1)))
{
while (!(PINC&(1<<PINC1)))
{
}

while (centinela)
{
for (i=5;i<=12;i++)
{
if (!(PINC&(1<<PINC4)))
{
centinela=0;
PORTD=0x00;
_delay_ms(900);
break;
}

PORTD=i;
_delay_ms(900);
}
}

}
}

CODIGO DE COMPARACION DE NUMEROS N1 Y N2 Y SE PRENDEN LEDS


#define F_CPU 1000000
#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
//SALIDAS :
DDRD=0x7F;
//ENTRADAS :
DDRB=0x00;
DDRC=0x00;
//PULL UP :
PORTB|=(1<<PORTB0)|(1<<PORTB1);
PORTC|=(1<<PORTC0)|(1<<PORTC1)|(1<<PORTC4);
PORTD|=(1<<PORTD7);
//VARIABLES :
//int i=0;
//int centinela=1;
int numero1=0;
int numero2=0;

while (1)
{
while ((PIND&(1<<PIND7))==0)
{
while ((PIND&(1<<PIND7))==0)
{
}

numero1=PINB;
numero2=PINC&((1<<PINC0)|(1<<PINC1));

if (numero1>numero2)
{
PORTD=1;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
PORTD=1;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
}
if (numero1<numero2)
{
PORTD=2;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
PORTD=2;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
}
if (numero1==numero2)
{
PORTD=4;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
PORTD=4;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
}

}
}
CODIGO DE COMPARACION DE DOS NUMEROS CON HABILITADOR

#define F_CPU 1000000


#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
//SALIDAS :
DDRD=0x7F;
//ENTRADAS :
DDRB=0x00;
DDRC=0x00;
//PULL UP :
PORTB|=(1<<PORTB0)|(1<<PORTB1);
PORTC|=(1<<PORTC0)|(1<<PORTC1)|(1<<PORTC4)|(1<<PORTC5);
PORTD|=(1<<PORTD7);
//VARIABLES :
//int i=0;
//int centinela=1;
int numero1=0;
int numero2=0;

while (1)
{

if (!(PINC&(1<<PINC5)))
{

while ((PIND&(1<<PIND7))==0)
{
while ((PIND&(1<<PIND7))==0)
{
}

numero1=PINB;
numero2=PINC&((1<<PINC0)|(1<<PINC1));

if (numero1>numero2)
{
PORTD=1;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
PORTD=1;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
}
if (numero1<numero2)
{
PORTD=2;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
PORTD=2;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
}
if (numero1==numero2)
{
PORTD=4;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
PORTD=4;
_delay_ms(900);
PORTD=0x00;
_delay_ms(900);
}

}
}
}
CODIGO DE COMPARAR 2 NUMEROS Y CONTEO PAR E IMPAR

#define F_CPU 1000000


#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
//PUERTOS :
DDRB=0xF0;
DDRD=0x00;
DDRC=0x00;
//PULL UP :
PORTC|=(1<<PORTC5);
PORTB|=(1<<PORTB0)|(1<<PORTB1)|(1<<PORTB2);
PORTD|=(1<<PORTD0)|(1<<PORTD1)|(1<<PORTD2);
//VARIABLES :
int i=0;
//int centinela=1;
//int numero1=0;
//int numero2=0;
int A=0;
int B=0;

while (1)
{
while (!(PINC&(1<<PINC5)))
{
while (!(PINC&(1<<PINC5)))
{
}
A=PINB;
B=PIND;
if (A>B)
{
for (i=2;i<=14;i=i+2)
{
PORTB=i<<4;
_delay_ms(900);
}
for (i=14;i>=2;i=i-2)
{
PORTB=i<<4;
_delay_ms(900);
}
}
if (A<B)
{
for (i=1;i<=15;i=i+2)
{
PORTB=i<<4;
_delay_ms(900);
}
for (i=15;i>=1;i=i-2)
{
PORTB=i<<4;
_delay_ms(900);
}
}
if (A==B)
{
PORTB=15<<4;
_delay_ms(900);
}
}

}
}
CODIGO DE

También podría gustarte