Autor Tema: PIC BASIC del PIC Simulator IDE Oshonsoft (Índice en página 1)  (Leído 859690 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado michelelectro

  • PIC10
  • *
  • Mensajes: 3
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #705 en: 05 de Abril de 2011, 20:34:32 »
Hola todos bueno tengo un GLCD  controlador k180s  y bueno la cuestión es quiero subirle imágenes y e buscado el dicho generador todopic  pero nada no lo e encontrado pido ayuda aver quien me lo puede sapasar   es pero sus respuestas .... :)gracias.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #706 en: 06 de Abril de 2011, 15:01:48 »
Hola; no te puedo ayudar en eso pero estoy interesado en saber si el modulo glcd que usas, es el de 128x64 y si lo estas manejando con el basic del PSI.
Saludos desde Granada, España.

Desconectado michelelectro

  • PIC10
  • *
  • Mensajes: 3
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #707 en: 09 de Abril de 2011, 12:20:51 »
que tal..... claro que el glcd que estoy usando es de 128x64  y estoy QUE lo programa  con editor PROTON EDITOR (PBP_EDITOR)

Desconectado man3s

  • PIC12
  • **
  • Mensajes: 69
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #708 en: 21 de Julio de 2011, 21:24:49 »
Hola amigos del foro, soy nuevo en todopic, pues les cuento que hace 2 dias que he estado trabajando con el PIC SIMULATOR IDE, y me ha parecido estupendo, poco a poco le he agarrado a los detallitos pero hay uno que ya me trae loco  :5] y es el siguiente detalle:

Al momento de generar mas de dos subrutinas no se muestran, al parecer mi programa esta bn escrito, espero puedan checarlo y darme una ayudadita, lo que intento hacer es una condicion, que si un pulsador ( PORTA.0 ) esta presionado entonces se realize la subrutina "parpadeo" que utilizo pues para encender y apagar un led (parpadeando  :D) , el problema viene cuando intento condicionar que si PORTA.1 = 0 entonces se realize la subrutina "red" que solo enciende el LED y ya.

He probado solo con el parpadeo y me funciona muy bien, al poner otra subrutina viene el problema. El codigo es el siguiente:


Citar
AllDigital
TRISA = %00000111
TRISB = %00000000

'USO DE SUBRUTINAS
'"PARPADEO DE UN LED"

'MENU

main:
If PORTA.0 = 1 Then Gosub parpadeo
If PORTA.1 = 1 Then Gosub red
Goto main
End                                               

'SUBRUTINAS

parpadeo:
PORTB.4 = 1
WaitMs 500  'RETRASO DE APAGADO
PORTB.4 = 0
If PORTA.2 = 1 Then Return  'RESETEO
Goto parpadeo

red:
PORTB.4 = 1
If PORTA.2 = 1 Then Return  'RESETEO
Goto red

Como ven, pues no es la gran cosa, pero por algo se empieza  :D, bueno de antemano muchas gracias, espero su ayuda.

Una captura:




Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #709 en: 22 de Julio de 2011, 02:03:04 »
Cre o que en la rutina main, te falta un "end" me parece que para cada if tienes que poner el respestivo end.

Y me parece que en las subrutinas tambien. No domino bien el basic pero creo que es asi.

F.
Todos los días se aprende algo nuevo.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #710 en: 22 de Julio de 2011, 04:53:10 »
Prueba de esta otra manera, de todos modos el empleo de gotos no es muy aconsejable.

Código: [Seleccionar]
AllDigital
TRISA = %00000111
TRISB = %00000000

'USO DE SUBRUTINAS
'"PARPADEO DE UN LED"

'MENU

main:

If PORTA.0 = 1 Then Gosub parpadeo
If PORTA.1 = 1 Then Gosub red

Goto main
End                                               

'SUBRUTINAS

parpadeo:
PORTB.4 = 1
WaitMs 500  'RETRASO DE APAGADO
PORTB.4 = 0
If PORTA.2 = 1 Then Return  'RESETEO
Goto parpadeo
Return                                           

red:
PORTB.4 = 1
If PORTA.2 = 1 Then Return  'RESETEO
Goto red
Return
Saludos desde Granada, España.

