3er Clace
Posteado por Raul Alejandro QL
Básicamente el microccontrolador manipula datos, bit's, unos y ceros, estos datos se encuentran en la memoria de datos y la memoria de programa (RAM y ROM respectivamnete), en la presente se explican las formas de manipulacion de esos datos, visto que estos datos estan en direcciones de memoria, se le denomina direccionamiento de memoria.
Existen seis formas de direccionamiento de memoria.
El direccionamiento inmediato es como su nombre lo indica de forma inmediata, no requiere mover el dato de una memoria a otra, o usando un delator, solo se coloca en una memoria un dato inicial. Ejemplo.
mov a,#77h ; incrementar el acumulador "A"
El acumulador en este caso recibe inmediatamente el dato 77 en hexa. Este direccionamiento es facil de reconocer, siempre usa "#".
Significa que los datos se direccionan directamente, es simple. Para comprender esto mas facilmente he aqui el siguiente ejemplo:
mov a,3Ch ; mover al acumulador A el dato 3C en hexadecimal
El microcontrolador de arquitectura 8051 posee dos acumuladores, acumulador "A" y "B", el codigo carga al acumulador "A" con el dato de la direccion de memoria 3C en formato Hexadecimal (h).
El direccionamiento por registro, es simple, los microcontroladores de la familia 8051 poseen 8 registros desde el r0,r1,r2, . . . al r7 y existen 4 bancos de cada uno de estos 8 registros. Este direccionamiento es cargar datos a los registros Ejemplo.
mov r0,#20h ; mover al registro r0 el dato 20 en hexadecimal
Este tipo de direccionamiento requiere de un intermediario, para explicarlo usare una analogia. Un policia un ladron y un soplom, el policia busca capturar al ladron pero no sabe donde se encuentra este, asi que recurre a uno de sus soplones el cual le indica la direccion del escondite del ladron, asi que el policia lo captura, la nueva direccion del ladron es la carcel.
mov r0,#20h ; mover al registro r0 el dato 20 en hexadecimal mov a,@r0 ; mover al acumulador A el dato 3C en hexadecimal
En el codigo el registro r0 se carga con el dato 20h, y el acumulador a recive el dato de la memoria a la cual apunta el registro r0, en este caso el acumulador se carga con el dato de la memoria 20h, de forma indirecta de allli el nombre, en este caso segun la analogia el r0 es el soplon, el acumulador "A" es la carcel y el ladron es el dato que no conocemos y que se encuentra en la direccion de memoria 20h.
Nota: los registros delatores o punteros son solo el r0 y el r1.
Algunas instrucciones son tan simples que en la misma instruccion viene indicada la forma en que se modificaran los datos. Un ejemplo.
inc a ; incrementar el acumulador "A" dec dptr ; decrementar el "dptr"
Como se ve estas instrucciones son claras y no requieren de muchos operandos, su funcionalidad viene implicita en la instruccion.
Los direccionamientos hasta ahora aprendidos manipulan los datos de la memoria RAM memoria de datos, este direccionamiento indexado es para manipular la memoria de codigo o programa, se usa bastante en tablas. Existe un caplitulo dedicado a este, por tanto los ejemplos se encuentran alli,
En el siguiente codigo, determine cual es el tipo de direccionamiento de cada una de las instrucciones.
mov b,57h ; incrementar el acumulador "A" mov a,#33d ; mover al acumulador a el dato 33 en decimal mov r7,22h ; mover a r7 el dato de la memoria 22 en hexa mov dptr,#1234h ; mover al dptr en dato 1234 en hexa inc a ; incrementar a rol a ; rotar el acumular a a la izquierda mov a,@r1 ; mover al acumulador a en dato al que apunta r1
Parece un poco complicado la primera vez que se ven todas formas de direccionamiento de memoria, no te preocupes si no las entiendes pero si por lo corto dale una repasada y pasa a la siguiente leccion, conforme sigas avansando se reforsaran estos temas.
S U E R T E
Si te gustó el contenido de esta pagina, considera compartirlo en tus redes sociales, haz clic en me gusta de facebook, Twittea, y vota +1 en Google Plus.
Resumen del 8051