PICELECTRONICA
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

Manejo de Leds en CCS

2 participantes

Ir abajo

Manejo de Leds en CCS Empty Manejo de Leds en CCS

Mensaje  Somacruz Vie Abr 20, 2012 10:05 pm

En este apartado estare colocando ejercicios en Lenguaje C para trabajar con el Compilador CCS poco a poco iremos agregando ejemplos, estaremos realizando los ejemplos con el PIC16F628 , porque? Porque es barato, facil de conseguir y por que tengo varios sin usar Very Happy conforme avancen los ejemplos es posible que nos encontremos en la necesidad de cambiar de PIC Shocked aunque eso sera a futuro, un abrazo y a darle Smile

Encender un led
Es lo que primero que se aprende, Encenderemos y apagaremos un led por el PORT B0 bastante sencillo



Código:
/////////////////////////////////////////////
//Practica #1
//Encender 1 led por el puerto B (RB0)
//PIC: 16F628
//Compilador CCS
//Autor:Soma
// 20-04-2012
////////////////////////////////////////////

//FUSES
#include <16f628a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
///////////////////////////
//Programa principal
//////////////////////////
void main () { while(true) {
output_high(PIN_B0);//Enciende el led B0
delay_ms(500);        //Retardo
output_low(PIN_B0);      //Led B0 apagado
delay_ms(500);              //Retardo
}
}

Y asi se enciende un led Very Happy


Última edición por Somacruz el Mar Abr 24, 2012 11:03 pm, editado 1 vez
Somacruz
Somacruz
Administrador
Administrador

Mensajes : 23
Fecha de inscripción : 20/04/2012
Edad : 41

http://solopic.wordpress.com

Volver arriba Ir abajo

Manejo de Leds en CCS Empty Auto Increible v 0.5

Mensaje  Somacruz Lun Abr 23, 2012 11:46 pm

Y seguimos con los ejemplos, esta vez vamos a utilizar el mismo ejemplo anterior y vamos a jugar con el puerto, con solo delays vamos hacer un barrido de leds que simula el efecto de las luces del Auto Increible aca el codigo

Código:
/////////////////////////////////////////////
//Auto Increible v0.5
//Encender 8 led por el puerto B (RB0 a RB7)
//Simulando el efecto del Auto Increible
//PIC: 16f628
//Compilador CCS
//Autor:Soma
////////////////////////////////////////////

//FUSES
#include <16f628a.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
///////////////////////////
//Programa principal
//////////////////////////
void main () { while(true) {
output_high(PIN_B0);
delay_ms(500);   
output_low(PIN_B0);
output_high(PIN_B1);   
delay_ms(500);             
output_low(PIN_B1);
output_high(PIN_B2);
delay_ms(500);
output_low(PIN_B2);
output_high(PIN_B3);
delay_ms(500);
output_low(PIN_B3);
output_high(PIN_B4);
delay_ms(500);
output_low(PIN_B4);
output_high(PIN_B5);
delay_ms(500);
output_low(PIN_B5);
output_high(PIN_B6);
delay_ms(500);
output_low(PIN_B6);
output_high(PIN_B7);
delay_ms(500);
output_low(PIN_B7);
}
}


y aca el video:



Very Happy


Última edición por Somacruz el Mar Abr 24, 2012 8:58 am, editado 1 vez (Razón : Me falto una llave jeje)
Somacruz
Somacruz
Administrador
Administrador

Mensajes : 23
Fecha de inscripción : 20/04/2012
Edad : 41

http://solopic.wordpress.com

Volver arriba Ir abajo

Manejo de Leds en CCS Empty Manejo de LED con TRISB y PORTB

Mensaje  FREDDYQT Dom Abr 29, 2012 10:04 am

Este ejemplo sencillo demuestra la otra manera de hacer parpadear un led, por el PIN0 del PUERTOB Cerveza
Código:


/*
Autor: FREDDYQT
Fecha: 28/04/12
*/
#include <16F628A.h>  // Libreria del PIC
#fuses INTRC_IO,MCLR  //Configuracion de fuses 
#use delay (clock=4M) //La frecuancia del oscilador
#byte TRISB=0x86      // la posicion de TRISB en la memoria
#byte PORTB=0x06    //La posicion de PORTB en la memoria
void main(){        //funcion principal
TRISB=0x00;          //configuracion del puerto B como salidas
PORTB=0x00;
for(;;){            //bucle infinito
  bit_set(PORTB,0); //Coloca a 5V el pin0 del puerto B
  delay_ms(500);    //retardo de 1/2 segundo
  bit_clear(PORTB,0);//Coloca a0V el pin0 del puerto B
  delay_ms(500);
        }
            }

Manejo de Leds en CCS Scaled.php?server=803&filename=ledv


Very Happy espero que les sirva, duda sugerencia, solo pregunte.
FREDDYQT
FREDDYQT
Usario Nuevo
Usario Nuevo

