Programacion en ccs (el relojito)

Holla , 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:


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 paréntesis , pero en verdad no se , y la verdad soy nuevo en esto de la programacion , le agradecería mucho si alguien me ayudara a hacerlo o decir como se hace.

Les dejo un archivo del programa en CCS.
 

Adjuntos

  • CCS.rar
    1.2 KB · Visitas: 68
Código:
//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.
 
Última edición:
Hola a todos. Una pregunta, ¿alguien tiene la información para realizar el proyecto "El Relojito" publicado por la revista uControl hace ya algunos años? Era un reloj circular que en la circunferencia tenía los segundos representados por 60 leds. El cerebro era un PIC 16F628A. Tenía también un RTC DS1307 y un sensor de temperatura DS1820. El problema actualmente es que los enlaces de la revista ya no funcionan. De antemano, mil gracias.
Modificar mensaje
 
Hola a todos. Una pregunta, ¿alguien tiene la información para realizar el proyecto "El Relojito" publicado por la revista uControl hace ya algunos años? Era un reloj circular que en la circunferencia tenía los segundos representados por 60 leds. El cerebro era un PIC 16F628A. Tenía también un RTC DS1307 y un sensor de temperatura DS1820. El problema actualmente es que los enlaces de la revista ya no funcionan. De antemano, mil gracias.
Modificar mensaje

Por aquí hay algo
Revista µControl: Microcontroladores y más
 
Hola, malesi, agradezco tu respuesta aunque, como comenté antes, los enlaces de descarga de las revistas ya no funcionan y no es posible obtener el diagrama para imprimir el PCB. Saludos.
 
Hola, malesi, agradezco tu respuesta aunque, como comenté antes, los enlaces de descarga de las revistas ya no funcionan y no es posible obtener el diagrama para imprimir el PCB. Saludos.

Disculpa, es esto lo que buscabas ???

1691008548788.png



Si es así, tomate la molestia de leer nuevamente el post #2 y darle click.


Recien baje tres revistas y eso está en la Nº1 !!!




Salu2.-
 
Yo pude abrir.
Dime cual quieres, y veo si los busco en mi base de datos (tengo todas las revistas)
Hola DJ T3 y J2C, no me refiero a descargar las revistas, tengo los 10 números publicados, sino que los enlaces que aparecen en la revista para descargar artículos de la misma ya no están activos. El enlace del SITIO WEB DE uControl YA NO FUNCIONA, sólo aparece una página donde dice, desde hace mucho, que está en reparación. Por lo tanto no se pueden descargar cosas como, por ejemplo el circuito para imprimir el PCB del proyecto del "Relojito". Gracias.
 

Adjuntos

  • relojito.png
    relojito.png
    123.9 KB · Visitas: 4
Ehh!, no pensaron en rediseñar/replantear todo el proyecto de nuevo, digo, porque con un solo microcontrolador de unos 28 pines, empleando la técnica de Charlieplexing, se ahorran todos esos circuitos registros de desplazamientos y muchísimas resistencias... basicamente habría que re-hacer una nueva PCB, con menos componentes...
 
ehh!, no pensaron en rediseñar/replantear todo el proyecto de nuevo, digo, porque con un solo microcontrolador de unos 28 pines, empleando la técnica de Charlieplexing, se ahorran todos esos circuitos registros de desplazamientos y muchísimas resistencias... basicamente habria que re-hacer una nueva PCB, con menos componentes...
AleSergi, sería interesante si pudieras aportar el proyecto que comentas. Saludos.
 
Última edición por un moderador:
¿Hay videos de como funciona el reloj?
Si no quitar todos los registros si que se podrían reducir mucho multiplexando, 96 leds no parecen demasiados
 
¿Hay videos de como funciona el reloj?
Si no quitar todos los registros si que se podrían reducir mucho multiplexando, 96 leds no parecen demasiados
relojito UControl, Youtube parece que si hay... y tiene varios patrones.
ahora que lo veo funcionar puede dar trabajo programar, pergeñar solución a solo fuerza de conmutaciones con un micro digamos de 28 pines.

Había pensado en algo más simplificado, 9 líneas conmutando para los cuatro display siete segmentos, que pueden llegar a ser nueve (display).. y otras 9 líneas del micro ocupándose de los leds del circulo externo, pero encendiendo de a uno, no sumando como lo hace en el video...
Algo subiré, con un atmega328p, como supe hacer en Cartel Don Troglodita

sehh, sehh, no me peguen soy Giordano!,.. será un AVR (seguro de Arduinería), y no un PIC, por ahora!
 
Última edición:
Atrás
Arriba