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