Sei sulla pagina 1di 16

Microelectrnica

Parte 7: Instrucciones
Condicionales + Pulsadores
Autor: Mauricio Galvez Legua
(mgalvez@uni.edu.pe)

Estructuras Condicionales
Todos los programas que hemos desarrollado han
sido lineales, esto significa que empezaban por la
primera instruccin y finalizaba en la ltima
instruccin. Pero resulta que muchas veces
queremos que ciertas instrucciones se ejecuten en
funcin a ciertas condiciones. Para esto estn las
sentencia de control de flujo o sentencias de
condicin.

Estructuras Condicionales: IF
La palabra if significa si (condicional). Su formato es
el siguiente:

if ( condicin )
{
<bloque de instrucciones>
}
Cuando se cumple la condicin entre parntesis se
ejecuta el bloque inmediatamente siguiente al if
(bloque de instrucciones).

Estructuras Condicionales: IF
Ejemplo (C02A): Se tiene dos pulsadores
conectados al PORTB y dos display conectados al
PORTC.
Cuando se presiona el primer pulsador, la cuenta en el
PORTC se incrementa.
Cuando se presiona el segundo pulsador, la cuenta en el
PORTC se decrementa.

Estructuras Condicionales: IF

Estructuras Condicionales: IF
Ejemplo (C02B): Programa que comanda una barra
de leds en donde, inicialmente esta encendido un
led (bit 4). Se tiene dos pulsadores:
Con el primer pulsador se desplaza el led encendido a la
izquierda hasta llegar al final. Si se sigue presionando
dicha tecla, el led permanecer en dicha posicin final.
Con el segundo pulsador se desplaza el led encendido a
la derecha hasta llegar al final. Si se sigue presionando
dicha tecla, el led permanecer en dicha posicin final.

Estructuras Condicionales: IF

Estructuras Condicionales: IF
Para solucionar este
problema debemos
definir dos valores:
Extremo derecho:
00000001
Extremo izquierdo:
10000000

#include <xc.h> // Librera de XC8


//Configuracin del PIC16F877A
#pragma config
CP=OFF,DEBUG=OFF,WRT=OFF,CPD=OFF,LVP=OFF
#pragma config
BOREN=OFF,PWRTE=ON,WDTE=OFF,FOSC=XT
main(){
TRISBbits.TRISB0=1; //Tambin se puede hacer
TRISB0=1
TRISB1=1;
TRISD = 0;
PORTD = 0b00010000;
while(1){
while(RB0==1 && RB1==1){}
if(RB0==0 && PORTD!=0b00000001){
PORTD=PORTD>>1;
}
if(RB1==0 && PORTD!=0b10000000){
PORTD=PORTD<<1;
}
while(RB0==0 || RB1==0){}
}
8
}

Estructuras Condicionales: IF - else


El formato es el siguiente:
if ( condicin )
{
<bloque que se ejecuta si se cumple la condicin>
}
else
{
<bloque que se ejecuta si no se cumple la condicin>
}

Tenemos un bloque de instrucciones que se ejecuta


si la condicin es verdadera y otro bloque de
instrucciones que se ejecuta si la condicin es falsa.
9

Estructuras Condicionales: IF else IF


La instruccin if else if significa podemos adicionar
un if dentro de otros if y as sucesivamente. Esto se
llamada anidar.

10

Estructuras Condicionales: switch


La sentencia switch sirve par elegir una opcin entre varias
disponibles. Aqu no tenemos una condicin que se debe
cumplir sino el valor de una variable. Dependiendo del valor
se cumplir un caso u otro. El formato de la sentencia switch
es:
switch (variable){
case opcin1:
cdigo a ejecutar si la variable = opcin1
break;
case opcin2:
cdigo a ejecutar si la variable = opcin2
break;
........<bloques de case>
default:
cdigo que se ejecuta si la variable no es igual a los valores del case.
break;
}
11

Estructuras Condicionales: switch


Ejemplo (C02C): Programa que implementa un indicador de
nivel en funcin a los valores de 3 bits (switches).

12

Estructuras Condicionales:
switch
Solucin:

#include <xc.h> // Librera de XC8


//Configuracin del PIC16F877A
#pragma config
CP=OFF,DEBUG=OFF,WRT=OFF,CPD=OFF,LVP=OFF
#pragma config
BOREN=OFF,PWRTE=ON,WDTE=OFF,FOSC=XT
main(){
TRISB = 0;
PORTB = 0;
TRISD = 0xFF;
while(1){
switch (PORTD){
case 0:
PORTB=0b00000000;
break;
case 1:
PORTB=0b10000000;
break;
case 2:
PORTB=0b11000000;
break;
case 3:
PORTB=0b11100000;
break;
case 4:
PORTB=0b11110000;
break;
case 5:
PORTB=0b11111000;
break;
case 6:
PORTB=0b11111100;
break;
case 7:
PORTB=0b11111110;
break;
default:
break;
}
}
13
}

Estructuras Condicionales:
Ejercicio (C02D): Se tiene un microcontrolador
PIC16F877A que tiene conectado tres pulsadores y una
barra de leds segn el siguiente grfico:
Se pide elaborar un programa que permita:
Tener un cursor (led encendido) que iniciar con el
valor: 10000000.
El cursor puede ser desplazado a la derecha o a la izquierda
mediante los respectivos pulsadores. El cursor no debe
salirse de los extremos.
Si presionamos el pulsador Marcar/Desmarcar, se debe
realizar lo siguiente:

Si el bit donde est ubicado el cursor es un 0, entonces grabar


un 1,
Si el bit donde est ubicado el cursor es un 1, entonces grabar
un o.

En cualquier momento el cursor se puede desplazar por la


barra de leds.

14

Estructuras
Condicionales:

15

Fin
Autor: Mauricio Galvez Legua
(mgalvez@uni.edu.pe)

16

Potrebbero piacerti anche