martes, 24 de diciembre de 2013

FELIZ NAVIDAD, PRÓSPERO AÑO 2014

            Feliz navidad, un muy buen año 2014 para todos


        Atte. Benny.

domingo, 15 de diciembre de 2013

MICROCONTROLADORES PIC 27: SWITCH EN EL XC8

           En este caso se comenta como se utiliza la instrucción switch para trabajar con sentencias múltiples en el PIC, con la ayuda del programa XC8; lo que se quiere es realizar diferentes efectos en los leds conectados al puerto b del PIC16F84A.

           El vídeo es el siguiente:



       El esquema del circuito utilizado es el que sigue:


         A continuación el diagrama de flujo utilizado para realizar el programa:


      Aquí el programa codificado en el XC8:

#pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF       // Watchdog Timer (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (Power-up Timer is enabled)
#pragma config CP = OFF         // Code Protection bit (Code protection disabled)

#include <xc.h>
#define _XTAL_FREQ 4000000

void main(void) {

    int cuenta=0;
    int efecto=0;
    TRISB=0;
    PORTB=0;

    __delay_ms(200);

    while(1){
        cuenta=cuenta+1;

        switch(cuenta){                              //Aquí el programa empieza a verificar los valores que
            case 10:                                     //va tomando la variable cuenta
                efecto=1;          
                PORTB=0b00000001;
                break;
            case 80:
                efecto=2;
                PORTB=0b01010101;
                break;
            case 160:
                efecto=3;
                PORTB=0b10000000;
                break;
            case 240:
                efecto=4;
                break;
        }

        switch(efecto){                            //Aquí el programa verifica los valores de la variable 
            case 1:                                    //efecto para que de acuerdo a ello el pic nos de diferentes
                __delay_ms(100);                //salidas por el puerto b, lo cual veremos a traves de leds
                PORTB<<=1;
                if(PORTB==0)
                    PORTB=0b00000001;
                break;
            case 2:
                __delay_ms(100);
                PORTB=~PORTB;
                break;
            case 3:
                __delay_ms(100);
                PORTB>>=1;
                if(PORTB==0)
                    PORTB=0b10000000;
                break;
            default:
                PORTB=0b10000001;
                __delay_ms(100);
                PORTB=0b01000010;
                __delay_ms(100);
                PORTB=0b00100100;
                __delay_ms(100);
                PORTB=0b00011000;
                __delay_ms(100);
                PORTB=0b00100100;
                __delay_ms(100);
                PORTB=0b01000010;
                __delay_ms(100);
        }

        if(cuenta==255)                                 //el programa está siempre verificando el valor de la
            cuenta=0;                                       //variable cuenta.
    }

    return;
}


         He aquí una imagen del circuito en plena operación:

Atte Benny.

sábado, 14 de diciembre de 2013

MICROCONTROLADORES PIC 26: SWITCH EN CCS

              En este caso se realiza un programa para mostrar como podemos hacer la selección múltiple en el CCS, para ello nos ayudamos de la instrucción SWITCH.
           
              El vídeo es el siguiente:


              A continuación el esquema del circuito utilizado:


             El que sigue es el diagrama de flujo que se utilizó para realizar el programa



            El siguiente es el código en realizado en CCS, para ver como utilizar el switch cuando se presenten condiciones múltiples:

#include <16F84A.h>

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES PUT                      //Power Up Timer

#use delay(crystal=4000000)

//Lo de arriba nos lo crea el asistente al preparar los bits de configuración
//para verlo haces click con el botón derecho sobre <led.h> (esto depende del nombre
//que le des a tu programa en este caso lo llamamos led)
//y le das click en open file at cursor


#include <led.h>
#use fast_io(b)
#byte portb=0x06

void main()
{  
   int16 tiempo=500;
   int8 contador=0;
  
      
   set_tris_b(0x00);
   portb=0x00;
   
   delay_ms(tiempo);

   while(TRUE)
   {
      contador=contador+1;
         
      switch(contador){
         case 20:
            portb=0b10101010;
            break;
         case 40:
            portb=0b00001111;
            break;
         case 60:
            portb=0b11111111;
            break;
         case 80:
            portb=0b11000011;
            break;
            
      }
      
      portb=~portb;
      
      if(contador==81)
         contador=0;
         
      delay_ms(tiempo);
         
   }

}

Atte Benny.

MICROCONTROLADORES PIC 25: PBP SELECT CASE 

          En este caso se realiza un programa muy sencillo en PBP, de lo que se trata aquí es ver como se utiliza la instrucción select case para poder realizar selecciones múltiples.

             El vídeo es el siguiente:


           El esquema del circuito utilizado:


           El diagrama de flujo utilizado para realizar el programa en PBP es el siguiente:

          El código del programa realizado en PBP es el que sigue:

#CONFIG
   __config _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

 #ENDCONFIG

DEFINE OSC 4

trisb.4=0
trisb.5=0
trisb.6=0
trisb.7=0

tiempo    var word
contador var byte

tiempo   =100
contador=0

symbol ledRojo        = portb.4
symbol ledAmarillo  = portb.5
symbol ledVerde      =portb.6
symbol ledNaranja   =portb.7

low ledRojo       
ledAmarillo  =0
ledVerde     =0
ledNaranja  =0

pause tiempo

inicio:
contador=contador+1

select case contador
case 80
ledRojo       =1
ledAmarillo  =0
ledVerde     =0
case 160
low   ledRojo
high  ledAmarillo 
low   ledVerde   
case 240
ledRojo       =0
ledAmarillo  =0
ledVerde     =1
case else
toggle ledNaranja
end select

if contador=255 then contador=0

pause tiempo

goto inicio
end

Atte Benny.

SELECT CASE EN PBP, SWITCH EN CCS Y XC8

          Se comenta sobre las instrucciones que nos ayudaran a programar nuestros PIC con las selecciones múltiples.

          Para el caso del PBP es de la siguiente manera:

select case valor

          case valor_1
          sentencias

          case valor_2
          sentencias
             .
             .
             .
          case valor_n
          sentencias

          case else
          sentencias

end select



            Para los casos del CCS y del XC8, como ambos están basados en el C, será de la siguiente forma:

switch(valor){

          case valor_1:
                  sentencias;
                  break;
          case valor_2:
                  sentencias;
                  break;
             .
             .
             .
          case valor_n:
                  sentencias;
                  break;

          default:
                  sentencias
}

          El vídeo relacionado lo puedes ver aquí:


        Atte Benny.