Sábado 16 de Noviembre de 2024, 23:30
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Específica
»
Microcontroladores
(Moderador:
© Jonathan ©
) »
Manejo De Tablas...
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Manejo De Tablas... (Leído 1714 veces)
eliza_marti
Miembro MUY activo
Mensajes: 267
Manejo De Tablas...
«
en:
Martes 8 de Marzo de 2005, 16:22 »
0
Holas Chicos!.
...Gracias por su atención!..pasa que tengo ciertas dudas con el manejo de tablas
..les explico:
Primero llamo a la tabla dentro de mi programa principal asi:
Código: Text
programa
call tabla
movwf PORTB
goto programa
y antes porsupuesto tengo la definicion de la tabla asi:
Código: Text
tabla
movf TMR0,0
andlw 0fh
addwf PCL,1
retlw 3fh
retlw 06h
retlw 5bh
retlw 4fh
retlw 66h
retlw 6dh
retlw 7dh
retlw 07h
retlw 7fh
retlw 67h
retlw 77h
retlw 7ch
retlw 39h
retlw 5eh
retlw 79h
retlw 71h
Como se daran cuenta el acumulador w se carga dentro de la tabla (andlw 0fh)..bueno ..como todos sabemos el PC contiene la siguiente direccion a ejecutarse pero a excepcion de un call y otros....entonces en mi caso..en el momento en que hago el call el Pc tendrá la dirección de tabla..(corrijanme porfavor si estoy mal)..luego en tabla..el PC se cargará con la dirección de tabla + 0fh....no?...ahora esta es mi duda ......
NO entiendo la logica de funcionamiento ...si en mi ejemplo siempre le sumo al PC el mismo valor (que le asigno dentro de tabla)..comparará siempre el mismo valor?...mmmm..entonces ...quiere decir que mi tabla comparará de 0f en 0f?.....ahora si tabla está en 10h y le sumo al pc 0fh entonces con el addwf PCL,1 ..el PC tendrá.. (10h +0f) ?..y en mi tabla que está arriba no existe esa posición para devolverle algo a W (solo hay hasta 15)...(como funciona?)...
Si alguien podría explicarme se lo agradecia mucho..
Gracias por su tiempo!.. espero sus respuestas!..
Tweet
Conserva la Paz con tu Alma en la bulliciosa confusión de la vida, aún con toda su farsa, penalidades y sueños fallidos, el mundo es todavia Hermoso....
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
[
Huguen_aus_Tirol
Miembro MUY activo
Mensajes: 318
Re: Manejo De Tablas...
«
Respuesta #1 en:
Martes 8 de Marzo de 2005, 17:52 »
0
Hola! El PC se carga con el valor que contiene más el valor que tenga W. La instruccion ANDLW 0x0F es para eliminar el nibble alto de W (los bits 4 a 7), de esta forma la longitud máxima del salto es 16 decimal. Si no haces esto, y tienes 16 RETLW, te puedes pasar de largo en la tabla y saltar a algún lugar fuera de ella; con esto se pierde el control del programa.
En tu caso, si tu tabla se inicia en 0x10, en ningún caso va a saltar más alla de 0x0F; no importa que en TMR0 tengas un valor mayor a 0x0F, ya que se filtra con el AND.
Bueno, espero haber sido más o menos claro...
Ah!!! Otra cosa! Debes fijarte donde pones la tabla, porque si PCL se sobrepasa, el registro PCLATH no se incrementa automáticamente!!! Si está en 0x10 no hay problema, pero si está, p.e., en 0xFA (por decir una dirección) hay que tener cuidado. Se puede solucionar con soft...
Todavía recuerdo los dolores de cabeza que me dió...
Buano, saludos y suerte!
eliza_marti
Miembro MUY activo
Mensajes: 267
Re: Manejo De Tablas...
«
Respuesta #2 en:
Martes 8 de Marzo de 2005, 19:54 »
0
Gracias Huguen_aus_Tirol por reponderme!..
....Ahora ya entendí lo de las tablas..
...aqui les dejo un ejemplo básico que me ayudó a comprender!..
..si alguien lo necesita ..(está adjuntado..)..
Bueno..bye..Muchas Gracias!.
..seguiré practicando!..
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Conserva la Paz con tu Alma en la bulliciosa confusión de la vida, aún con toda su farsa, penalidades y sueños fallidos, el mundo es todavia Hermoso....
http]
programacion
,
c
,
c++
,
C#
,
java
,
linux
,
videojuegos
,
directX
,
.NET
,
allegro
,
asm
,
codigo
[
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Específica
»
Microcontroladores
(Moderador:
© Jonathan ©
) »
Manejo De Tablas...