Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
1 DEFINE OSC 8
2 DEFINE LCD_DREG PORTB
3 DEFINE LCD_DBIT 4
4 DEFINE LCD_RSREG PORTB
5 DEFINE LCD_RSBIT 0
6 DEFINE LCD_EREG PORTB
7 DEFINE LCD_EBIT 1
8 CONTROL VAR BYTE
9 ISI1 VAR BYTE
10 ISI2 VAR BYTE
11 U1 VAR BYTE
12 U2 VAR BYTE
13 H0 VAR HAM.BYTE0
14 H1 VAR HAM.BYTE1
15 HAM VAR WORD
16 RAI var word
17 ISI VAR WORD
18 P1 VAR WORD
19 P2 VAR WORD
20 P3 VAR WORD
21 W VAR WORD
22 DTA VAR PORTC.4
23 CLK VAR PORTC.5
24 ISARET VAR BIT
25 HATA var BIT
26 PORTC=0
27 PORTB=0
28 TRISC=0
29 TRISB=0
30 INICIO:
31 CONTROL=%00000101
32 HAM=0
33 GOSUB CONTROL_PULSO
34 GOSUB DATO_HUMEDAD
35 GOSUB HUMEDAD
36 PAUSE 50
37 CONTROL=%00000011
38 HAM=0
39 RAI=HAM
40 GOSUB CONTROL_PULSO
41 Gosub DATO_TEMPERATURA
42 GOSUB TEMPERATURA
43 HUMEDAD:
44 LCDOut $FE,2
45 LCDOut " HUME = ",DEC U1 , "," , DEC1 U2," % "
46 RETURN
47 TEMPERATURA:
48 LCDOut $FE,$C0
49 if ISARET=1 THEN
50 LCDOut " TEMP =-",DEC ISI1 , "," , DEC1 ISI," C "
51 RETURN
52 endIF
53 LCDOut " TEMP = ",DEC ISI1 , "," , DEC1 ISI2," C "
54 RETURN
55 EMPEZAR:
56 OUTPUT DTA
57 OUTPUT CLK
58 HIGH DTA
59 LOW CLK
60 PAUSE 1
61 HIGH CLK
62 LOW DTA
63 PAUSE 1
64 LOW CLK
65 PAUSE 1
66 HIGH CLK
67 PAUSE 1
68 HIGH DTA
69 LOW CLK
70 RETURN
71 RESET:
72 OUTPUT DTA
73 OUTPUT CLK
74 high DTA=1
75 FOR W=0 TO 9
76 HIGH CLK
77 pause 1
78 LOW CLK
79 Next W
80 Return
81 CONTROL_PULSO:
81 GOSUB EMPEZAR
83 SHIFTOUT DTA,CLK,1,[CONTROL]
84 INPUT DTA
85 PULSOUT CLK,10
86 HATA=0
87 FOR W=0 to 65500
88 IF DTA=0 then SALIR
89 NEXT W
90 HATA=1
91 SALIR:
92 SHIFTIN DTA,CLK,0,[H1]
93 OUTPUT DTA
94 LOW DTA
95 PULSOUT CLK,10
96 INPUT DTA
97 SHIFTIN DTA,CLK,0,[H0]
98 PULSOUT CLK,10
99 RETURN
100 DATO_TEMPERATURA:
101 if ham<4200 then
102 ISARET=1
103 ISI1=(4200-HAM)/100
104 ISI2=((4200-ham)//100)/10
105 goto EXCESO
106 endif
107 ISI1=(HAM-3850)/100
108 ISI2=((HAM-3850)//100)/10
109 EXCESO:
110 if HAM>16384 then
111 ISI1=0
112 ISI2=0
113 endif
114 RETURN
115 DATO_HUMEDAD:
116 p1=(28542-(54722**ham+ham))**ham-80
117 P2=655+(HAM*5)+(HAM**15917)
118 P3=(P2**2480)-(P2**2730)+P1
119 U1=p3/10
120 U2=p3//10
121 IF ham>3710 THEN
122 u1=0
123 U2=0
124 ENDIF
125 return
@ DEVICE MCLR_OFF, WDT_OFF, LVP_OFF, BOD_OFF, PWRT_ON, PROTECT_OFF
DEFINE OSC 4 ' Para trabajar con un cristal de 4MHz
DEFINE I2C_HOLD 1
trisa=%000000
trisb=%00000000
porta=%000000
portb=%00000000
SDA VAR PORTB.1
SCL VAR PORTB.2
a1 var byte
a2 var byte
a3 var byte
a4 var byte
a5 var byte
a6 var byte
med1 var byte
leer:
I2CREAD sda,scl,%1101000,$29,[a1]
I2CREAD sda,scl,%1101000,$30,[a2]
PAUSE 10
med1=a1+a2
pulsout portb.0,med1
pause10
goto leer
Ok. Saludos.Hola Darkbytes y D@rio en unas paginas a tras comente al respecto de los bit de cada parametro son de 16bits con un complemento a dos lo cual no se que significa, he visto que con el DS1307 se utiliza para mostrar los datos en la lcd un HEX2 pero a que se refiere y si tiene algo que ver?
Me imagino que A1 = GYRO_XOUT_L ; y ; A2 = GYRO_XOUT_H
que según el datasheet ambos suman 16bits con el complemento a 2
Si. Ese es un detalle muy importantePD: Otra cosa que me acabo de dar cuenta es que las direcciones que tu colocas como
a1 = $29 y a2 = $30 estas serian a1 = $1D Y a2 = $1E ya que si colocas 29 y 30 serian en decimal pero como le colocas el símbolo $ lo transformas a hexadecimal y esa seria otra direccion de memoria...saludosss
Ok. Gracias reyvilla.Darkbytes, vi tu circuito y el código pero por ningún lado veo lo que indicas del envió serial de una variable tipo word y el problema lo tienes en el envió o a la hora de recibirlo?
PD: El standar para la trasmisión seria rs-232 en el envio de datos de 5,6, 7 u 8 bits a la ves, los que tienes que hacer en un tipo de tabla para enviar y recibir información de tal manera que al enviarla tenga una señalizacion especifica y al recibirla según la señalizacion puedas armar los datos sin ningún problema, puedes enviar un paquete de informacion con una señalizacion pero sera enviada de 8 bits a la vez por lo cual que al recibirla según la señalizacion debes ir ordenandola que seria lo mismo reconstitulirla para poder leer el dato completo, bueno eso si se tratase de varios valores y varias constantes cualquier cosa me avisas
Y Upps!! necesitaria ver algún ejemplo porque no entendi.D@rio, mira este ejemplo que adjunto, lo use para otro que transmite el valor del ADC vía serial.
El ejemplo que realicé se encuentra por acá