Autor Tema: El Relojito  (Leído 181190 veces)

apollo2019

  • PIC10F
  • *
  • Mensajes: 12
Re: El Relojito
« Respuesta #390 en: Julio 24, 2020, 10:19:28 am »
buen dia. como estas
lo estoy haciendo en pic basic pro. el error de los ":" lo encontre, faltaba una rutina
lo que si me desconciertan son los botones o la forma de programar los mismos. se claramete que el razonamiento seria pulsador1 que en este caso seria trisb.4 tiene que incrementar las horas y el sub siguiente pulsador los minutos.
lo que no se me ocurre es como haerlo
gracias por la respuesta




Código: [Seleccionar]
'Xtal 4MHz, Sin reset, sin WDT

'PIC16f628A-4MHz





'-----CONFIGURO PUERTOS----------

AllDigital



'Configuro el portA:

TRISA.0 = 0  'DATA Segundero

TRISA.1 = 0  'CLOCK Segundero

TRISA.2 = 0  'DATA HH:MM

TRISA.3 = 0  'CLOCK HH:MM

TRISA.4 = 0  'Salida

TRISA.5 = 0  'DS1820



'Configuro el portB:

TRISB.0 = 1  'Entrada pulsos del DS1307

TRISB.1 = 0  'Salida, LEDs : en HH:MM

TRISB.2 = 0  'Salida SCA del DS1307

TRISB.3 = 0  'Salida SCL del DS1307

TRISB.4 = 1  'Entrada Pusador

TRISB.5 = 1  'Entrada Pusador

TRISB.6 = 1  'Entrada Pusador

TRISB.7 = 1  'Entrada Pusador



'------VARIABLES------------------

Dim i As Byte  'Variable auxiliar

Dim aux1 As Byte  'Variable auxiliar



Dim hhmmaux As Byte  'Variables auxiliares p/armar HH:MM

Dim hh As Word

Dim mm As Word



Dim col As Byte



Dim auxword1 As Word  'Variable auxiliar uso gral (WORD)

Dim aux As Word  'Variable auxiliar uso gral (WORD)

Dim aux1820 As Word  'Variable auxiliar

Dim comando As Byte  'Comando a enviar al DS1820

Dim tempe As Word  'Temperatura leida

Dim tempe1 As Byte  'PArte entera de la temperatura a mostrar

Dim tempe2 As Byte  'Decimales de la tempertatura a mostrar



Dim hora As Byte

Dim minu As Byte

Dim segu As Byte

Dim mile As Word  'milesimas de segundo

Dim flagseg As Byte

Dim flagmin As Byte







flagseg = 1

flagmin = 1

hora = 23

minu = 58

segu = 0

mile = 0



'-----CONSTANTES -----------------

Symbol ds1820pin = PORTA.5  'Puerto en que se conecta el DS1820

Symbol ds1820rw = TRISA.5  '1=Leer DS1820 / 0=Escribir DS1820



Symbol clock = PORTA.1

Symbol data = PORTA.0

Symbol clock7 = PORTA.3

Symbol data7 = PORTA.2

Symbol dospuntos = PORTB.1









For i = 1 To 80

data = 0

clock = 0

clock = 1

flagseg = 0

Next i



'--Inicializo interrupciones----

OPTION_REG.T0CS = 0

INTCON.T0IE = 1

Enable



'----Bucle principal del programa ---

loop:

'Muestro HH:MM



If flagmin = 1 Then  'una vez por minuto

Gosub muestrohhmm



For i = 1 To 80

data = 0

clock = 0

clock = 1

Next i

flagmin = 0

Endif



If flagseg = 1 Then

'escribo un uno en los segundos

data = 1

clock = 0

clock = 1

flagseg = 0

Endif



Goto loop



End                                               



On Interrupt

Save System

'Sumo una milesima de segundo

mile = mile + 1



'Si llegue a mil, incremento variables del reloj

If mile = 1000 Then  '3993 Then

mile = 0

segu = segu + 1

flagseg = 1



If segu > 59 Then

segu = 0

minu = minu + 1

flagmin = 1



If minu > 59 Then

minu = 0

hora = hora + 1

If hora > 23 Then

hora = 0

Endif

Endif

Endif

Endif



INTCON.T0IF = 0

Resume                                           









escribo7:

For col = 1 To 16

If aux.0 = 0 Then

data7 = 0

clock7 = 0

clock7 = 1

Else

data7 = 1

clock7 = 0

clock7 = 1

Endif

aux = ShiftRight(aux, 1)

Next col

Return                                           



'Esta rutina muestra HH:MM

muestrohhmm:

hhmmaux = hora / 10

aux1 = LookUp(175, 40, 157, 188, 58, 182, 183, 46, 191, 190), hhmmaux

hh.LB = aux1



hhmmaux = hora - (hora / 10) * 10

aux1 = LookUp(175, 40, 157, 188, 58, 182, 183, 46, 191, 190), hhmmaux

hh.HB = aux1



hhmmaux = minu / 10

aux1 = LookUp(175, 40, 157, 188, 58, 182, 183, 46, 191, 190), hhmmaux

mm.LB = aux1



hhmmaux = minu - (minu / 10) * 10

aux1 = LookUp(175, 40, 157, 188, 58, 182, 183, 46, 191, 190), hhmmaux

mm.HB = aux1



aux = hh

Gosub escribo7

aux = mm

Gosub escribo7



Return

