TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: cheapekt en 10 de Abril de 2008, 14:58:29
-
Hola buenas,
En primer término me gustaría agradeceros a los creadores del foro, sois la guía para millones de usuarios.
Estoy empezando en esto, y no se si lo que quiero hacer es posible, tengo una tabla con datos (en teoria son temperaturas), lo tengo en un formato excel. La pregunta sería es posible volcar directamente esta informacion en el pic.
¿Si es posible me podeis dar algún tipo de pista acerca de esto?
Muy amables, gracias de antemano!
Saludos!
-
Excel tiene un lenguaje de macros muy potente, casi tanto como Visual Basic. No he probado nunca a hacerlo, pero estoy convencido que se puede hacer una comunicación serie controlada desde Excel.
Si eso fuera así, conectando un max232 al PIC podrías enviar los datos directamente desde el PC y operar con ellos con el PIC.
Si no pudiera hacerse directamente, siempre puedes generar un fichero de texto exportado desde Excel y transmitirlo vía Hyperterminal o cualquier otra aplicación parecida.
-
Podrías guardar esa famosa tabla pero en eeprom ya que los 12f675 no se graban a si mismos en su memoria flash.
Ahora si lo que pretendes es pasarlo al código de una forma ágil? Entonces te conviene hacer uso de la función
CONCATENAR del excel.
Como sería.
Si tienes que armar una tabla con 100 elementos, y los tienes en 100 celdas una debajo de la otra podrías hacer algo así como
A
1 10
2 20
3 30
4 40
5 50
6 60
7 70
8 80
9 90
10 100
Podrías por ejemplo en la celda B1, poner algo así como
=CONCATENAR(" retlw .";A1)
Con esto la celda tomará el valor
retlw .10
El . indica que el dato es DECIMAL. Tienes que usar valores enteros para armar una tabla , cuidado con eso.
Si eso lo extiendes para todas tus celdas podrás copiar y pegar la columna b1 en tu código .asm y asunto solucionado.
Lo he hecho muchísimas veces con excelentes resultados.
:) :)
-
Muchísimas gracias, Nocturno y maunix,
Entiendo lo que decís, para hacer pruebas me valdrá, ¿dices que con tan solo poner el punto el pic ya interpreta que el dato es decimal? que bueno!!!
Observando el datasheet veo la instruccion que me dices
RETLW k Return with literal in W
perdonarme por mi penoso nivel del lenguaje pero esta instrucción que hace exactamente, no se tendría que indicar a que posición envias ese dato? o esa posicion es la W (¿es decir en vez de escribir W tengo que poner la celda de memoria donde quiero ubicar ese dato?)
Lo siento, por mi ignorancia
Gracias!
-
Según entiendo y he visto por internet
Nemónicos operandos Descripción Ciclos Flags
RETLW k Retorno y carga de W 2 Ninguno
antes de todo a la letra k le tengo que dar un valor.
luego el contenido de k se vuelca en el contenido de w que previamente le habré asignado un valor a esa letra
es decir
define w 0X08
define k 0X1c
retlw k
¿el resultado final es que la w valdrá 1c?
Es cierto?
VUelvo a pedir perdón por mi ignorancia, pero tranquilos que esto cambiará.....
Saludos!
-
Esperar esperar.
Que me parece que lo empiezo a entender, Porque no había observado una página del datasheet .. perdonarme
La w es el acumulador, que solo hay que inicializarlo la primera vez, luego el solo se va incrementando?
Así que tan solo tendría que definir la k .... y el acumulador ya se irá actualizando prograsivamente.
es asi!!!!!!!!!! :o
jejejee
gracias!!!!.... Que apasionante es el mundo de los pics!
-
bsf STATUS,RP0 // no se si se tiene que poner
movlw 0x20
retlw .10
retlw .11
retlw .10,6
retlw .10,7
retlw .14
retlw .13
retlw .16
retlw .17
retlw .10,8
retlw .10,7
retlw .10
retlw .10,6
retlw .10
retlw .11
retlw .12
Con esto en el pic he grabado en el banco de registros 1 los datos desde la posición
20 que estará el dato 10 en decimal
o hay que hacer algo para especificar que banco estoy usando (bsf STATUS,RP0) por o que he mirado
en el datasheet me parece que hay que poner antes de lo que he puesto eso de arriba
hasta la posición 34 que estará el dato 12 en decimal
¿es correcto esto que digo?
lo siento por mi ingorancia.
Saludos!
-
Perdón quería decir banco de registros 0
-
Espera compañero que estas yendo muy rápido pero no en el sentido correcto. A lo que voy es que estás queriendo codificar más veloz que lo que comprendes del problema y eso no te llevará más que a más problemas... es un consejo de un viejo batallador con los pics.
Lee el datasheet, internalizate bien de cómo funciona una LECTURA DE TABLA ya que eso habías pedido al principio. Cuando lo mencionaste en tu primer post, de que tenias los datos en un excel y los querías pasar al pic supuse que manejabas estos conceptos.
Volvamos más atrás y te propongo que leas sobre cómo leer una tabla. Lo que se hace con una tabla es tomar en WREG el valor N de la misma. Por ejemplo, cuando uno llama a una tabla, lo que pretende es en una ocasión leer el décimo valor de la tabla, en otra ocasión el 8vo valor y así sucesivamente. La tabla es fija, pero uno va eligiendo qué valor tomar. Sirve para muchas cosas por lo cual uno debe saber cómo aplicarlo.
Lo que debes tener claro es que para manejar números con coma flotante (números con decimales) debes saber muchas muchas cosas más por eso no te quiero complicar el tema con esas cosas. La tabla hazla con números enteros solamente. Si pones .10,7 te debiera saltar un mensaje de error, usa solo .10.
Te sugiero te pases por estos hilos así comprendes un poco más de los pics, del assembly y luego recién comienza a codificar. Fíjate que en el post siguiente he puesto un link al datasheet de Microchip donde se comenta como funciona la lectura de una tabla.
http://www.todopic.com.ar/foros/index.php?topic=8156.0
http://www.todopic.com.ar/foros/index.php?topic=12659.0
http://www.todopic.com.ar/foros/index.php?topic=15513.0