amigo xocas06
'Pic 16f84A
Define CONF_WORD = 0x3ff1 ' configuras la palabra
Define CLOCK_FREQUENCY = 4 'configuras la frecuencia
'---->¿ambos los sacas del define bit verdad?
'-------------------------------------Puertos del LCD-----------------------------------------------
Define LCD_BITS = 8 'indicamos que el bus de datos del lcd sera de 8bit
Define LCD_DREG = PORTB 'el bus de datos sera el puerto B
Define LCD_DBIT = 0 '(0/4) indiferente en bus de 8 bits
Define LCD_RSREG = PORTA 'el bit RS está en el puerto A
Define LCD_RSBIT = 0 'se usa RA0 RS
Define LCD_EREG = PORTA 'el bit E está en el puerto A
Define LCD_EBIT = 1 'se usa RA1 para E
Define LCD_COMMANDUS = 2000 'Tiempo de espera despues de ejecutar un comand del lcd en uSeg.
Define LCD_DATAUS = 100 'Tiempo de espera despues de enviar un dato al LCD en uSeg.
Define LCD_INITMS = 100 'Tiempo de espera despues de inicializar el Display, solo se ejecuta una vez en mSeg.
'------------------------------------------------------
'----->¿porque usas 8 bit en vez de 4?
Lcdinit 0 ' ----->no pones nada (sera cero)
'-----------------------------------Puerto I2C-----------------------------------------------------
Symbol sda = PORTA.2 'asignamos nombre al pin que hara de SDA del puerto I2C
Symbol scl = PORTA.3 'asignamos nombre al pin que hara de SCL del puerto I2C
'***********************************DEFINICION DE VARIABLES**************************************
'--------------------------------------Variables Programa----------------------------------------
'------variables del I2C---------??
Dim addr(7) As Byte '-----> registro de control SQW/OUT generar onda cuadrada o un vector de 7 elementos
Dim data As Byte ' datos del i2c
Dim escribe As Byte ' para la duncion lookup
'------varibles del DS1307----(esto es el valor de los registros)-----------------------
Dim sec As Byte 'segundos
Dim min As Byte 'minutos
Dim hour As Byte 'hora (como difieres de 12 o 24 se que hay un reg para eso)
Dim day As Byte ' dia de la semana(L M X J V S D)
Dim daym As Byte '? dia del mes (como sabes si es 30, 31, 28,29)
Dim month As Byte' meses Enero ..Febr. Mar..
Dim year As Byte ' Año (En que formato 2000, 02)
'----------------parte alta y baja--------
Dim d_hi As Byte
Dim d_lo As Byte
WaitMs 1000
'bucle que escribe los datos iniciales en DS1307
For addr = 0 To 6
escribe = LookUp(0x00, 0x15, 0x16, 0x01, 0x22, 0x06, 0x08), addr
I2CWrite sda, scl, 0xd0, addr, escribe 'escribe los datos al DS1307
Next addr
'bucle para lectura de datos desde el DS1307
'------------------------
loop:
addr = 0
I2CRead sda, scl, 0xd1, addr, sec
addr = 1
I2CRead sda, scl, 0xd1, addr, min
addr = 2
I2CRead sda, scl, 0xd1, addr, hour
addr = 3
I2CRead sda, scl, 0xd1, addr, daym
addr = 4
I2CRead sda, scl, 0xd1, addr, day
addr = 5
I2CRead sda, scl, 0xd1, addr, month
addr = 6
I2CRead sda, scl, 0xd1, addr, year
'-----------esto loop: sepodia haber escrito -----
'como para la carga de datos iniciales--me ronda esa duda
'---------parte de sacar datos por el LCD----
'escribimos resultado en el lcd
Lcdcmdout LcdClear ' limpia lcd
Lcdout " Hora: " 'saca por display en linea 1 "hora:"
data = hour '---->que hace aqui me pierdo iguala una variable a otra...me pierdo..
Gosub print '--->y llama a yna funcion..me pierdo..
Lcdout "." 'saca punto por lcd para separar algo
data = min
Gosub print
Lcdout "."
data = sec
Gosub print
Lcdcmdout LcdLine2Home ' se posiciona en la segunda linea
Lcdout "Fecha: "
data = day
Gosub print
Lcdout "/"
data = month
Gosub print
Lcdout "/0", #year
WaitMs 100
Goto loop
End
'subrutina de conversión (conversion de que)
print:
d_hi = data / 16 ' parte alta de algo (d_hi era un byte) no entiendo
d_lo = data Mod 16 ' parte baja de algo.....
If d_hi < 10 Then 'para que sirve...me pierdo..
Lcdout #d_hi
Else
Lcdout "X" ' y esto que es sacas ...algo se me escapa..
Endif
If d_lo < 10 Then
Lcdout #d_lo
Else
Lcdout "X"
Endif
Return
uso un pic 16f84a por motivos de sencillez y
para evitarme andar configurando los registros del 16f877a (tu no olvides hacerlo) y por los motivos antes explicados, un lcd de 8 bits.
-------------------------
a que registros te refierres a los de configuracion de bit del PSI y lo de usar 8 bit en vez de 4, que es eso ....de que motivos antes emcionados ...algo se me escapa..
---------------
la forma de conversión de los datos es diferente a la que usa el amigo dogflu66 y la he tomado de un ejemplo que tienes en la web de psi (
http://www.oshonsoft.com/picexamples.html - EXAMPLE 9: I2C communication with PCF8583 real time clock). creo que entre la explicación tan detallada de dogflu66 y esta otra versión, te quedará claro su funcionamiento.
---------------------
lo del funcionamineto del I2C es sencillo para escribir en I2C: I2CWrite sda, scl, 0xd0, addr, dato
para leer I2CRead sda, scl, 0xd1, addr, dato
yo vi el ejeplo que viene con la version el del i2c ,
--------------------------------------------------------------------------------------------------------------------------
Dim addr As Word 'variable for storing EEPROM byte address
Dim data As Byte 'variable for storing EEPROM byte data
Symbol sda = PORTC.2 'nickname for SDA pin
Symbol scl = PORTC.3 'nickname for SCL pin
For addr = 0 To 31 'the first 32 bytes will be written
data = 255 - addr 'set the data byte to be written
I2CWrite sda, scl, 0xa0, addr, data 'perform I2C write operation to serial EEPROM
WaitMs 1 'small delay interval
Next addr
-----------------------------------------------------------------------------------------------------------------------------
si pero como consigues escribir cadenas o palabras, como las troceas o lo hace solo el programa, imagina que quieres escribir una palabra o una brase enuna memoria 24cl.. como lo haces..(esto es otra duda)
bueno como decia..
el sda y scl lo fijamos nosotros segun el pic ¿es asi no? en unos esta en un ouerto y en otro en otro.
La direcion de escritura o lectura(0xD0 o 0xD1) dependen del dispositivo que queramos aceder
addr es la direcccion a escribir o leer y data es el dato a escribir o leer.
puedes corregirme si me equivoco, te lo agradeceria
--------------
para terminar, si tu intención es llevar a cabo el proyecto que mencionas aquí:
http://www.todopic.com.ar/foros/index.php?topic=22218.msg175377#msg175377 yo en tu lugar lo iría desglosando en porciones más pequeñas para que su resolución me fuera más factible.
la verdad es que si, esa es mi intencion, pero mas que un proyecto parece una carrera de salto de obtaculos.
he encontradado alguna barreras, por ejemplo el chip receptor de radio, me gustaria que fuese de esos de bajo consumo que tienen auto scan, en vez de ruletita analogica para el cambio de las emisoras, tienen botones, ademas si se destripan llevan pocas cosas, condensadores de lenteja, 3 pulsadores, 3 o4 resistencias,3 transistores, 5o 6 resistencias, conector de audio, una bobina y el chip D7088
data
http://www.datasheetcatalog.com/datasheets_pdf/D/7/0/8/D7088.shtmlcomo esas radios de propaganda que suelen dar como esta
http://www.sz-wholesale.com/shenzhen_China_products/FM-Auto-Scan-Radio_1.htm --->modelo TDC1465
----------------------
también me plantearía seriamente si psi es el lenguaje más adecuado para llevarlo a término y sobre todo -sobre todo- empezaría por construirme o comprarme un pequeño entrenador que me permitiera verificar las cosas en la práctica. si te lo quieres construir en el Foro encontrarás varias opciones y una buena opción de compra podría ser esta:
http://www.futurlec.com/PICDevBoard.shtml o esta:
http://www.futurlec.com/PIC16F877_Controller.shtml a mi entender muy económicas
con respecto al lenguaje... pos no se amigo, el basic parece facil, elegi PSI porque pudes programar y ver o probar si funciona, el proteus pareceun buen simulador lo malo es que no deje meterle el el *.bas ,estado con el miKroe y el proton se parecen .y el PBP tambien pero no comprendo su su forma de interfece, yo programe antes en c con el 8051 y pareceia facil, su ventanica en ms-2 pero el proteus parece bueno para la simulacion pero hay componentes que no tiene (D7088 fm reciver y el ISD51xx chip coder voice) y alguno errores que muchas veces no comprendes..
lo bueno, es algo que tu puedas simular y probar sin tener que montar o comprar componentes que los tiempos estan caros,
de todas formas conservo mis 2 placas blancas, las famosas GL-12 de montajes de pueba.ahora ando buscado un lcd de 20x2, 20x4 haber si lo reciclo de algun sitio pero si me comprase uno, seria alfanumerico y de los que tienen luz.
ademas lo de programar cucachas con el t20-se en algunos ordanadores da problemas (por ejemplo portatiles) por ahi tengo u pos de un programador multi puerto (puerto paralelo - Serie -usb ) tambien en proyecto. No se, si en este foro o en otro.
bueno amigo no me quiero liar os agradezco a todos los consejos , seran muy bien recibidos, el saber no ocupa lugar..nos han dicho siempre..
un saludo, si puedes ayudarme en algo te lo agredeceria..el programa lo comente con mis dudas pudes revisarlo gracias..
un saludo