TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: Vangeluz en 12 de Octubre de 2013, 21:20:23
-
Hola, que tal, estoy construyendo una rutina para numeros grandes ocupando 2 filas del LCD de doble fila, quisiera saber si en una tabla se puede poner un contenido que no sea solamente numeros o letras, porque crei haber visto por ahi, pero ahora no recuerdo.
Lo normal que entiendo y uso es para numeros o letras y es algo como:
Tabla
addwf pcl.f
retlw b'00000000' ; en binario
o sino retlw 'A' ; letras
o sino retlw 0x0F ; en hexadecimal
etc.
Llamandolos con un:
CONT equ 0x0c
carga
movlw d'10'
movwf CONT
decfsz CONT,f
call Tabla
goto carga
Esto a modo de ejemplo pero es lo que uso y entiendo, lo que queria usar y no se si se puede o como usarlo es algo asi:
Tabla
addwf pcl.f
retlw call rutina numero 0
retlw call rutina numero 1
etc ............
Osea lo que quisiera es ir a una determinada rutina segun la posicion que decrementa y se dirije el contador a determinada posicion de la tabla.
Cosa que no me sirve usar numeros porque no se como usarlos para mi proposito.
Estoy elaborando una rutina con los NUMEROS en LCD de 2 LINEAS, y los numeros estan generados para que ocupen las 2 LINEAS de la CGRAM del LCD.
Todos los numeros estan formados por 4 imagenes que son guardadas en la CGRAM del LCD
Ya armé, los codigos para cada numero del 0 al 9, funcionan bien, pero no encuentro rutina para llamarlos en secuencia.
Si alguien puede darme una ayudita se los agradezco. Muchas gracias !!!
-
Hola,
podrías hacer
Tabla
addwf pcl,f
goto rutina numero 0
goto rutina numero 1
...
Siempre y cuando uses Tabla mediante un call y cada subrutina de la tabla termine con un return/retlw/retfie
-
Hasta donde sé, sólo se puede utilizar retlw o en su defecto return; para retornar al punto en el cual se llamo a la subrutina de la tabla.
Tal vez se pueda implementar una tabla que en lugar de retlw contenga goto a distintas "funciones" y sí dentro de esas funciones colocar return. Algo así...
tabla
addwf pcl,f
goto primera
goto segunda
goto tercera
primera
...
...
..
return
segunda
..
..
..
return
tercera
..
..
..
return
chan!!!!! justo publicó primero BrunoF... me quedo tranquilo que no estaba tan equivocado en cuanto al concepto :D
-
Que super, gracias a ambos !!!, creo que con ese GOTO arreglaria todo, luego de la segunda rutina vuelvo con un GOTO al decremento del contador y repito el ciclo ... Muchas gracias !!!!
-
Gracias a ambos, el goto no se porque motivo pero no me funcionó, queria llamar a una rutina por medio de una tabla, pero para mi objetivo hice esto y si me funcionó
conteo
incf cont,1 ;incrementa unidades
movf cont,W ;Carga el dato uni
sublw d'10' ;Resta/compara con dato 10
btfsc STATUS,Z ;Son iguales (Z=1)??
goto cero ;
movf cont,W ;Carga el dato uni
sublw d'9' ;Resta/compara con dato 9
btfsc STATUS,Z ;Son iguales (Z=1)??
goto nueve ;
movf cont,W ;Carga el dato uni
sublw d'8' ;Resta/compara con dato 8
btfsc STATUS,Z ;Son iguales (Z=1)??
goto ocho ;
---------------------------- etc .....
return
Muchas gracias por su ayuda !!!