Desconectado man3s

  • PIC12
  • **
  • Mensajes: 69
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #711 en: 22 de Julio de 2011, 11:02:50 »

Agradezco mucho la ayuda "dogflu66" , este si se ha compilado de manera correcta y ha funcionado como se debe  :), esta rutina ya la habia hecho sin el gosub pero quiero aprender a usar el PIC SIMULATOR IDE completo (o casi) y por eso estar batallando y resulta ser solo dos return  :D.
Una pregunta, ¿no es recomendable usar el goto?  :shock: o se referia al gosub  :? , ¿porque no es recomendable?, si mi base son los llamados de rutina :S , puedo trabajar sin subrutinas pero no sin llamado de rutinas  :shock:

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #712 en: 23 de Julio de 2011, 18:25:33 »
El los lenguajes de alto nivel que heredan el Goto se coincide en no recomendar su uso. En este programa con rutinas tan cortas no se aprecia el problema que da. El Goto genera un código ilegible sobre todo en  programas de mayor extensión. Con el uso de bucles tipo While/Wend, el código se clarifica porque se sabe que la subrutina por muy extensa que sea comienza en el While y termina en el Wend. El uso de saltos tipo Gosub/Etiqueta/Return, generan un codigo más comprensible porque se sabe que una vez terminada la rutina que llamó el Gosub, el código se sigue ejecutando después de este, por lo que se genera un programa fuente mucho más fácil de seguir incluso después de muchos meses sin modificarlo.
El principal problema de utilizar subrutinas ya se llamen con Goto o Gosub se presenta con las subrutinas en si, que necesitan datos de entrada para poder actuar y también pueden que devuelven datos. La comunicación de rutinas, intercambio de datos, se realiza mediante variables globales y esto genera un código muy poco transportable. La solución para todo esto se realiza mediante funciones, las funciones son  códigos completos que solo necesitan que se les faciliten los datos de entrada para poder operar prácticamente de una forma autónoma. Las funciones suelen ir acompañadas de una cabecera de comentarios que indica como realizar la transferencia de datos entre ella y la rutina principal. Estos  programas se copian y se pegan en el programa principal sin  más preocupación, lo único que hay que tener en cuenta es que no se permite tener varias funciones con el mismo nombre al igual que no se permiten varias etiquetas de subrutina con el mismo nombre.

Las funciones en este lenguaje están clasificadas en dos tipos y tienen nombre distinto, están las que devuelven valores a la rutina Main y las que no. Y las palabras clave para su definición son Function/EndFuction y Proc/EndProc respectivamente. Para llamarlas se emplea el prefijo Call seguido del nombre de la función, aunque se puede omitir en algunos casos.

En este ejemplo se emplean subrutinas a las que se les ha eleminado el Goto y utilizan variables locales para el control del bucle While/Wend.

Código: [Seleccionar]
Define SIMULATION_WAITMS_VALUE = 1
AllDigital
TRISA = %00000111
TRISB = %00000000

'USO DE SUBRUTINAS
'"PARPADEO DE UN LED"

'MENU

main:

If PORTA.0 = 1 Then Gosub parpadeo
If PORTA.1 = 1 Then Gosub red

Goto main
End                                               

'SUBRUTINAS

parpadeo:
Dim bucle As Bit  'Variable control bucle
bucle = True

While bucle = True  'Bucle infinito
PORTB.4 = 1
WaitMs 500  'RETRASO DE APAGADO
PORTB.4 = 0
If PORTA.2 = 1 Then bucle = False  'RESETEO
Wend
Return                                           

red:
Dim bucle As Bit  'Variable control bucle
bucle = True

While bucle = True  'Bucle infinito
PORTB.4 = 1
If PORTA.2 = 1 Then Return  'bucle = False  'RESETEO
Wend
Return
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #713 en: 23 de Julio de 2011, 18:45:00 »
Este tosco programa ayuda a entender lo que es la distribución del tiempo en las subrutinas, es previo al paso de utilización de las interrupciones.

Código: [Seleccionar]
AllDigital
TRISA = %00000111
TRISB = %00000000

