Hola hace mucho que estoy en el foro pero muy pocas veces me dedique a postear, me dedique a programar para pic simulator ide y estoy con manuales todo! Entonces mi idea principal era hacer una especie de MP3, pero esto va a conllevar muchos exprimentos previos y si aunque no lo crean este termometro es uno de ellos para practicar escritura en eeprom por I2C luego sera en RAM, y luego escribire audio en ram, ya que son mas rapidas! Pero eso sera mas adelante..
Aqui esta el porgrama que hice.
Define CONF_WORD = 0x3f72
Define CLOCK_FREQUENCY = 12 'Frecuencia a 12Mhz
AllDigital 'Todo las salidas a digital
Define LCD_BITS = 4 'LCD BUS DE DATOS 4
Define LCD_DREG = PORTD 'Define el puerto a donde las lineas del lcd se conectan
Define LCD_DBIT = 0 'DREG A PIN 0
Define LCD_RSREG = PORTE 'PUERTO DE RS
Define LCD_RSBIT = 0 'RS A PIN 0
Define LCD_RWREG = PORTE 'PUERTO DE RW
Define LCD_RWBIT = 1 'RW A PIN 1
Define LCD_EREG = PORTE 'Enable A PUERTO E
Define LCD_EBIT = 2 'Enable A PIN 2
Define LCD_LINES = 2
Define LCD_CHARS = 16
Symbol scl = PORTC.3
Symbol sda = PORTC.4
Config PORTB.3 = Output
Config PORTB.1 = Output
Lcdinit 'Inicio LCD (normalmente tarda unos 100us)
Define 1WIRE_REG = PORTA 'Puerto de verificacion del sensor
Define 1WIRE_BIT = 2 'pin del puerto
Dim temp As Byte 'Temperatura variable BYTE (0 a 255)
Dim sign As Byte 'Sign varible BYTE (0-255)
Dim temp2 As Bit 'Temp2 as bit (0-1)
Dim addr As Byte
Dim data As Byte
Symbol pulsador = PORTB.1
Symbol pulsador2 = PORTB.3
loop:
DS18S20Start 'INICIO DEL SENSOR
WaitMs 1000 'ESPERA DE 10 SEGUNDOS
DS18S20ReadT temp, sign 'Sensor lee la temperatura del DS y la almacena en la variable SIGN
Lcdcmdout LcdClear 'Limpio el LCD
If sign > 0 Then 'Si la temperatura es menor a 0 en el display aparcera un -
Lcdout "-" 'muestra en el LCD un menos si se cumple el IF
temp = 255 - temp 'La temperatura es igual a 255 - los datos del sensor
temp = temp + 1 'Temperatura es igual a la temperatura antes obtenida + 1
Endif 'fin del IF
temp2 = temp.0 'la variable temp2 = a la temperatua * 0
temp = temp / 2 'Temperatura es igual a temperatura divido 2
Lcdout #temp 'El lcd muestra finalmente la variable "temperatura" donde estan los datos
If temp2 = 1 Then 'Si temp2, (variable bit) es igual a 1, el lcd mostrara 0,5 decimales
Lcdout ".5"
Else 'sino mostrar 0 decimal
Lcdout ".0"
Endif 'Fin de la rutina IF
WaitMs 500 'Espera 5 segundos y vuelve a la rutina
If pulsador = 1 Then
Gosub eeprom1
Endif
WaitMs 300
If pulsador2 = 1 Then
Gosub eeprom2
Endif
Goto loop 'Volver a LOOP
End
eeprom1:
For addr = 0 To 31
data = temp
I2CWrite sda, scl, 0xa0, addr, data
Lcdcmdout LcdClear
Lcdout "Escribiendo EEPROM"
Lcdcmdout LcdClear
WaitMs 500
Lcdcmdout LcdLine2Home
Lcdout "(", #addr, ") = ", #data
WaitMs 500
Next addr
Return
eeprom2:
For addr = 0 To 31
data = temp
I2CRead sda, scl, 0xa0, addr, data
Lcdcmdout LcdClear
Lcdout "LEYENDO DATOS DE EEPROM"
Lcdcmdout LcdClear
Lcdout "(", #addr, ") = ", #data
WaitMs 500
Next addr
Return
Nose si se entiende si alguien le podria dar un vistazo al programa y ayudarme para guardar los decimales tambien estaria muy agradecido.. USE PIC SIMULATOR IDE, ademas si alguien tiene ejemplos de escritura y lectura de memorias RAM agradeceria!!
Muchas gracias acepto comentario y criticaS!