hola amigos del foro, estoy intentando hacer una pequeña prueba con PIC, trata del el proyecto llamado el RELOJITO que encontrareis en este enlace,
http://www.ucontrol.com.ar/wiki/index.php?title=El_relojitomi intencion no es hacer todo el reloj sino una parte que es la de los 60 LED del segundero con el PIC16F628A y el registro de desplazameinto 74HC164N.
SI me podeis ayudar con el programa en CCS, lo que yo he hecho pensando que funcionaria es el sigueinte programa,
//Device/Fuses/Etc.---------------------------------
#INCLUDE <16F628A.H> //Usamos un 16F628A
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Con oscilador a cristal...
#use delay(clock=4000000) //..de 4MHz.
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //No protegemos el codigo.
#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
//Definimos el valor de CLOCK y DATA
#DEFINE DATA2 PIN_A2 //Nos referimos a PORTA.2 como "data7"
#DEFINE CLOCK2 PIN_A3 //Nos referimos a PORTA.3 como "clock7"
//--------------------------------------------------
//---Envia un digito al registro de desplazamiento:
//--------------------------------------------------
//Declaramos la Variable:
int1 bit_aux; //Declaro la variable auxiliar
main(){
bit_clear(TRISA,2);
bit_clear(TRISA,3);
//--------------------------------------------------
//---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
}
}
}
PERO NADA DE NADA LO HE SIMULADO EN PROTEUS Y NO FUNCIONA, ademas nose si utiliza el DS1307 para lo que yo quiero hacer en definitiva si me podeis ayudar os estaria agradecido.
Un saludo