'USO DE SUBRUTINAS
'"PARPADEO DE UN LED"

Dim tmrbase0 As Bit
Dim tmrbase1 As Bit
Dim tmrbase2 As Bit
Dim flagparpadeo As Byte

flagparpadeo = 0

'MENU

main:

If RA.0 = 1 Then flagparpadeo = 1
If RA.1 = 1 Then
flagparpadeo = 0
Gosub red
Endif
If RA.2 = 1 Then
flagparpadeo = 0  'RESETEO
RB4 = 0
Endif

If flagparpadeo = 1 Then Gosub parpadeo
Gosub basetimer

Goto main
End                                               

'SUBRUTINAS
parpadeo:  'Parpadeo al 50%
If tmrbase0 = 1 Then
Toggle RB.4
tmrbase0 = 0
Endif
Return                                           

parpadeo1:  'Parpadeo led programable tiempo a on y a off independiente
Dim flag As Bit
If tmrbase0 = 1 And flag = 0 Then
RB.4 = 1
tmrbase1 = 0
flag = 1
Endif
If tmrbase1 = 1 And flag = 1 Then
RB.4 = 0
tmrbase0 = 0
flag = 0
Endif
Return                                           

red:
RB.4 = 1
Return                                           

basetimer:  'Saltos aproximados de 10mSeg.
Dim basecont0 As Word
Dim basecont1 As Word
Dim basecont2 As Word
Dim base0_tm As Word
Dim base1_tm As Word
Dim base2_tm As Word

base0_tm = 30  'Carga base0 con 300mSeg.
base1_tm = 60  'Carga base0 con 600mSeg.
base2_tm = 100  'Carga base0 con 1Seg.

If tmrbase0 = 0 Then  'Base timer 0
basecont0 = basecont0 + 1
If basecont0 > base0_tm Then
tmrbase0 = 1
basecont0 = 0
Endif
Endif
If tmrbase1 = 0 Then  'Base timer 1
basecont1 = basecont1 + 1
If basecont1 > base1_tm Then
tmrbase1 = 1
basecont1 = 0
Endif
Endif
If tmrbase2 = 0 Then  'Base timer 2
basecont2 = basecont2 + 1
If basecont2 > base2_tm Then
tmrbase2 = 1
basecont2 = 0
Endif
Endif
WaitUs 9500
Return               
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #714 en: 24 de Julio de 2011, 07:22:48 »
Aqui dejo el mismo programa pero con la subrutina base de tiempos pasada a función.

Código: [Seleccionar]
AllDigital
TRISA = %00000111
TRISB = %00000000

'USO DE SUBRUTINAS
'"PARPADEO DE UN LED"

Dim flagparpadeo As Byte  'Activa el parpadeo del Led

flagparpadeo = 0  'Parpadeo del Led a Off

'MENU

Call tmrbase(1, 1, 0)  'Incializa base de tiempos 1
Call tmrbase(2, 1, 0)  'Incializa base de tiempos 2
Call tmrbase(3, 1, 0)  'Incializa base de tiempos 3

main:  'Rutina principal

If RA.0 = 1 Then flagparpadeo = 1  'Activa el parpadeo del Led
If RA.1 = 1 Then  'Para parpadeo y Led a On fijo
flagparpadeo = 0  'Parpadeo a Off
Gosub red  'Salto rutina control led a On
Endif
If RA.2 = 1 Then  'Reset al estado del Led
flagparpadeo = 0  'Para el parpadeo del Led
RB4 = 0  'Apaga el Led
Endif

If flagparpadeo = 1 Then Gosub parpadeo  'Salta a la rutina de control parpadeo Led
Call tmrbase(0, 0, 0)  'Actualiza las bases de tiempos

Goto main
End                                              

'SUBRUTINAS
parpadeo:  'Parpadeo al 50%
If tmrbase.1 = 1 Then  'Control led a On
Toggle RB.4  'Led a On
Call tmrbase(1, 0, 5)  'Recarga la base de tiempos 1
Endif
Return                                            

