Professional Documents
Culture Documents
ARDUINO
RESUMEN: Anexo3
1
.
.
for (columna=4;columna<=7;columna++)
{
PORTK=PORTK&~(1<<columna);
for (fila=0;fila<=3;fila++)
{
if ((PINK&(1<<fila))==0)
Anexo2 valor=aux[fila][(columna-4)];
while
((PINK&(1<<fila))==0)
_delay_ms(25);
}
}
PORTK=PORTK|(1<<columna);
2
.
.
digitos[0]=digitos[1]=digitos[2]=digitos[3]=digitos[4]=0; PORTD=0b00000000;
_delay_ms(1);
PORTD=0b00001111; numero=0;
}
PORTF=0b11111111; //SEGUNDO NUMERO DIGITO1
if(bandera==4)
_delay_ms(800); {
//Verificaciones de
PORTF=0b00000000; ingreso solo numero
}
else if(numeros_display[numero]==119 ||
{ numeros_display[numero]==124 ||
numeros_display[numero]==57 ||
digitos[0]=numero; numeros_display[numero]==94 ||
numeros_display[numero]==121)
PORTD=0X01; {
bandera = 0;
PORTF=numeros_display[digitos[0]];
_delay_ms(5); digitos[0]=digitos[1]=digitos[2]=digitos[3]=digitos[4]=0;
}
} PORTD=0b00001111;
3
.
.
PORTF=0b11111111; //SUMA
if(numeros_display[numero]==119 || respuesta=primer_numero-
numeros_display[numero]==124 || segundo_numero;
numeros_display[numero]==57 ||
numeros_display[numero]==94 || negativo=0;
numeros_display[numero]==121)
{ }
bandera = 0;
//Resta negativa
digitos[0]=digitos[1]=digitos[2]=digitos[3]=digitos[4]=0;
else
PORTD=0b00001111;
{
PORTF=0b11111111;
respuesta=segundo_numero-
_delay_ms(800); primer_numero;
PORTF=0b00000000; negativo=1;
}
else }
{ }
digitos[4]=numero; break;
PORTD=0X01; //MULTIPLICACION
PORTD=0X02; respuesta=primer_numero*segundo_numero;
PORTF=numeros_display[digitos[3]]; negativo=0;
_delay_ms(5); }
}
} break;
//Obtener el numero
//DIVISION
primer_numero=(digitos[0]*10)+digitos[1];
case 94:
segundo_numero=(digitos[3]*10)+digitos[4];
if(bandera==6) //DIVISION PARA CERO
{ if
digitos[5]=numero; (segundo_numero<=0)
{
if(numeros_display[digitos[5]]==121)
{ respuesta=9999;
switch(numeros_display[digitos[2]]) negativo=0;
{ }
4
.
.
else PORTF=0b11111111;
{ _delay_ms(800);
PORTF=0b00000000;
respuesta=primer_numero/segundo_numero; }
}
negativo=0;
} int main(void)
} {
} DDRK=0b11110000; //PK0-PK3 como entradas. PK4-
if (respuesta>0); PK7 como salida
{ PORTK=0b00001111; //resistencias pull-up en la LSB
del puerto K
digito1=respuesta/1000; PCICR=0b00000100; //1 lgico en este bit habilita el
vector de interrupcin PCI2. Este vector corresponde a los
parcial=respuesta%1000; pines PCINT23:16.
PCMSK2=0b00001111; //Se habilita las interrupciones
digito2=parcial/100; PCINT16-PCINT19
DDRA=0b11111111; //Puerto A es todo
parcial=parcial%100; salida
DDRF=0b11111111; //Puerto F como salida.
digito3=parcial/10; DDRD=255;
PORTD=0;
digito4=parcial%10; sei();
while (1)
{
PORTD=0b00001000; display(tecla);
if }
(negativo==1) }
{ 5 REFERENCIAS
PORTD=0b00001000;
[1] Carro Fernndez, G. Introduccin a Arduino (I):
PORTF=0b00001000; electrnica para todos.
_delay_ms(5);
}
PORTD=0b00000100;
PORTF=numeros_display[digito2];
_delay_ms(5);
PORTD=0b00000010;
PORTF=numeros_display[digito3];
_delay_ms(5);
PORTD=0b00000001;
PORTF=numeros_display[digito4];
_delay_ms(5);
}
}
//Repetir bucle
if(bandera==7)
{
bandera = 0;
digitos[0]=digitos[1]=digitos[2]=digitos[3]=digitos[4]=0;
PORTD=0b00001111;