Está en la página 1de 5

Practica 1: Bucles While, For, Switch.

Bucle While (mientras)


Se utiliza cuando se desea que un bucle de instrucciones se ejecute mientras una condición sea cierta.

Bucle FOR (desde)


Se utiliza cuando se desea que un bucle se ejecute repetidamente un número determinado de veces que se
conoce por anticipado.

Bucle Switch:
Se utiliza cuando se tienen múltiples condiciones.
Montar el siquiente circuito de proteus.

Usar el compilador de CCS para crear los códigos


Crear un nuevo proyecto usando el asistente PIC Wizard
En la ventana usar como dispositivo usar el pic16f84a con frecuencia del oscilador de 10mhz
Verificar los FUSES adecuados
Nombrar los pines del puerto B con Led1, Led2, Led3, Led4, Led5.
Dejar las demás opciones como están.

Escribir los siguientes códigos de práctica, compilarlos, ejecutarlos en proteus y/o grabarlos en el
microcontrolador.
Código 1: Encender juegos de Leds indefinidamente

#include <16F84A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#use delay(clock=10000000)

#define Led1 PIN_B0 //Nombrar Led1 al pin B0


#define Led2 PIN_B1
#define Led3 PIN_B2
#define Led4 PIN_B3
#define Led5 PIN_B4

int demora=1000; // variable valor inicial de 1000

void main()
{
output_B(0b00000000); // Pines del puerto apagado
while(true) //Bucle infinito
{
output_high(Led1); //Encender el led1
delay_ms(demora); //Esperar 1 seg
output_high(Led2); //Encender el led2
output_low(Led1); //Apagar el led1
delay_ms(demora); //Esperar 1 seg
output_high(Led3); //Encender el led3
output_low(Led2); //Apagar el led2
delay_ms(demora); //Esperar 1 seg
output_high(Led4);
output_low(Led3);
delay_ms(demora);
output_high(Led5);
output_low(Led4);
delay_ms(demora);
output_low(Led5);
delay_ms(demora);
}
}

Código 2: Encender juego de luces de acuerdo al estado de un pin

#include <16F84A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (>4mhz)
#use delay(clock=10000000)

#define Led1 PIN_B0 //Nombrar Led1 al pin B0


#define Led2 PIN_B1
#define Led3 PIN_B2
#define Led4 PIN_B3
#define Led5 PIN_B4
output_high(Led1); //Encender el led1
delay_ms(demora); //Esperar 1 seg
output_high(Led2); //Encender el led2
output_low(Led1); //Apagar el led1
delay_ms(demora); //Esperar 1 seg
output_high(Led3); //Encender el led3
output_low(Led2); //Apagar el led2
delay_ms(demora); //Esperar 1 seg
output_high(Led4);
output_low(Led3);
delay_ms(demora);
output_high(Led5);
output_low(Led4);
delay_ms(demora);
output_low(Led5);
delay_ms(demora);
}
}
}

Código 3: Encender juego de luces n número de veces.

#include <16F84A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#use delay(clock=10000000)

#define Led1 PIN_B0 //Nombrar Led1 al pin B0


#define Led2 PIN_B1
#define Led3 PIN_B2
#define Led4 PIN_B3
#define Led5 PIN_B4

int demora=1000; //Definir variable con valor 1000


int i; //Definir variable de conteo
void main()
{
output_B(0b00000000); //Pines del PB apagados
for (i=1;i<=10;++i) { //Bucle

output_high(Led1); //Encender el led1


delay_ms(demora); //Esperar 1 seg
output_high(Led2); //Encender el led2
output_low(Led1); //Apagar el led1
delay_ms(demora); //Esperar 1 seg
output_high(Led3); //Encender el led3
output_low(Led2); //Apagar el led2
delay_ms(demora); //Esperar 1 seg
output_high(Led4);
output_low(Led3);
delay_ms(demora);
output_high(Led5);
Código 4: Encender juego de luces de acuerdo al estado del puerto.

#include <16F84A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz)
#use delay(clock=10000000)

#define Led1 PIN_B0 //Nombrar Led1 al pin B0


#define Led2 PIN_B1
#define Led3 PIN_B2
#define Led4 PIN_B3
#define Led5 PIN_B4

int demora=100; //Definir variable con valor 100


int valor;
void main()
{
output_B(0b00000000);//pines del puerto apagados
While(1){ //Bucle infinito
valor =input_a(); //Valor introducido por PA.
switch (valor) { //Bucle Switch

case 0:output_b(0x00); //Apagar todos


output_high(Led1); //Encender el led1
delay_ms(demora); //Esperar 100 mseg
break;
case 1:output_b(0x00); //Apagar todos
output_high(Led2); //Encender el led1
delay_ms(demora); //Esperar 100 mseg
break;
case 2:output_b(0x00); //Apagar todos
output_high(Led3); //Encender el led1
delay_ms(demora); //Esperar 100 mseg
break;
case 3:output_b(0x00); //Apagar todos
output_high(Led4); //Encender el led1
delay_ms(demora); //Esperar 100 mseg
break;
case 4:output_b(0x00); //Apagar todos
output_high(Led5); //Encender el led1
delay_ms(demora); //Esperar 100 mseg
break;
}
}
}

También podría gustarte