parpadeo1:  'Parpadeo led programable tiempo a On y Off independiente
Dim flag As Bit  'Marca el ciclo
If tmrbase.1 = 1 And flag = 0 Then  'Control led a On
RB.4 = 1  'Led a ON
Call tmrbase(1, 0, 3)  'Recarga base de tiempos 1
flag = 1  'Cambia de ciclo
Endif
If tmrbase.2 = 1 And flag = 1 Then  'Control led a Off
RB.4 = 0  'Led a Off
Call tmrbase(2, 0, 6)  'Recarga base de tiempos 2
flag = 0  'Cambia de ciclo
Endif
Return                                            

red:  'Control Led a On fijo
RB.4 = 1  'Led a On
Return                                            

'FUNCIONES
'Función que controla hasta 7 bases de tiempos
'Datos de entrada son los encerrados entre paréntesis
'Datos de salida los bit de la variable que da nombre a la función
'Se ponen antes del Main
'Call tmrbase(1, 1, 0)  'Incializa base de tiempos 1
'Call tmrbase(2, 1, 0)  'Incializa base de tiempos 2
'Call tmrbase(3, 1, 0)  'Incializa base de tiempos 3
'Actualiza las bases de tiempos, se tiene que repetir cada 10mSeg.
'Call tmrbase(0, 0, 0)  'Actualiza las bases de tiempos, deberia de ir en la rutina de interrupciones.
'Configuración general de las bases de tiempos
'Call tmrbase(x,y,z)
'x toma valores comprendidos entre 1 y 7, indica el numero de base que se quiere configurar
'y = 1 base parada, y = 0 base contando
'z tiempo que cuenta la base en mSeg x 10.
'Control del flujo de las rutinas del programa mediante los bit que componen la variable que da
'nombre a la función:
'tmrbase.x, x = al bit de control de la base de tiempos referida.
'If tmrbase.1 =1 then ----------------
'x=0 no se como base de tiempos, se usa para la actualización de los registros de las bases de tiempos creadas.
Function tmrbase(nbase As Byte, _onoff As Bit, base_tm As Word) As Byte  'Saltos aproximados de 10mSeg.
Dim basecont1 As Word  'Contadores
Dim basecont2 As Word
Dim basecont3 As Word
Dim base1_tm As Word  'Tiempo a contar
Dim base2_tm As Word
Dim base3_tm As Word

If nbase = 1 Then  'Configuración base tiempos 1
base1_tm = base_tm  'Carga base1 con el tiempo a contar
tmrbase.1 = _onoff  'Inicia=0, para=1
Endif
If nbase = 2 Then  'Configuración base tiempos 2
base2_tm = base_tm  'Carga base2 con el tiempo a contar
tmrbase.2 = _onoff  'Inicia=0, para=1
Endif
If nbase = 3 Then  'Configuración base tiempos 3
base3_tm = base_tm  'Carga base3 con el tiempo a contar
tmrbase.3 = _onoff  'Inicia=0, para=1
Endif

If tmrbase.1 = 0 Then  'Base timer 1
basecont1 = basecont1 + 1  'Incrementa contador base 1
If basecont1 > base1_tm Then  'Determina el estado de la base
tmrbase.1 = 1  'Base parada o termino de contar
basecont1 = 0  'Inicializa el contador de la base
Endif
Endif
If tmrbase.2 = 0 Then  'Base timer 2
basecont2 = basecont2 + 1  'Incrementa contador base 2
If basecont2 > base2_tm Then  'Determina el estado de la base
tmrbase.2 = 1  'Base parada o termino de contar
basecont2 = 0  'Inicializa el contador de la base
Endif
Endif
If tmrbase.3 = 0 Then  'Base timer 3
basecont3 = basecont3 + 1  'Incrementa contador base 3
If basecont3 > base3_tm Then  'Determina el estado de la base
tmrbase.3 = 1  'Base parada o termino de contar
basecont3 = 0  'Inicializa el contador de la base
Endif
Endif
WaitUs 9500  'Patron de la base de tiempos
Return                                            
« Última modificación: 24 de Julio de 2011, 19:51:02 por dogflu66 »
Saludos desde Granada, España.

Desconectado EA7LN

  • PIC10
  • *
  • Mensajes: 36
