ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Tecnicas De Programacion


Enviado por   •  18 de Septiembre de 2012  •  382 Palabras (2 Páginas)  •  436 Visitas

Página 1 de 2

Movimiento de datos

El juego de instrucciones reducido, y su tamaño de 14 bits, hacen que el PIC16F84A tenga una serie de restricciones. Por un lado no se pueden especificar dos registros dentro de una instrucción. Cada registro necesita 7 bits para especificar la dirección, pero también hay que especificar el código de la instrucción y qué hacer con ella. La solución es realizar todo a través del registro de trabajo o w que no necesita dirección y está situado dentro de la CPU del microcontrolador. Una transferencia de un registro a otro necesitaría dos instrucciones. Supongamos que tenemos que transferir un dato al puerto B:

MOVF DATO, W ; copia el contenido del registro DATO en W

MOVWF PORTB ; copia el contenido de W en el Puerto B

Nota: En todos los ejemplos consideramos que w = 0 y que f = 1, esto significa que MOVF DATO, W es lo mismo que MOVF DATO, 0

La primera instrucción tiene la forma MOVF f,d que copia el registro f en el destino especificado por d (w en este caso). La segunda instrucción simplemente mueve cualquier dato contenido en w en el registro f, que en este caso es el puerto B.

El registro DATO permanece invariable en la primera instrucción y w permanece invariable en la segunda, de manera que estas instrucciones se parecen más a una copia que a un movimiento de datos.

Las instrucciones con literales no tienen espacio para contener la dirección de un registro, por eso debemos utilizar el registro de trabajo w para cargar un registro con un literal y también se necesitan dos instrucciones.

MOVLW 0xAA ; coloca el valor 10101010 en W

MOVWF DATO ; copia W en el registro DATO

Esto mismo se aplica cuando se usan operaciones booleanas, de suma y de resta entre literales y registros. Todas necesitan dos instrucciones:

MOVLW k ; copia el literal en W

SUBWF f,d ; copia el resultado de restar W de f en d

Supongamos que queremos poner a cero el nibble inferior

MOVLW 0xF0 ; ponemos una mascara ('11110000')

ANDWF DATO, f ; el resultado de DATO AND 0xF0 se coloca en DATO

Las instrucciones de un solo operando son fáciles de entender:

• CLRF f, Pone todos los bits del registro f a cero

• CLRW, Pone todos los bits de W a cero

• BCF f,b, Pone a cero el bit b del registro f

• BSF f,b, Pone a cero el bit b del registro f

...

Descargar como (para miembros actualizados) txt (2 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com