Bien aqui la nueva entrega de programitas en c jeje!!!, esta vez no voy a poner un programa nuevo, sino la recopilacion de dos que ya hemos realizado, me explico la idea es que con el programa del coche fantastico y el programa este ultimo del juego de luces....¿porque no realizar el pic los dos?es decir, con un switch si esta cerrado que ejecute un programa y si esta abierto realice el otro...para ello debemos hacernos nuestra libreria(nuestro include fichero.h)y alli definir nuestras funciones(digo hacer librerias porque no vamos a programar otra vez lo que ya hemos hecho!!!): aqui la libreria:
////////////////////////////////////////////////////////////////////////////////////
// VsZeNeR"04
// 14/Agosto/05
//
// Programa: Coche Fantastico
// Version: 2.0
//
// Dispositivo: PIC 16F648A Compilador: CCS vs3.227
// Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3
//
// Notas: Barrido de led"s simulando la iluminacion del coche fantastico por el
// puerto B. Adaptacion del codigo en basic de lordlafebre
//
// RB0 -> 1º Led
// RB1 -> 2º Led
// RB2 -> 3º Led
// RB3 -> 4º Led
// RB4 -> 5º Led
// RB5 -> 6º Led
// RB6 -> 7º Led
// RB7 -> 8º Led
// En la variable cont se va almacenando los valores 1-2-4-8-16-32-64-128
// que en binario corresponden a la secuencia 00000001-00000010-00000100...
// son los led"s a iluminar, coincidiendo con la secuencia de iluminacion
// del coche fantastico(version Ecuatoriana: auto fantastico)
//////////////////////////////////////////////////////////////////////////////////
#use delay (clock=4000000) //Fosc=4Mhz,define funcion delay
///FUNCION COCHE FANTASTICO
void kit(void)
{
int i,cont; //variables definidas
cont=1; //inicializar...
for(i=1;i<8;i++){ //led"s on derecha
output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont*2;
}
for(i=1;i<8;i++){
output_b(cont); //ilumino led correspondiente
delay_ms(100);
cont=cont/2;
}
}
////////////////////////////////////////////////////////////////////////////////////
// VsZeNeR"05
// 15/Agosto/05
//
// Programa: Juego de luces
// Version: 0.0
//
// Dispositivo: PIC 16F648A Compilador: CCS vs3.227
// Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3
//
// Notas: Iluminacion de juego de luces fuera dentro por el puerto B.
// Adaptacion a c por vszener del codigo en basic de lordlafebre.
//
// RB0 -> 1º Led
// RB1 -> 2º Led
// RB2 -> 3º Led
// RB3 -> 4º Led
// RB4 -> 5º Led
// RB5 -> 6º Led
// RB6 -> 7º Led
// RB7 -> 8º Led
//////////////////////////////////////////////////////////////////////////////////
///FUNCION JUEGO_LUCES
void juego_luces(void)
{
signed char i; //variable indice
int leds[4]={0b10000001,0b01000010,0b00100100,0b00011000}; //led"s
for(i=0;i<4;i++){ //led"s on fuera-dentro
output_b(leds[ i ]); //ilumino led"s correspondientes
delay_ms(100);
}
for(i=3;i>-1;i--){ //led"s on dentro-fuera
output_b(leds[ i ]); //ilumino led"s correspondientes
delay_ms(100);
}
}
la guardamos con el nombre de vs_lib_luces.h
Y aqui el programa principal:
////////////////////////////////////////////////////////////////////////////////////
// VsZeNeR"05
// 15/Agosto/05
//
// Programa: Luces
// Version: 0.0
//
// Dispositivo: PIC 16F648A Compilador: CCS vs3.227
// Entorno IDE: MPLAB IDE v7.20 Simulador: Proteus 6.7sp3
//
// Notas: Programa que consiste en que si por el pin A0 del porta lee un "0" logico
// es decir, esta en low, se ejecuta la iluminacion del coche fantastico
// por el portb, en cambio si por el pin A0 del porta se recibe un estado alto
// un "1" logico(high), se ejecuta por el portb la iluminacion de encender les"s
// de fuera-dentro y viceversa. Tener en cuenta que hay que poner la
// directiva NOLVP para que el pin B4 sea de salida
//////////////////////////////////////////////////////////////////////////////////
#include <16f648a.h> //pic a utilizar
#include <vs_lib_luces.h> //nuestra libreria para las funciones kit(),juego_luces()
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //ordenes para el programador
#use standard_io(B)
#use standard_io(A)
///PROGRAMA
void main(void)
{
set_tris_a(0xFF); //porta como entrada
set_tris_b(0x00); //portb como salida
disable_interrupts(GLOBAL); //todas las interrupciones desactivadas
do{ //bucle...
if(!input(PIN_A0)) //¿switch cerrado?
kit(); //SI ->ejecuta coche fantastico(kit)
else
juego_luces(); //NO ->ejecuta juego luces
}while(TRUE); //...infinito
}
Yo trabajo en el MPlab y hago los siguientes pasos(eso si como compilador el ccs): realizo un nuevo proyecto con el dispositivo programado y en source files agrego el programa principal: vs_luces.c despues en headers files agrego nuestra libreria: vs_lib_luces.h compilo y woala! ya tengo el hex listo para simular!!!
PD: SUbire los archivos lo antes que pueda