Hola amigotes.
Aca les dejo el codigo , de mi modestisimo proyectito , funciona bien. Esta hecho en Proton+ .
Si a alguien le interesa practicar y le sirve , me alegraria mucho. Un abrazo a todos y muchisimas gracias a todos. Son de lo mejor.
********************************************************************
" Lectura del sensor de Presion MPX4115A de la casa Motorola ( samples en
"
www.freescale.com )
"
" Pic = 18f452 a 4MZ // Presion = MPX4115A // RTC = DS1337 // Temp. = DS1821
"
" Conexion del MPX4115A ( Pin1 a Pin2 de 18f452 ; Pin2 a GND ; Pin 3 a +5V ;
" Pin4 NC, Pin5 NC, Pin6 NC )
"
" Conexion del DS1337 ( Pin1 a Pin2 mediante XT ; Pin3 NC � +5V mediante res pullup
" (Alarma1) ; Pin4 a GND ; Pin5 a +5V mediante res pullup ; Pin6 a +5V
" mediante res pullup ; Pin7 NC � +5V mediante res pullup (Alarma2); Pin8 a VCC )
"
"
" Conexion del DS1821 ( Pin1 a GND, Pin2 a Pin16 del 18F452 mediante res pullup ,
" Pin3 a VCC
"
" Espero les sirva de algo. Sanpic
@CONFIG_REQ
@__CONFIG CONFIG1H, OSCS_OFF_1 & XT_OSC_1
@__CONFIG CONFIG2L, BOR_ON_2 & BORV_20_2 & PWRT_ON_2
@__CONFIG CONFIG2H, WDT_OFF_2 & WDTPS_128_2
@__CONFIG CONFIG3H, CCP2MX_ON_3
@__CONFIG CONFIG4L, STVR_ON_4 & LVP_OFF_4 & DEBUG_OFF_4
Include "PROTON18_4.INC"
ADIN_RES 10 " Establecer resolucion de 10 bits
ADIN_TAD FRC " Uso RC osc para tomar muestras del ADC
ADIN_STIME 100
Dim ADC_Valor as Word
Dim Valor as Word
Dim Volts as Byte
Dim Milivolts as Word
Dim Presion as Float
" variables para lectura del DS1821
Dim temperatura as byte
Symbol DQ = portc.1
" variables para lectura del DS1337
Dim cfg as byte
" Symbol RTC = $D0 " direccion del dispositivo DS1337
" Symbol SDA = PORTC.5 " al DS1337 SDA pin #5 conectar mediante res pull_up de 10K
" Symbol SCL = PORTC.6 " al DS1337 SCL pin #6 conectar mediante res pull_up de 10K
Dim sec as BYTE " segundos
Dim mins as BYTE " minutos
Dim hr as BYTE " horas
Dim day as BYTE " dia
Dim date as BYTE " fecha
Dim mon as BYTE " mes
Dim yr as BYTE " anio
Dim f_alarma as byte " estado de la bandera de disparo de alarma
Dim a_sec as BYTE " segundos de alarma
Dim a_mins as BYTE " minutos de alarma
Dim a_hr as BYTE " horas de alarma
Dim a_day as BYTE " dia de alarma
Dim a_date as BYTE " fecha de alarma
Delayms 500 " Pausa para estabilizar el Micro
TRISA.0 = 1 " Establezco bit0 del PuertoA como entrada
ADCON1 = %10000010 " PuertoA como analogo y justifico a la derecha
Main: gosub Write_1337
Loop:
Leer_1337:
Busin $D0,$00,[sec,mins,hr,day,date,mon,yr]
Busin $D0,$07,[a_sec,a_mins,a_hr,a_date]
Busin $D0,$0F,[f_alarma]
delayms 10
hserout ["Fecha/Hora : ",hex2 date,"/",hex2 mon,"/", hex2 yr," - ",HEX2 hr, ":", HEX2 mins, ":", HEX2 sec,13,10]
" if f_alarma.0 = 1 then goto Alarma_ON
Leo_presion:
ADC_Valor = ADIN 0 " Leo el ADC
delayms 10
Valor = 489 * (ADC_Valor / 10)
Volts = Valor / 10000
Milivolts = (Valor // 10000) / 100
Presion = ADC_Valor * 0.0048875
Presion = Presion / 5
Presion = Presion + 0.095
Presion = Presion / 0.009 " presion expresada en KiloPascales
Presion = Presion * 10 " * por 10 para transformarlo en milibares o hectopascales
" hserout ["Valor ADC : ",Dec ADC_Valor,13,10]
" hserout ["Voltaje : ",Dec1 Volts,".",Dec2 Milivolts,"V",13,10]
hserout ["Presion : ",Dec4 Presion, " HectoPascal",13,10 ]
Leo_temp: "Rutina para la lectura de la temperatura
OWRITE DQ, 1 , [ $EE ]
delayms 100
OWRITE DQ, 1 , [ $AA ]
delayms 100
OREAD DQ, 0 , [temperatura]
hserout ["Temperatura : ",Dec temperatura, " celsius",13,10]
hserout ["=======================================",13,10,13,10]
delayms 500
goto Loop
"Alarma_ON:
" Hserout [13,10,"ALARMA DISPARADA",13,10]
" delayus 100
" Busout $D0,$0F,[%00000000] "Reseteo la bandera de disparo de la alarma
" goto Leo_presion
Seteo_1337:
" seteo DIA/HORA 13/08/2005 16:30:40
delayms 100
Hserout [13,10,"Seteando calendario ...",13,10]
yr=$05
mon=$8
date=$13
day=$6
hr=$16
mins=$30
sec=$40
Busout $D0,$00,[sec,mins,hr,day,date,mon,yr]
delayms 100
"Alarma_1337:
" seteo Alarma1 DIA/HORA 13/08/2005 16:33:40 (para probar nada mas)
" a_date = $13 ^ %10000000
" a_hr = $16 ^ %10000000
" a_mins = $33
" a_sec = $40
" a_date = $23
" a_hr = $16
" a_sec = $40
" a_mins = $32
" Busout $D0,$0E,[$20] " control
" delayms 10
" Busout $D0,$0F,[$00] " estado
" delayms 10
" Busout $D0,$07,[a_sec,a_mins,a_hr,a_date] " seteo alarma
" delayms 10
" a_hr = a_hr ^ %10000000
" a_date = a_date ^ %10000000
" Hserout ["Alarma fijada : " , hex2 a_hr,":", hex2 a_mins,":",hex2 a_sec,13,10]
" return
"FIN DEL PROGRAMA
"Tabla de conversion de unidades de Presi�n
"
" 0.01 MegaPascal
" 0.1 Bar
" 0.102 Kg/cm2
" 10 KiloPascal
" 100 HectoPascal
" 100 Milibar
" 1019.7 Kg/m2
" 10000 Pascal