Mensajes : 16
Fecha de inscripción : 20/04/2012
Edad : 30
Localización : Peru

Volver arriba Ir abajo

Manejo de Leds en CCS Empty LED Y PULSADOR

Mensaje  FREDDYQT Dom Abr 29, 2012 10:28 am

Este es otro ejemplo sencillo que nos permite conocer ahora el bucle IF/ELSE Smile Cuando presionamos el boton, el led se debe prender y cuando, no esta presionado el led permanece apagado, espero que se de mucha ayuda, hasta la proxima bounce

Código:

/*
Autor: FREDDYQT
Fecha: 28/04/12
*/
#include <16F628A.h>  // Libreria del PIC
#fuses INTRC_IO,MCLR  //Configuracion de fuses 
#use delay (clock=4M) //La frecuancia del oscilador
#byte TRISB=0x86      // la posicion de TRISB en la memoria
#byte PORTB=0x06    //La posicion de PORTB en la memoria
#byte CMCON=0x1F    //Habilita el registro CMCON en la memoria
#byte PORTA=0x05
#byte TRISA=0x85
void main(){        //funcion principal
TRISB=0x00;          //configuracion del puerto B como salidas
PORTB=0x00;
TRISA=0xFF;         
CMCON=7;        //Apaga los comparadores analogicos y convierta el puerto en I/O
for(;;){            //bucle infinito
      if(bit_test(PORTA,0)==0) //compara el valor del puerto PIN0 del PUERTO A
      bit_set(PORTB,0);    // si es verdadero saca 5V por el PIN0 del PUERTO B
      else
      bit_clear(PORTB,0);  // si es verdadero saca 0V por el PIN0 del PUERTO B
        }
            }

Manejo de Leds en CCS Scaled.php?server=233&filename=led2i
FREDDYQT
FREDDYQT
Usario Nuevo
Usario Nuevo

Mensajes : 16
Fecha de inscripción : 20/04/2012
Edad : 30
Localización : Peru

Volver arriba Ir abajo

Manejo de Leds en CCS Empty Desplazamiento de Bits con LEDs

Mensaje  FREDDYQT Dom Abr 29, 2012 1:59 pm

Very Happy Bueno ahora aremos un programa un poco mas complejo, veremos algunas nuevas instrucciones para desplazar bits, tanto a la derecha como a la izquierda es siguiente programa consiste de que cada vez que presionemos el botón, el bit se desplazara asia la izquierda o derecha, según el botón indique. alien
PORTB=PORTB<<1;
Esta instrucción trabaja de la siguiente manera, supongamos que inicialmente, PORTB=0b00000001 tenia ese valor, luego de la igualad dada en la instrucción, el valor de PORTB desplaza un bit quedando deps el valor de PORTB de la siguiente manera PORTB=0b00000010.

Código:


/*
Autor: FREDDYQT
Fecha: 28/04/12
*/
#include <16F628A.h>  // Libreria del PIC
#fuses INTRC_IO,MCLR  //Configuracion de fuses 
#use delay (clock=4M) //La frecuancia del oscilador
#byte TRISB=0x86      // la posicion de TRISB en la memoria
#byte PORTB=0x06    //La posicion de PORTB en la memoria
#byte CMCON=0x1F    //Habilita el registro CMCON en la memoria
#byte PORTA=0x05
#byte TRISA=0x85
int n=1;
void main(){        //funcion principal
TRISB=0x00;          //configuracion del puerto B como salidas
PORTB=0x00;
TRISA=0xFF;         
CMCON=7;        //Apaga los comparadores analogicos y convierta el puerto en I/O
PORTB=0b00000001;

for(;;){
              //bucle infinito
  if(bit_test(PORTA,0)==0)
  {
      delay_ms(100); //retardo para antirrebote
      if(bit_test(PORTA,0)==1) //antirrebote
      { n=n+1; // cada vez que presionemos q aumente en uno
        if(n<9) // preguntapara el reset del puerto
        PORTB=PORTB<<1;  //desplaza un bit asi la derecha
        else
        { PORTB=0b00000001; n=1;}
      }
    }
    if(bit_test(PORTA,1)==0)
  {
      delay_ms(100);
      if(bit_test(PORTA,1)==1)
      { n=n-1;
        if(n>0)
        PORTB=PORTB>>1; desplaza un bit asia la derecha
        else
        { PORTB=0b10000000; n=8;}
      }
    }
     
  }
       
}



Manejo de Leds en CCS Scaled.php?server=256&filename=led2w
FREDDYQT
FREDDYQT
Usario Nuevo
Usario Nuevo

Mensajes : 16
Fecha de inscripción : 20/04/2012
Edad : 30
Localización : Peru

Volver arriba Ir abajo

Manejo de Leds en CCS Empty Re: Manejo de Leds en CCS

Mensaje  Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.