Coma flotante en la version 6,91
« Respuesta #715 en: 07 de Agosto de 2011, 19:12:38 »
He instalado la ultima version y la coma flotante no me funciona.
Intento ver la tensión que entra en el AD y visualizo en un display solo las unidades.
En la ayuda, veo que la coma flotante esta activada. Hace falta algun comando para activarla?
Os dejo el programa para que veais lo que prento hacer, saludos.

'Leo el AD y se visualiza en el display. Calculo la tension de entrada del AD. (Voltimetro)




'16F876A
'''''''''''''''''''''''''''LOS VALORES DEL LCD HAY QUE CAMBIARLOS PARA MI PLACA'''''''''''''''''''''''''''''


Define CLOCK_FREQUENCY = 8
Define ADC_CLOCK = 3  'default value is 3
Define ADC_SAMPLEUS = 20  'default value is 20
Define LCD_BITS = 4  'allowed values are 4 and 8 - the number of data interface lines
Define LCD_DREG = PORTB
Define LCD_DBIT = 0  '0 or 4 for 4-bit interface, ignored for 8-bit interface
Define LCD_RSREG = PORTB
Define LCD_RSBIT = 4
Define LCD_EREG = PORTB
Define LCD_EBIT = 5
Define LCD_RWREG = 0  'set to 0 if not used, 0 is default
Define LCD_RWBIT = 0  'set to 0 if not used, 0 is default
Define LCD_COMMANDUS = 5000  'delay after LCDCMDOUT, default value is 5000
Define LCD_DATAUS = 50  'delay after LCDOUT, default value is 50
Define LCD_INITMS = 100 'delay used by LCDINIT, default value is 100
'the last three Define directives set the values suitable for simulation; they should be omitted for a real device
Lcdinit


'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
AllDigital
TRISA.0 = 1  'configuro RA0 como entrada
TRISC.5 = 0  'RC5 como salida
'Define COUNT_MODE = 1
Dim entrada As Word
Dim voltaje As Word
'Dim decima As Word  'variable para displayar las decimas de voltios
ADCON1 = 0  'conversor AD de an0 on
loop:
Adcin 0, entrada
voltaje = (entrada * 5) / 1023
Lcdcmdout LcdLine1Clear
Lcdcmdout LcdLine1Home  'set cursor at the beginning of line 2
Lcdout "entrada: ", #voltaje, "v"
WaitMs 100
Goto loop
Cada dia aprendo algo nuevo. ¡Cuanto me queda por aprender!

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #716 en: 08 de Agosto de 2011, 05:44:43 »
La coma flotante es un módulo que hay que comprar a parte, te tiene que salir en el IDE los siguiente para que esté activado.



No he trabajado con coma flotante porque los micros que estoy utilizando últimamente tienen 1Kword de flash y la coma flotante es nueva y ocupa mucha memoria flash, por lo que no se si funciona bien, creo que debe de ir bien porque no ha salido ninguna otra versión para corregir errores. En general en el caso de errores en el PSI sale una nueva versión de un dia para otro y los usuarios registrados recibimos un aviso.
« Última modificación: 03 de Mayo de 2014, 14:33:04 por dogflu66 »
Saludos desde Granada, España.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #717 en: 08 de Agosto de 2011, 06:06:32 »
He probado el código que dejo a continuación en el simulador y funciona correcto. De todas formas hace mucho que no utilizo ese micro y no sabría decir si necesita alguna configuración adicional para que funcione en la realidad.

