Estructura de Control IFEs una declaración condicional cuyo código asociado es ejecutado dependiendo de la condición. Si la expresion o condicion es TRUE entonces se ejecuta la sentencia, si es FALSE se terminara la condicion, ahora, TRUE es un valor cualquiera diferente de cero 0, FALSE es un valor igual a cero 0.
if (expresion o condicion) sentencia;ejem:
if(PORTA == 0X01) //portA es igual a 1?
LATB = 0X01;//si, ejecutar sentencia
//no, fin de declaracion
if (expresion o condicion) {
sentencia1; sentencia2; sentencia3; sentencia4; sentencia5; }
ejem:
//***************
if(PORTA == 0X02) //puertoA es igual a 2?
{
LATB = 0X02; //si, ejecutar sentencias dentro de las llaves
LATC = 0X02;
}
//***************
//no, fin de condicional
Estructura de Control IF-ELSETenemos 2 bloques de codigo separados por la condicion, de esta manera, si la condicon es TRUE ejecutar bloque 1, si es FALSE entonces ejecutar bloque2.
if (expresion o condicion){
sentencia1; //bloque 1
sentencia2;}
else {
sentencia3; // bloque 2
sentencia4;}
ejem:
//***************
if(PORTA >= 0X09); porta es mayor o igual que 9?
{
a=255; //bloque 1 TRUE
b=0;
}
else //sino, entonces...
{
b=255;//bloque 2 FALSE
a=0;
}
//***************
//fin de condicion
Estructura de Control IF - ELSE/ELSE IFEs una variante del IF - ELSE, por la cual el lenguaje C nos permite realizar una estructura de condicion con mas de 2 decisiones.
if (expresion1 o condicion1){
sentencia1; //bloque 1
sentencia2;}
else if (expresion2 o condicion2){
sentencia3; // bloque 2
sentencia4;}
else {
sentencia5; // bloque 3
sentencia6;}
ejem:
//***************
if(PORTA == 0X0F) //condicion 1
{
LATB = 0X0F;
LATC = 0X0F;
}
else if (PORTA == 0X0E) // condicion 2
{
LATB = 0X0E;
LATC = 0X0E;
}
else //sino , entonces
{
a++;
b--;
}
Finalmente, anotamos los operadores con lo que se obtienen las condiciones o expresiones del condicional IF:
x == y : x (igual a) y
x != y : x (es diferente a) y
x > y : x (es mayor que) y
x < y : x (es menor que) y
x <= y : x (es menor o igual que) y
x >= y : x (es mayor o igual que) y
x && y : AND logico
x || y : OR logico
APLICACION DEL IF, ELSE, ELSE IF
//micro_cadaver
//hlaredo@gmail.com
#include <p18f2525.h>
#include <stdio.h>
#pragma config OSC = XT,FCMEN = OFF,IESO = OFF //CONFIG1H
#pragma config PWRT = ON,BOREN = OFF,BORV = 0 //CONFIG2L
#pragma config WDT = OFF,WDTPS = 32768 //CONFIG2H
#pragma config MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF,CCP2MX = PORTC//CONFIG3H
#pragma config STVREN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF//CONFIG4L
#pragma config CP0 = ON,CP1 = ON,CP2 = ON//CONFIG5L
#pragma config CPB = ON,CPD = ON//CONFIG5H
#pragma config WRT0 = ON,WRT1 = ON,WRT2 = ON//CONFIG6L
#pragma config WRTB = ON,WRTC = ON,WRTD = ON//CONFIG6H
#pragma config EBTR0 = ON,EBTR1 = ON,EBTR2 = ON//CONFIG7L
#pragma config EBTRB = ON//CONFIG7H
unsigned int a,b;
void main(void){
//inicializar puertoA
//todos los pines
//seran digitales
PORTA = 0X00;
LATA = 0X00;
ADCON0 = 0X00;
ADCON1 = 0X0F;
CMCON = 0X07;
//*******************
TRISA = 0XFF;
TRISB = 0X00;
TRISC = 0X00;
LATB = 0X00;
LATC = 0X00;
//*******************************************************
//*******************************************************
while(1)
{
//***************
if(PORTA == 0X01)
LATB = 0X01;
//***************
if(PORTA == 0X02)
{
LATB = 0X02;
LATC = 0X02;
}
//***************
if(PORTA <= 0X05)
a=10;
else
a=100;
//***************
if(PORTA >= 0X09)
{
a=255;
b=0;
}
else
{
b=255;
a=0;
}
//***************
if(PORTA == 0X0F)
{
LATB = 0X0F;
LATC = 0X0F;
}
else if (PORTA == 0X0E)
{
LATB = 0X0E;
LATC = 0X0E;
}
else
{
a++;
b--;
}
}
//*******************************************************
//*******************************************************
}
todos los archivos:h**p://www.box.net/shared/ez6axq7sq1