# Programacion en ccs (el relojito)



## marviiin (Nov 6, 2011)

hola que tal a todos.
lo que pasa es que estoy programando el PIC16F628A, para que haga la funcion de un reloj digital como lo explica esta pagina:
http://www.ucontrol.com.ar/wiki/index.php?title=El_relojito
donde dicen paso a paso como programarlo en CCS,tal y cual es
mi problema es que al hacerlo yo en CCS y quererlo compilar me marca como 30 errores y no se por que, creo por que le falta puntos y comas y algunos parentesis pero enverdad no se, y la verdad soy nuevo en esto de la programacion , le agradeceria mucho si alguien me ayudara a hacerlo o decir como se hace.

les dejo un archivo del programa en CCS


----------



## guerra1488 (Dic 11, 2011)

```
//Device/Fuses/Etc.---------------------------------
#INCLUDE <16F628A.H>            //Usamos un 16F628A
#use delay(clock=4000000)       //..de 4MHz.
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES XT                       //Con oscilador a cristal...
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //No protegemos el código.
#FUSES NOBROWNOUT               //No Brownout Reset
#FUSES NOLVP                    //No low voltage prgming
#FUSES NOCPD                    //No EE protection

//Declaramos la posición de los puertos-----------------------
#BYTE PORTA = 0x05
#BYTE PORTB = 0x06
#BYTE PORTA_TRIS = 0x85
#BYTE PORTB_TRIS = 0x86

//Y asignamos cada pin como E/S según corresponda:
#DEFINE PORTA_TRIS =0b00000000; //1=ENTRADA, 0=SALIDA
#DEFINE PORTB_TRIS =0b11110001; //1=ENTRADA, 0=SALIDA
//Declaramos la Variable:
int1 bit_aux;         //Declaro la variable auxiliar
int DATA2;
int CLOCK2;

//--------------------------------------------------
//---Envia un DATO al registro de desplazamiento:
//--------------------------------------------------
void escribo_segundo(int1){
   if (bit_aux) {output_high(DATA2);} //Si es "1", lo escribo en DATA2.
   if (!bit_aux) {output_low(DATA2);} //Si es "0", lo escribo en DATA2.  
   output_low(CLOCK2);   //Pongo el CLOCK en bajo...
   output_high(CLOCK2); //...y de nuevo en alto. Listo!
   }
   

void borro_segundero(void){
   int i;
   for (i=0;i<60;i++) {   // "i" irá de 0 a 60, de 1 en 1.
      escribo_segundo(0); //Envio un "0" al registro de desplazamiento 
   }
} 

//Definimos el valor de CLOCK y DATA
#DEFINE DATA7  PIN_A2 //Nos referimos a PORTA.2 como "data7"
#DEFINE CLOCK7 PIN_A3 //Nos referimos a PORTA.3 como "clock7"

//--------------------------------------------------
//---Envia un digito al registro de desplazamiento:
//--------------------------------------------------
void escribo(int8 aux){
   int i;
   for (i=0;i<8;i++) {   // "i" irá de 0 a 7, de 1 en 1.
      //Si el bit es "0", escribo un "0".
      if (bit_test(aux,i) == 0) { 
         output_low(DATA7);    //Pongo "0" en DATA7...
         output_low(CLOCK7);   //Pongo el CLOCK en bajo...
         output_high(CLOCK7);  //...y de nuevo en alto. Listo!   
      }
      //Si el bit es "1", escribo un "1".
      if (bit_test(aux,i) == 1) { 
         output_high(DATA7);    //Pongo "1" en DATA7...
         output_low(CLOCK7);   //Pongo el CLOCK en bajo...
         output_high(CLOCK7);  //...y de nuevo en alto. Listo!   
      }
   }
}
//--------------------------------------------------
//---Limpia el display:
//--------------------------------------------------
void borro_display(void){
   int i;
   for (i=1;i<33;i++) {   // "i" irá de 1 a 32, de 1 en 1.
         output_low(DATA7);    //Pongo "0" en DATA7...
         output_low(CLOCK7);   //Pongo el CLOCK en bajo...
         output_high(CLOCK7);  //...y de nuevo en alto. Listo! 
   }
}
void main(){
   //Limpiamos el display
   borro_display();
   //Escribo un "2" en el primer display
   escribo(157); //  'Valor decimal de "2" (ver tabla)
   //Escribo un "3" en el segundo display
   escribo(188); //  'Valor decimal de "3" (ver tabla)
   //Escribo un "1" en el tercer display
   escribo(40); //  'Valor decimal de "1" (ver tabla)
   //Escribo un "5" en el cuarto display
   escribo(182); //  'Valor decimal de "5" (ver tabla)
}
```



Creo que es asi, ya no da errores y me compilo bien.
Tenías definidas varias veces algunas cosas, delante de los main va void asi --> void main()
no tenias definido DATA2 y CLOCK2 que hay que hacerlo al pricipio del programa antes del main para que sea global y puedas utilizarlo en todo el programa sin tener que definirlo mas veces... y nose que mas, compruébalo.
Espero poder haberte ayudado.


----------