Editado para Insertar el código.
HJ
« Última modificación: Julio 27, 2020, 01:45:44 pm por HJ »

apollo2019

  • PIC10F
  • *
  • Mensajes: 12
Re: El Relojito
« Respuesta #391 en: Julio 24, 2020, 11:16:16 am »
si por ahora basic pero el desafio va a ser ccs
lo que no entiendo es como agregar las interrupciones para poner en hora el reloj

apollo2019

  • PIC10F
  • *
  • Mensajes: 12
Re: El Relojito
« Respuesta #392 en: Julio 29, 2020, 10:17:05 am »
buen dia como estan
resolvi el tema de los botones y la grafica del dispplay, solo me falta iniciar el ds1307 si me dan alguna idea se los voy a agradecer.
gracias

apollo2019

  • PIC10F
  • *
  • Mensajes: 12
Re: El Relojito
« Respuesta #393 en: Julio 29, 2020, 10:24:08 am »
Lamento infinitamente no poder ayudarte porque no tengo ni idea de programar ni en CCS ni en ningun otro lenguaje, si que es cierto que desde hace un año que empece con el relojito he ido aprendiendo algo, sobre todo en basic, pero muy lejos de poder hacerlo por mis propios medios, sigo insistiendo en mi empeño, pero aun no me funciona al 100%, si que he hecho algunas modificaciones sobre el codigo de prueba, pero de momento es lo que tengo, te pongo el archivo .hex con los arreglos que he hecho para que puedas comparar las diferencias, pero insisto esta en Basic.
Saludos

buen dia como estas. se que hace tiempo escribiste el post pero todavia tenes el codigo en basic del reloj. por que yo lo estoy haciendo y me falta iniciar el ds1307 y creo que lo tendira listo para armar.
si tenes el codigo te lo voy a agradecer.

apollo2019

  • PIC10F
  • *
  • Mensajes: 12
Re: El Relojito
« Respuesta #394 en: Julio 30, 2020, 10:52:05 am »
Hola!
Lamento no poder ayudarte, no tengo Proteus :P

Saludos!

buen dia, no no esta el protocolo de comunicacion i2c. usted lo pudo resolver?

Leon Pic

  • Moderador
  • dsPIC
  • ******
  • Mensajes: 5727
  • Cumulonimbus
    • Impresiones en 3D
Re: El Relojito
« Respuesta #395 en: Agosto 02, 2020, 12:00:09 pm »
Yo de basic no se nada; y no tengo un manual para ello.

buen dia como estan
resolvi el tema de los botones y la grafica del dispplay, solo me falta iniciar el ds1307 si me dan alguna idea se los voy a agradecer.
gracias

En el datasheet del ds1307 está como es la comunicación. Mucho lo tenes resuelto ya que vas a trabajar con el módulo I2c, así que los tiempos de transmisión de bit, no te tenes que preocupar. Lo que si, debes armarte los datos a enviar.
Para leer, también tienes un orden para recibir los datos.

Te sugiero el siguiente link http://www.todopic.com.ar/foros/index.php?topic=13282.0 Es de un foro amigo, así que no hay problema en ponerlo aquí.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

apollo2019

  • PIC10F
  • *
  • Mensajes: 12
Re: El Relojito
« Respuesta #396 en: Agosto 02, 2020, 08:00:40 pm »
hola buenas noches.
voy a leer el articulo completo y voy a ir construyendo las rutinas.
lo dificil es hacerlo en basic en ccs hay mucha mas informacion sobre el bus i2c. si hay una forma distinta de armar la comunicacion entre ambos me gustaria saber asi aprendo. voy a armar el codigo solo del ds1307 con lo que tengo y por privado puedo ir subiendolo y me vas corrigiendo. te parece?

Leon Pic

  • Moderador
  • dsPIC
  • ******
  • Mensajes: 5727
  • Cumulonimbus
    • Impresiones en 3D
Re: El Relojito
« Respuesta #397 en: Agosto 03, 2020, 02:01:17 pm »
Si bien está en CCS, ahí explica como son los pasos. Entendiendo los pasos, puedes hacer lo mismo pero en basic.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

apollo2019

  • PIC10F
  • *
  • Mensajes: 12
Re: El Relojito
« Respuesta #398 en: Ayer a las 07:19:57 pm »
no es igual basic que ccs
basic amplia mas la forma de construir el codigo, ccs lo simplifica
la mecánica del code es la misma. la forma de confeccionarlo es totalmente diferente en un lenguaje y en el otro.
otra cosa que note y me llevo mucho a confusion es la forma en como se declararon los puertos en el ejemplo del reloj.
en la primer revista aparece:
//y asignamos cada pin como E/S según corresponda
PORTA_TRIS = 0b00000000;  //1 = entrada 0 = salida
PORTB_TRIS = 0b11110001; //  idem arriba

de ese modo el compilador ccs vive tirando error de sintaxis

yo los seteo de esta forma y quedo bien
SET_TRIS_A (0b00000000);
SET_TRIS_B (0b11110001);

yo lo que no entiendo, si se supone que es un ejemplo para que los que estamos aprendiendo y entendamos como es.
por que lo ponen de esa forma, al fin y al cabo uno se termina confundiendo.

yo voy a confeccionar todo lo que tengo en ccs y después veré como sigue, me gustaría la ayuda de ustedes que son los que saben mucho del tema, particularmente a mi me confundió mucho la forma de declarar los puertos como figura en las primeras 3 revistas.
mi finalidad es aprender no enojarme.

 

anything