Está en la página 1de 9

INSTRUCCIONES DE LOS MICROCONTROLADORE PIC 16F87XX EN LENGUAJE ENSAMBLADOR(Incompleto) MUOZ CANALES RICARDO ALONSO ramc2402@gmail.

.com Instrucciones soportadas por el micro-controlador:

De manejo de Literales: movlw k: Carga el valor del literal k al registro de trabajo (W). movlw .5 == 5 W addlw k: Suma el valor del literal k con el valor del registro W. y lo guarda en el registro w. addlw .5 == .5 +W W sublw k: Resta el valor del literal k con el contenido del registro W, y lo guarda en el registro w. sublw .5 == .5-W W andlw k: Realiza la operacin lgica AND entre el valor del literal k y W, y lo guarda en el registro w. andlw .5 == .5 and W W

iorlw k: Realiza la operacin lgica OR entre el valor del literal K y el registro W, y guarda el resultado en el registro W. iorlw .5 == .5 OR W W - xorlw k: Realiza la operacin lgica XOR entre el valor literal K y el Registro W, y lo guarda en el registro W. xorlw .5 == .5 XOR W W De manejo de Registros: movf f,d: copia el contenido del registro f a la direccin indicada por d(0 W// 1 f) - movf 20h,0 == 20h 0 (W) movf 20h,1 == 20h 1 (20h), En particular no es usada esta ltima opcin movwf f: copia el contenido del registro W al registro f movwf f == W f addwf f,d: Suma el contenido del registro f con el contenido del registro W, y lo guarda en d. addwf 20h,0 == (20h)+W W addwf 20h,1 == (20h)+W 20h subwf f,d: Resta el contenido del registro f menos el contenido del registro W, y lo guarda segn d . subwf 20h,0 == (20h)-W W andwf f,d: Realiza la operacin lgica AND entre el contenido del registro f y el de W, y lo guarda segn d. andwf 20h,0 == (20h) AND W W iorwf f,d: Realiza la operacin lgica OR entre el contenido de los registros f y W, y lo guarda segn indica d. iorwf 20h,1== (20h) OR W 20h

xorwf f,d: Realiza la operacin lgica XOR entre en el contenido de los registro F y W, y lo guarda segn indica d. xorwf 21h,1 == (21h) XOR W W swapf f,d: Intercambia de lugar los nibles mayor y menor del registro f xeje: sea 21h=63= B0011111=3Fh; donde lo nibles son las agrupaciones de 4 bits en un registro en este caso tenemos 2, ya que nuestro uC trabaja con datos de 8 bits y esta operacin es apreciable para usuario al estar en cdigo binario o mejor an hexadecimal. swapf 21h,0 == swapf B0011111==swapf 3Fh==//== B11110011==F3h 21h

comf f,d: Realiza el complemento del contenido del registro f y lo guarda segn d.

incf f,d: Incrementa el contenido de lregistro f en 1, y lo guarda segn d. decf f,d : decrementa el contenido en 1 el registro f, y lo guarda segn d. incfsz f,d : Incrementa en 1 el registro f y salta si el resultado es cero, guarda segn d el resultado. Decfsz f,d: decrementa en 1 el registro f y salta si el resultado es cero, guarda segn d el resultado Clrf f : borra el contenido de lregistro f Clrw : borra el contenido de lregistro W Clrwdt : borra el contenido del registro wdt(watch dog- Perro guardan)

DIRECTIVAS: Son instrucciones de ejecucin para el ensamblador, no para el pic, realizan funciones especiales relacionadas con el lenguaje propiamente dicho. LIST: Indica el dispositivo para el cual se est realizando el programa. Por ejemplo: LIST P=16F877; LIST P=16F84; LIST P=18F2550 EQU: Realiza la operacin de equivalencies para definer las constants sean literales o registros. Por ejemplo: VECES EQU 21H ORG: Indica desde que posicin empieza a ejecutarse el programa. Eje: ORG 0x00, ORG 20H END: Indica el final del programa. CONSTANTES: Valores definidos en el programa las cuales no cambian su valor.

DIRECCIONAMIENTO DE MEMORIA Es la forma en que el uC realiza la bsqueda de direcciones indicada por las instrucciones, para la ejecucin de estas. Existen diversas formas de Direccionamiento que solo estn disponibles ciertos tipo de uC, en nuestro caso solo veremos 2: Direccionamiento Directo Direccionamiento Indirecto Direccionamiento Directo Esta forma de direccionamiento es ejecuta en forma explcita por la instruccin, ya que en ella se incluye la operacin (Op- Code) y la direccin de la instruccin a trabajar. Ejemplo: movlw .1 ; se carga el literal 1 en el registro W movwf 20H ; copia el contenido del registro W a la direccin 20H movwf 21H; copia el contenido del registro W a la direccin 21H movwf 22H, copia el contenido del registro W a la direccin 22H

Direccionamiento Indirecto Este direccionamiento se caracteriza por usar un puntero para realizar la operacin(s) a la direccin que se desea trabajar. Puntero: Registro que contiene la direccin a la que se acceder.

Ejemplo: Cargar a 20H con el nmero 5 Modo Directo: Modo Indirecto: movlw .5 movwf 20H movlw 20H movwf FSR movlw .5 movwf INDF

Sumar el contenido de los registros 20H+21H y guardarlos en 22H Modo Directo Modo Indirecto: movf 20H,0 addwf 21H,0 movwf 22H movlw 20H movwf FSR movf INDF,0 incf FSR,1 addwf INDF,0 incf FSR,1 movwf INDF

Cuando se realiza el direccionamiento Directo la disposicin de memoria est dividida en 4 bancos, controlados por los bits RP0 y RP1 del registro STATUS. Pero cuando se realiza el direccionamiento Indirecto nuestra disposicin de memoria est dividida en 2 Bancos, controlador por el bit IRP del registro STATUS.

TABLAS DE BUSQUEDA: Mecanismo que tiene el PIC para almacenar un conjunto de datos fijos en la memoria de programa. Son usados es: Envo de mensajes al LCD Envo de mensaje a una impresora Codificacin/Decodificacin- teclado Generacin de Seales: Serial, COM, PWM, ETC,ETC

Sintaxis: movlw DIRECC call tabla --tabla addwf PCL ; PCL=PCL+W retlw dato_0 retlw dato_1 retlw dato_2 retlw dato_n --*No se debe realizar saltos a direcciones no especificadas de lo contrario habr un descontrol del PIC

Ejemplos de manejo de Tablas: a).- llamado aTabla de valores LIST P=16F877 INCLUDE <P16F877.INC> ORG 0 movlw .2; buscando en esta posicin a ser enviada al PC en la tabla call TABLA; llamando tabla

