Hola,
soy yo de nuevo (con mas dudas).
![loco loco]()
Quiero agregarle tiempo real a un proyecto y adquirí el DS1307 para ello.
En alguna ocasión aquí bajé un código para este dispositivo (en ensamblador) y hasta ahora me dí a la tarea de usarlo.
Le modifiqué unas cosas para acomdarlo a mi proyecto pero no pasa nada.
Intenté luego utilizar el I2CREAD y WRITE del PBP para lo mismo y no funciono.
Lo que se intenta hacer es configurar el dispositivo y luego leer de él para posteriormente desplegar el resultado en un LCD.
El LCD trabaja bien ya que con el mismo µicro y con otro programa, el LCD despliega lo que debe (el LCD no es).
Al intentar con ambos (para software y hardware) el LCD despliega puros cuadros negros (muy raro).
Se colocaron resistencias de jalón de 4.7K para las líneas SDA y SCL.
El Miércoles 3 de Noviembre regresaré a la escuela (2 de Noviembre es día de Muertos y es festivo) y me pondré a analizar el BUS, su información (sé cómo trabaja el protocolo de PHILLIPS), mientras tanto dejo en sus manos el código para que lo vean y me digan si está mal o bien.
En el código incluyo la conversión que use para transformar la información del DS1307 a una más dijerible (espero con esto contribuir en algo ya que siempre ando pidiendo favores).
![Sonrisa Gigante Sonrisa Gigante]()
Se adjuntan los dos archivos, el de software y hardware.
Gracias de antemano.
Bueno, no los adjunto porque me dice que hay errores, se los voy a meter aquí:
por SOFTWARECONTA VAR BYTE $32 SYSTEM
RTR_SEG var byte $33 SYSTEM
RTR_MINT VAR BYTE $34 SYSTEM
RTR_HRS VAR BYTE $35 SYSTEM
RTR_DIA VAR BYTE $36 SYSTEM
RTR_FECHA VAR BYTE $37 SYSTEM
RTR_MES VAR BYTE $38 SYSTEM
RTR_MESX12 VAR BYTE $39 SYSTEM
DECE VAR BYTE $40 SYSTEM
UNID VAR BYTE $41 SYSTEM
CONV1 VAR BYTE $42 SYSTEM
CONV2 VAR BYTE $43 SYSTEM
I2CWrite Portc.4,Portc.3,$D0,$00,[RTR_SEG,RTR_MINT,RTR_HRS,RTR_DIA,RTR_FECHA,RTR_MES,RTR_MESX12,control]
actual:
asm
x
btfss portb,7
goto x
endasm
I2CRead Portc.4,Portc.3,$D0,$00,[RTR_SEG,RTR_MINT,RTR_HRS,RTR_DIA,RTR_FECHA,RTR_MES,RTR_MESX12,control]
"iniciando conversión para segundos
CONV1 = RTR_SEG " Pasando RTR_SEG binario a CONV1
Gosub conversion " Llamando a la conversión de BCD a Binario
RTR_SEG = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para minutos
CONV1 = RTR_MINT " Pasando RTR_MINT binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_MINT = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para horas
asm
clrf CONTA
movfw RTR_HRS
andlw 0x30,W
movwf CONV1
btfsc CONV1,5 ; 0 = AM
infc CONTA ; 1 = PM
movlw 0x1F
andwf RTR_HRS,F
endasm
CONV1 = RTR_hrs " Pasando RTR_HRS binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_HRS = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para días (no lo ocupa ya que días es de 7 bits)
"iniciando conversión para fecha
CONV1 = RTR_fecha " Pasando RTR_FECHA binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_FECHA = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para mes
CONV1 = RTR_mes " Pasando RTR_MES binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_MES = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para año
CONV1 = RTR_mesx12 " Pasando RTR_MESX12 binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_MESX12 = CONV2 " Colocando el resultado de la conversión (BIN)
CONVERSION:
UNID = CONV1&$0F
asm
SWAPF CONV1,F
endasm
DECE = CONV1
DECE = (DECE&$0F)*10
CONV2 = DECE+UNID
return
lcdout $FE,1, "TIEMPO = ",dec RTR_FECHA,"-",DEC RTR_MES,"-",DEC RTR_MESX12
pause 1000
lcdout $FE,1, DEC RTR_HRS,":",DEC RTR_MINT,":",DEC RTR_SEG," "]
IF CONTA==1 THEN
lcdout $FE,$80+17 "PM"
ELSE
lcdout $FE,$80+17 "AM"
ENDIF
pause 1000
goto actual
Donde RTR_XXX es el valor de configuraciónPor Hardware 1"************************************************************************
"* Nombre : DS1307_PIC_I²C.BAS *
"* Autor : Mario Alberto Camarillo Ramos *
"* Fecha : 14/Sep/2004 *
"* Versión : 1.6 *
"* Modelo : PIC_16F872 *
"* Notas : implementación de LCDOUT en lugar de DEBUG *
"************************************************************************
DEFINE NO_CLRWDT 1
DEFINE OSC 4 " Con un oscilador de 4 MHz
COMM var PORTC.0
ESCLAVO VAR BYTE $30 SYSTEM
TXBUF VAR BYTE $31 SYSTEM
CONTA VAR BYTE $32 SYSTEM
RTR_SEG var byte $33 SYSTEM
RTR_MINT VAR BYTE $34 SYSTEM
RTR_HRS VAR BYTE $35 SYSTEM
RTR_DIA VAR BYTE $36 SYSTEM
RTR_FECHA VAR BYTE $37 SYSTEM
RTR_MES VAR BYTE $38 SYSTEM
RTR_MESX12 VAR BYTE $39 SYSTEM
DECE VAR BYTE $40 SYSTEM
UNID VAR BYTE $41 SYSTEM
CONV1 VAR BYTE $42 SYSTEM
CONV2 VAR BYTE $43 SYSTEM
asm
;Esta es la configuración
I2C_SETUP
BANKSEL SSPADD ; Selecciona el Banco 1 y el registro
movlw 0x09 ; Carga 0x09 para baud rate 100KHZ@4MHZ
movwf SSPADD ; Inicializa velocidad de transferencia
bcf SSPSTAT,6 ; Selecciona niveles para bus I2C
bsf SSPSTAT,7 ; Desabilita el slew rate
movlw 0x14 ; Programa las lineas del I2C
movwf TRISC ; como entradas.
bcf STATUS,RP0 ; Selecciona el BANCO 0
movlw 0x24 ; Programa el modulo SSP
movwf SSPCON ; Modo maestro y habilitando el I2C
; PONE EN HORA EL DS1307 DESDE UNA TABLA
clrf CONTA ; Borrando el contador
movlw 0xD0 ; Dirección del esclavo
movwf ESCLAVO ; Preparando esclavo
call WRITE_I2C_BYTE_INI
LOOP_WRITE
movfw CONTA ; Primera dirección del DS1307 (SEG)
call TABLA ; seg,min,hrs,dia,mes,año
movwf TXBUF ; Para ser transmitidos
call WRITE_I2C_BYTE ; y escritos
incf CONTA ; incrementando la dirección
movfw CONTA ; Aquí se pregunta si ya se mandó toda
xorlw .8 ; la información.
btfss STATUS,Z ; Z=1 si
goto LOOP_WRITE ; Z=0 no
call WRITE_I2C_BSTOP
return
; TABLA DE DATOS PARA PUESTA EN HORA Y FUNCIONAMIENTO DEL DS1307
TABLA
addwf PCL,F
DT 0x00,0x00,0x49,0x01,0x13,0x09,0x04,0x90
; SEGUNDOS,MINUTOS,HORA,DIA DE LA SEMANA, DIA DEL MES, MES, AÑO, CONFIGURACION
; LECTURA DEL DS1307
READ_RTC_I2C ; Lectura del DS1307 y se carga en RAM
movlw 0x09 ; Carga el numero de Bytes a leer
movwf CONTA ;
movlw 0xD0 ; Direccion de esclavo del DS 1307
movwf ESCLAVO ;
call READ_I2C_INI; Inicializa el modulo I2C para lectura
movlw 0x33 ; Direccion inicial de RAM para transferir
movwf FSR ; a la RAM del micro en modo indirecto
RBYTE_RTC
call READ_I2C_PAGE ; Inicia lectura secuencial del DS1307
movfw SSPBUF ;
movwf INDF ; Y lo transfiere a un registro de la RAM del micro
incf FSR ; Incrementa 1 el puntero de direccion indirecta
decfsz CONTA ; Verifica si lleyo todos los BYTES
goto RBYTE_RTC ; Si no lee otro BYTE
call READ_I2C_PAGE_BSTOP
return
; RUTINAS USANDO MSSP
; Escritura al DS1307
WRITE_I2C_BYTE_INI
call I2C_BSTART ; Genera el bit de START
movfw ESCLAVO ; Direccion del esclavo en modo escritura
movwf SSPBUF ; y al cargarlo en SSPBUF lo transmite
call WAIT_I2C_INT ; Espera por interrupcion del modulo
call I2C_ACK ; Verifica si hubo ACK del esclavo
movlw 0x00 ; Direccion de memoria a grabar
movwf SSPBUF ; Al cargar SSPBUF se inicia la transmision
call WAIT_I2C_INT ; Espera por interrupcion del modulo
call I2C_ACK ; Verifica si hubo ACK del esclavo
return ; Y retorna
WRITE_I2C_BYTE
movfw TXBUF ; Carga en W el dato a Grabar
movwf SSPBUF ; y al cargarlo en SSPBUF lo transmite
call WAIT_I2C_INT ; Espera por interrupcion del modulo
call I2C_ACK ; Verifica si hubo ACK del esclavo
return ; Y retorna
WRITE_I2C_BSTOP
call I2C_BSTOP ; Genera el bit de STOP
return ; Y retorna
; Lectura del DS1307
READ_I2C_INI
call I2C_BSTART ; Genera el bit de START
bsf ESCLAVO,0 ; Selecciona el modo lectura del esclavo
movfw ESCLAVO ; Direccion del esclavo en modo lectura
movwf SSPBUF ; y al cargarlo en SSPBUF lo transmite
call WAIT_I2C_INT ; Espera por interrupcion del modulo
call I2C_ACK ; Verifica si hubo ACK del esclavo
movlw 0x00 ; Direccion de memoria a leer
movwf SSPBUF ; Al cargar SSPBUF se inicia la transmision
call WAIT_I2C_INT ; Espera por interrupcion del modulo
call I2C_ACK ; Verifica si hubo ACK del esclavo
call I2C_RX ; Inicia recepcion I2C
return
READ_I2C_PAGE
bsf STATUS,RP0 ; selecciona el banco SSPCON2
bcf SSPCON2,ACKDT ; responder al esclavo con un ack
bsf SSPCON2,ACKEN ; Incia la secuencia de ACK maestro a esclavo
btfsc SSPCON2,ACKEN ; ¿ack enviado?
goto $-1 ; no, intenta de nuevo
bsf SSPCON2,RCEN ; Lo mandó, prepararse para recepción de ACK
bcf STATUS,RP0 ; Moviéndose al banco
call WAIT_I2C_INT ; Espera por interrupción del módulo
return ; Y retorna
READ_I2C_PAGE_BSTOP
bsf STATUS,RP0 ; Selecciona el banco
bsf SSPCON2,ACKDT ; Final de la lectura, enviando un /ACK
bsf SSPCON2,ACKEN ; Incia la secuencia de ACK maestro a esclavo
bcf STATUS,RP0 ; Moviéndonos de banco
call WAIT_I2C_INT ; Espera por interrupción del módulo
call I2C_BSTOP ; Genera el bit de paro (STOP)
return ; Y retorna
;==================RUTINAS AUXILIARES PARA I2C===============================
I2C_BSTART
bsf STATUS,RP0 ; Seleccionamos banco 1
bsf SSPCON2,SEN ; Iniciando bit de inicio (START)
btfsc SSPCON2,SEN ; Asegurándonos que se mandó
goto $-1 ;
bcf STATUS,RP0 ; Regresando a banco 0
return
I2C_BSTOP
bsf STATUS,RP0 ; Seleccionando banco 1
bsf SSPCON2,PEN ; Generando el bit de paro (STOP)
btfsc SSPCON2,PEN ; Asegurándose que se mandó
goto $-1 ;
bcf STATUS,RP0 ; Regresando al banco 0
return
I2C_RX
bsf STATUS,RP0 ; Seleccionando SSPCON2
bsf SSPCON2,RCEN ; para habilitar al maestro como
bcf STATUS,RP0 ; receptor y regresando al banco 0
return
I2C_ACK
bsf STATUS,RP0 ; Seleccionando SSPCON2
btfsc SSPCON2,ACKSTAT ; Esclavo = ACK
goto $-1 ; Esperando
bcf STATUS,RP0 ; Regresando al banco 0
return
WAIT_I2C_INT ; Espera por señal de interrupción del
bcf PIR1,SSPIF ; modulo, recordemos que el módulo genera
btfss PIR1,SSPIF ; por cada operación una interrupción, en
goto $-1 ; este caso se revisa la bandera a tal fin
return
;=========================FIN RUTINAS AUXILIARES I2C====================
end
endasm
ACTUAL:
"iniciando conversión para segundos
CONV1 = RTR_SEG " Pasando RTR_SEG binario a CONV1
Gosub conversion " Llamando a la conversión de BCD a Binario
RTR_SEG = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para minutos
CONV1 = RTR_MINT " Pasando RTR_MINT binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_MINT = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para horas
asm
clrf CONTA
movfw RTR_HRS
andlw 0x30,W
movwf CONV1
btfsc CONV1,5 ; 0 = AM
infc CONTA ; 1 = PM
movlw 0x1F
andwf RTR_HRS,F
endasm
CONV1 = RTR_hrs " Pasando RTR_HRS binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_HRS = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para días (no lo ocupa ya que días es de 7 bits)
"iniciando conversión para fecha
CONV1 = RTR_fecha " Pasando RTR_FECHA binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_FECHA = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para mes
CONV1 = RTR_mes " Pasando RTR_MES binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_MES = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para año
CONV1 = RTR_mesx12 " Pasando RTR_MESX12 binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_MESX12 = CONV2 " Colocando el resultado de la conversión (BIN)
CONVERSION:
UNID = CONV1&$0F
asm
SWAPF CONV1,F
endasm
DECE = CONV1
DECE = (DECE&$0F)*10
CONV2 = DECE+UNID
return
lcdout $FE,1, "TIEMPO = ",dec RTR_FECHA,"-",DEC RTR_MES,"-",DEC RTR_MESX12
pause 1000
lcdout $FE,1, DEC RTR_HRS,":",DEC RTR_MINT,":",DEC RTR_SEG," "]
IF CONTA==1 THEN
lcdout $FE,$80+17 "PM"
ELSE
lcdout $FE,$80+17 "AM"
ENDIF
pause 1000
GOTO ACTUAL
Por Hardware 2"************************************************************************
"* Nombre : DS1307_PIC_I²C.BAS *
"* Autor : Mario Alberto Camarillo Ramos *
"* Fecha : 4/OCT/2004 *
"* Versión : 1.7 *
"* Modelo : PIC_16F872 *
"* Notas : Esta es solo para cuando ya está configurado el DS1307 *
"************************************************************************
DEFINE NO_CLRWDT 1
DEFINE OSC 4 " Con un oscilador de 4 MHz
COMM var PORTC.0
ESCLAVO VAR BYTE $30 SYSTEM
TXBUF VAR BYTE $31 SYSTEM
CONTA VAR BYTE $32 SYSTEM
RTR_SEG var byte $33 SYSTEM
RTR_MINT VAR BYTE $34 SYSTEM
RTR_HRS VAR BYTE $35 SYSTEM
RTR_DIA VAR BYTE $36 SYSTEM
RTR_FECHA VAR BYTE $37 SYSTEM
RTR_MES VAR BYTE $38 SYSTEM
RTR_MESX12 VAR BYTE $39 SYSTEM
DECE VAR BYTE $40 SYSTEM
UNID VAR BYTE $41 SYSTEM
CONV1 VAR BYTE $42 SYSTEM
CONV2 VAR BYTE $43 SYSTEM
asm
;Esta es la configuración
I2C_SETUP
BANKSEL SSPADD ; Selecciona el Banco 1 y el registro
movlw 0x09 ; Carga 0x09 para baud rate 100KHZ@4MHZ
movwf SSPADD ; Inicializa velocidad de transferencia
bcf SSPSTAT,6 ; Selecciona niveles para bus I2C
bsf SSPSTAT,7 ; Desabilita el slew rate
movlw 0x14 ; Programa las lineas del I2C
movwf TRISC ; como entradas.
bcf STATUS,RP0 ; Selecciona el BANCO 0
movlw 0x24 ; Programa el modulo SSP
movwf SSPCON ; Modo maestro y habilitando el I2C
; LECTURA DEL DS1307
READ_RTC_I2C ; Lectura del DS1307 y se carga en RAM
movlw 0x09 ; Carga el numero de Bytes a leer
movwf CONTA ;
movlw 0xD0 ; Direccion de esclavo del DS 1307
movwf ESCLAVO ;
call READ_I2C_INI; Inicializa el modulo I2C para lectura
movlw 0x33 ; Direccion inicial de RAM para transferir
movwf FSR ; a la RAM del micro en modo indirecto
RBYTE_RTC
call READ_I2C_PAGE ; Inicia lectura secuencial del DS1307
movfw SSPBUF ;
movwf INDF ; Y lo transfiere a un registro de la RAM del micro
incf FSR ; Incrementa 1 el puntero de direccion indirecta
decfsz CONTA ; Verifica si lleyo todos los BYTES
goto RBYTE_RTC ; Si no lee otro BYTE
call READ_I2C_PAGE_BSTOP
return
; RUTINAS USANDO MSSP
; Lectura del DS1307
READ_I2C_INI
call I2C_BSTART ; Genera el bit de START
bsf ESCLAVO,0 ; Selecciona el modo lectura del esclavo
movfw ESCLAVO ; Direccion del esclavo en modo lectura
movwf SSPBUF ; y al cargarlo en SSPBUF lo transmite
call WAIT_I2C_INT ; Espera por interrupcion del modulo
call I2C_ACK ; Verifica si hubo ACK del esclavo
movlw 0x00 ; Direccion de memoria a leer
movwf SSPBUF ; Al cargar SSPBUF se inicia la transmision
call WAIT_I2C_INT ; Espera por interrupcion del modulo
call I2C_ACK ; Verifica si hubo ACK del esclavo
call I2C_RX ; Inicia recepcion I2C
return
READ_I2C_PAGE
bsf STATUS,RP0 ; selecciona el banco SSPCON2
bcf SSPCON2,ACKDT ; responder al esclavo con un ack
bsf SSPCON2,ACKEN ; Incia la secuencia de ACK maestro a esclavo
btfsc SSPCON2,ACKEN ; ¿ack enviado?
goto $-1 ; no, intenta de nuevo
bsf SSPCON2,RCEN ; Lo mandó, prepararse para recepción de ACK
bcf STATUS,RP0 ; Moviéndose al banco
call WAIT_I2C_INT ; Espera por interrupción del módulo
return ; Y retorna
READ_I2C_PAGE_BSTOP
bsf STATUS,RP0 ; Selecciona el banco
bsf SSPCON2,ACKDT ; Final de la lectura, enviando un /ACK
bsf SSPCON2,ACKEN ; Incia la secuencia de ACK maestro a esclavo
bcf STATUS,RP0 ; Moviéndonos de banco
call WAIT_I2C_INT ; Espera por interrupción del módulo
call I2C_BSTOP ; Genera el bit de paro (STOP)
return ; Y retorna
;==================RUTINAS AUXILIARES PARA I2C===============================
I2C_BSTART
bsf STATUS,RP0 ; Seleccionamos banco 1
bsf SSPCON2,SEN ; Iniciando bit de inicio (START)
btfsc SSPCON2,SEN ; Asegurándonos que se mandó
goto $-1 ;
bcf STATUS,RP0 ; Regresando a banco 0
return
I2C_BSTOP
bsf STATUS,RP0 ; Seleccionando banco 1
bsf SSPCON2,PEN ; Generando el bit de paro (STOP)
btfsc SSPCON2,PEN ; Asegurándose que se mandó
goto $-1 ;
bcf STATUS,RP0 ; Regresando al banco 0
return
I2C_RX
bsf STATUS,RP0 ; Seleccionando SSPCON2
bsf SSPCON2,RCEN ; para habilitar al maestro como
bcf STATUS,RP0 ; receptor y regresando al banco 0
return
I2C_ACK
bsf STATUS,RP0 ; Seleccionando SSPCON2
btfsc SSPCON2,ACKSTAT ; Esclavo = ACK
goto $-1 ; Esperando
bcf STATUS,RP0 ; Regresando al banco 0
return
WAIT_I2C_INT ; Espera por señal de interrupción del
bcf PIR1,SSPIF ; modulo, recordemos que el módulo genera
btfss PIR1,SSPIF ; por cada operación una interrupción, en
goto $-1 ; este caso se revisa la bandera a tal fin
return
;=========================FIN RUTINAS AUXILIARES I2C====================
end
endasm
ACTUAL:
"iniciando conversión para segundos
CONV1 = RTR_SEG " Pasando RTR_SEG binario a CONV1
Gosub conversion " Llamando a la conversión de BCD a Binario
RTR_SEG = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para minutos
CONV1 = RTR_MINT " Pasando RTR_MINT binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_MINT = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para horas
asm
clrf CONTA
movfw RTR_HRS
andlw 0x30,W
movwf CONV1
btfsc CONV1,5 ; 0 = AM
infc CONTA ; 1 = PM
movlw 0x1F
andwf RTR_HRS,F
endasm
CONV1 = RTR_hrs " Pasando RTR_HRS binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_HRS = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para días (no lo ocupa ya que días es de 7 bits)
"iniciando conversión para fecha
CONV1 = RTR_fecha " Pasando RTR_FECHA binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_FECHA = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para mes
CONV1 = RTR_mes " Pasando RTR_MES binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_MES = CONV2 " Colocando el resultado de la conversión (BIN)
"iniciando conversión para año
CONV1 = RTR_mesx12 " Pasando RTR_MESX12 binario a CONV1
gosub conversion " Llamando a la conversión de BCD a Binario
RTR_MESX12 = CONV2 " Colocando el resultado de la conversión (BIN)
CONVERSION:
UNID = CONV1&$0F
asm
SWAPF CONV1,F
endasm
DECE = CONV1
DECE = (DECE&$0F)*10
CONV2 = DECE+UNID
return
lcdout $FE,1, "TIEMPO = ",dec RTR_FECHA,"-",DEC RTR_MES,"-",DEC RTR_MESX12
pause 1000
lcdout $FE,1, DEC RTR_HRS,":",DEC RTR_MINT,":",DEC RTR_SEG," "]
IF CONTA==1 THEN
lcdout $FE,$80+17 "PM"
ELSE
lcdout $FE,$80+17 "AM"
ENDIF
pause 1000
GOTO ACTUAL
Se compró el cristal para el DS1307 acoplado a 12.5 pf ya que está es la carga capacitiva requerida.
El miércoles me daré a la tarea de buscar un por qué más tangible (con osciloscopio y viendo la información).
![Ardiendo Ardiendo]()
Se les agradece el tiempo para leer esto y espero que la conversión sirva de algo por lo menos.
![Avergonzado Avergonzado]()