Código: [Seleccionar]
'He instalado la ultima version y la coma flotante no me funciona.
'Intento ver la tensión que entra en el AD y visualizo en un display solo las unidades.
'En la ayuda, veo que la coma flotante esta activada. Hace falta algun comando para activarla?
'Os dejo el programa para que veais lo que prento hacer, saludos.
'Leo el AD y se visualiza en el display. Calculo la tension de entrada del AD. (Voltimetro)
'16F876A
'''''''''''''''''''''''''''LOS VALORES DEL LCD HAY QUE CAMBIARLOS PARA MI PLACA'''''''''''''''''''''''''''''
Define CLOCK_FREQUENCY = 8
Define ADC_CLOCK = 3  'default value is 3
Define ADC_SAMPLEUS = 20  'default value is 20
Define LCD_BITS = 4  'allowed values are 4 and 8 - the number of data interface lines
Define LCD_DREG = PORTB
Define LCD_DBIT = 0  '0 or 4 for 4-bit interface, ignored for 8-bit interface
Define LCD_RSREG = PORTB
Define LCD_RSBIT = 4
Define LCD_EREG = PORTB
Define LCD_EBIT = 5
Define LCD_RWREG = 0  'set to 0 if not used, 0 is default
Define LCD_RWBIT = 0  'set to 0 if not used, 0 is default
Define LCD_COMMANDUS = 5000  'delay after LCDCMDOUT, default value is 5000
Define LCD_DATAUS = 50  'delay after LCDOUT, default value is 50
Define LCD_INITMS = 100  'delay used by LCDINIT, default value is 100
'the last three Define directives set the values suitable for simulation; they should be omitted for a real device
Lcdinit
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
AllDigital
TRISA.0 = 1  'configuro RA0 como entrada
TRISC.5 = 0  'RC5 como salida
'Define COUNT_MODE = 1
Dim entrada As Word
Dim voltaje As Single  'word
'Dim decima As Word  'variable para displayar las decimas de voltios
ADCON1 = 0  'conversor AD de an0 on
Lcdcmdout LcdLine1Clear
main:
Adcin 0, entrada
voltaje = (entrada * 5) / 1023
Lcdcmdout LcdLine1Home  'set cursor at the beginning of line 2
Lcdout "entrada: ", #voltaje, "v      "
'WaitMs 100
Goto main
Saludos desde Granada, España.

Desconectado EA7LN

  • PIC10
  • *
  • Mensajes: 36
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #718 en: 08 de Agosto de 2011, 11:51:51 »
La coma flotante es un módulo que hay que comprar a parte, te tiene que salir en el IDE los siguiente para que esté activado.



No he trabajado con coma flotante porque los micros que estoy utilizando últimamente tienen 1Kword de flash y la coma flotante es nueva y ocupa mucha memoria flash, por lo que no se si funciona bien, creo que debe de ir bien porque no ha salido ninguna otra versión para corregir errores. En general en el caso de errores en el PSI sale una nueva versión de un dia para otro y los usuarios registrados recibimos un aviso.


Gracias por tu respuesta dogflu66, ya me funciona.
El problema es que solo funciona con una variable tipo single y yo la dimensionaba como word.
Saludos
Cada dia aprendo algo nuevo. ¡Cuanto me queda por aprender!

Desconectado jrody

  • PIC10
  • *
  • Mensajes: 25
Re: PIC BASIC del PIC Simulator IDE
« Respuesta #719 en: 11 de Agosto de 2011, 01:09:03 »
hola amigos de TODOPIC.
Solicito su ayuda por favor, tengo el siguiente problema.

Tengo una variable tipo WORD. Es un registro de eventos que necesito almacenar y no perder por cortes de energia. Asi que lo guardo en memoria EEPROM. El problema esta en que solo me guarda hasta 255 y reinicia el conteo de 0.
Como puedo hacer para guardar datos mayores a 255 por ejempo 23456 y poder leerlo cuando quiera..
Anexo una parte de rutina de mi programa: Saludos y gracias



tventas var word    ;Variable que cuenta el total recibidos en monedas
credito var byte    ;Varibale credito
read 10, tventas    ;lee de la EEPROM a una variable tventas (total de ventas)
read 12
read 14

printvtotal:                           
  lcdout $fe, 1                             ;limpia display
  lcdout $fe, $80, "TOTAL VENTAS"           ;escribe en display 1ra fila
  lcdout $fe, $c0, "$", dec tventas, ".00"  ;muestra en display signo $ y total de pesos recibidos

grabatventas:                        ;para incrementar evento
  tventas = tventas + credito        ;sumar a total de ventas la cantidas de credito pesos recibidos
  write 10, tventas                  ;grabar total de ventas en memoria EEPROM direccion 10
  write 12
  write 14
end