• Viernes 19 de Abril de 2024, 03:17

Autor Tema:  ds1307 y memoria serie  (Leído 2100 veces)

eltyto

  • Miembro activo
  • **
  • Mensajes: 35
    • Ver Perfil
ds1307 y memoria serie
« en: Viernes 16 de Septiembre de 2011, 14:28 »
0
Hola amigos del foro, tengo un PROBLEM, hace tiempo q intento hacer funcionar un ds1307 en assembler y ahora veo q con PPBasic es mas comodo. pero cuando quiero guardar en la memo un valor por ejemplo DIA, no me guarda el contenido del reg sino CUALQUIER cosa. Hay alguna instruccion q desconozco? pongo ejemplo de medicion de temp. q es por donde empece, intentando guardar valores de los REG  de TEMP.
DEFINE I2C_SCLOUT 1     ;para que no necesite resistencia pull-up en SCL
contro CON %10100000    ;contro contiene valor constante %10100000
PinSCL VAR Portc.0      ;pin señal de reloj I2C
PinSDA VAR Portc.1      ;pin de datos I2C
dato VAR word           ;variable para almacenar dato leído
x var byte
chip var portc.3
bocina var portc.4
led var portc.2

trisb=%00000001
DEFINE LCD_DREG PORTB     ; define pines del LCD B4 a B7
DEFINE LCD_DBIT 4         ; empezando desde el Puerto B4 hasta el B7
DEFINE LCD_RSREG PORTB    ;define el puerto B para conectar el bit RS
DEFINE LCD_RSBIT 3        ;este es el puerto B3
DEFINE LCD_EREG PORTB     ;define el puerto B para conectar el bit Enable
DEFINE LCD_EBIT 2         ;este es el puerto B2
DEFINE LCD_LINES 4        ; define un LCD de 4 líneas

DEFINE ADC_BITS 10 ;Fija número de bits del resultado (5,8,10)
DEFINE ADC_CLOCK 3 ;Fije EL CLOCK (rc = 3)
DEFINE ADC_SAMPLEUS 50 ;Fije el tiempo de muestreo en uS.;ADC_SAMPLEUS es el número de microsegundos que el programa espera;entre fijar el canal y comenzar la conversión análoga/digital.
TRISA =%00000011            ;el puerto A.0,1 Y 2 es de entrada
ADCON1 = %00000000    ;el puerto A.0 es conversor los demás Digitales
temp1 VAR word           ;crear variable datos para guardar el resultado
temp2 var word
contador var byte
temporizado var word
memobaja    var byte
memoalta    var byte
memobaja=0
memoalta=100
contador=0
temporizado=1


OPTION_REG = %10000111
pause 500            ;esperar 0,5 seg.
 high bocina
pause 50
 low  bocina
pause 50
 high bocina
pause 50
 low  bocina
pause 50
 high  bocina
pause 50
 low  bocina
pause 50

OPTION_REG = %1000111 ;setea TMR0 configurando y habilita PORTB pullups
INTCON = %10100000 ;hablilita TMR0 interrupción interna
ON INTERRUPT GOTO interrup

inicio:
high   led
gosub tempo 
     
ADCIN 0, temp1                ;leer el canal 0 y guardarlo en datos
temp1=temp1/128

ADCIN 1, temp2
temp2=temp2/128

if portb.0=0 then leermemo

sigo:
LCDOUT $fe,1,    "T1 T2 "
LCDOUT $fe,$c0, DEC temp1       ;desplegar el valor de datos en decimal
LCDOUT $fe,$c0+3, DEC temp2
for x= 1 to 10
PAUSE 30
next

low led
gosub tempo
gosub tempo

goto  inicio