movlw .5 call TABLA movlw .0 call TABLA goto $; regresar aqu mismo, fin de la rutina TABLA addwf PCL,1; cargando valor buscado en el PC retlw .0; valor que ser cargado a W si es llamado retlw .1 retlw.2 retlw .3 retlw.4 retlw .5 END; fin del programa

Ejemplo 2: b).- Llenado de registros partiendo de un tabla

LIST P=16F877 INCLUDE <P16F877.INC> VECES EQU 20H DIRECC EQU 21H ORG 0 INICIO ; cargamos la cantidad de veces que se ejecutara la operacin movlw .10 movwf VECES movlw .0 movwf DIRECC, cargamos el aumento incial para el PC LAZO movf DIRECC,0 ; movemos el aumento inicial a w call TABLA; llamamos a tabla decf VECES,1; dmisnuimos en 1 la cantidad de veces incf DIRECC,1; aumentamos en 1 la direccin que se aumentar en PCL movlw .0 ; comprobaremos si VECES lleg a cero subwf VECES,0 btfss STATUS,Z; goto LAZO; si NO lleg a 0 continuamos con el LAZO goto INICIO; Reiniciando el programa SI VECES lleg a cero

TABLA addwf PCL,1; direcciona el contenido de DIRECC al PC, se aumenta el valor inicial de DIRECC W

DT 01h,02h, 03h, 04h,05h; otra forma de ordenar los valores de tabla DT 0Ah, 0Bh, 0Ch, 0Dh,0Eh; es indistinto se puede continuar en la fila anterior, pero por didctica se abri otra fila. END; fin de programa

CONTADOR/TEMPORIZADOR TMR0 TMR1 TMR2 TMR0 Es un temporizador/contador del PIC 16f877A permite 2 modos de funcionamiento (segn la fuente de Reloj): Reloj externo, MODO CONTADOR: trabaja como un contador de eventos, y el bit de registro establece el ndice de pre-escaler, para retardar el desbordamiento del FLAG T0F Se caracteriza por realizar un conteo a partir de la posicin X , ingresada por el usuario hasta llegar a 255+1=0, activando el Flag y avisndonos que realiz esa tarea, luego sigue realizando el conteo infinitamente sin ninguna accin adicional.

Estructura Interna TMR0 1


Frmulas para clculo de tiempo:

Para clculo de tiempo deseado

T=(256 - X) (n) (XTAL)

Para hallar el valor de X cuando se tiene un valor t prefijado, solo se despeja:

X=255 t/(n)4TXTAL

Ejemplo 1: Para un t=3ms y un XTAL de 20Mhz, hallar el valor de n y x para configurar el registro OPTION_REG. Solucin: X = 256 t/ n(XTAL) X=256 3000us/n(0.2us) = 256 15000/n ; donde n= 1,2,4,,256 ORG 0 banco 1 mov OPTION_REG, B11010110 banco 0 mov TMR0, .139 ESPERA J0 INTCON,T0IF,ESPERA Bcf INTCON,T0IF goto $ END Problema 2: Para un T= 10 ms con un XTAL de 4Mhz

Solucin:

X=256 t/n(4XTAL)

X=256 10000us/n(1us) X= 256 10000/n *Ayudndonos de Excel obtenemos X=217 n = 256 el menor error possible. *si al escoger n obtenemos resultados fraccionarios escogemos el ms prximo a un entero.

TIMER1 Este Timer permite 3 modos de funcionamiento: Modo Contador : Cuando recibe una seal externa. Modo Temporizador: cuando recibe la seal de un XTAL

También podría gustarte