Manejo de Leds en CCS
2 participantes
PICELECTRONICA :: Inicio :: Microcontroladores :: Microchip :: CCS
Página 1 de 1.
Manejo de Leds en CCS
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 conforme avancen los ejemplos es posible que nos encontremos en la necesidad de cambiar de PIC aunque eso sera a futuro, un abrazo y a darle
Encender un led
Es lo que primero que se aprende, Encenderemos y apagaremos un led por el PORT B0 bastante sencillo
Y asi se enciende un led
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
Última edición por Somacruz el Mar Abr 24, 2012 11:03 pm, editado 1 vez
Auto Increible v 0.5
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
y aca el video:
- 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:
Última edición por Somacruz el Mar Abr 24, 2012 8:58 am, editado 1 vez (Razón : Me falto una llave jeje)
Manejo de LED con TRISB y PORTB
Este ejemplo sencillo demuestra la otra manera de hacer parpadear un led, por el PIN0 del PUERTOB
espero que les sirva, duda sugerencia, solo pregunte.
- 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);
}
}
espero que les sirva, duda sugerencia, solo pregunte.
FREDDYQT- Usario Nuevo
- Mensajes : 16
Fecha de inscripción : 20/04/2012
Edad : 30
Localización : Peru
LED Y PULSADOR
Este es otro ejemplo sencillo que nos permite conocer ahora el bucle IF/ELSE 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
- 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
}
}
FREDDYQT- Usario Nuevo
- Mensajes : 16
Fecha de inscripción : 20/04/2012
Edad : 30
Localización : Peru
Desplazamiento de Bits con LEDs
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.
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.
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;}
}
}
}
}
FREDDYQT- Usario Nuevo
- Mensajes : 16
Fecha de inscripción : 20/04/2012
Edad : 30
Localización : Peru
Temas similares
» Manejo de LCD 16x2
» Manejo de LCD 20x4
» MANEJO DEL C.I. 74HC164 Y DISPLAY
» PIC Y DISPLAY A.C.-MANEJO BASICO
» Tutorial de PROTON manejo de LCD
» Manejo de LCD 20x4
» MANEJO DEL C.I. 74HC164 Y DISPLAY
» PIC Y DISPLAY A.C.-MANEJO BASICO
» Tutorial de PROTON manejo de LCD
PICELECTRONICA :: Inicio :: Microcontroladores :: Microchip :: CCS
Página 1 de 1.
Permisos de este foro:
No puedes responder a temas en este foro.