Sie sind auf Seite 1von 54

Facultad de Ingeniera

INTRODUCCIN A LA PROGRAMACIN Microcontrolador PIC 16F84

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

CARACTERISTICAS La estructura del microcontrolador

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Alimentacin : El PIC se alimenta a 5 V entre los puntos Vdd (+) y Vss (-). El consumo del circuito depende de las cargas en los puertos y de la frecuencia de trabajo.

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Frecuencia de trabajo: Los PIC's necesitan un reloj oscilador que marcar la frecuencia de trabajo. Estos osciladores pueden ser del tipo :
RC Formado por una resistencia y un condensador HS seutiliza un cristal de cuarzo o resonador cermico (Hasta 10 Mz) XT Cristal o resonador hasta 4 Mhz LP Bajo consumo (hasta 200Khz) Los osciladores se colocan entre las patillas OSC1 y OSC2

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

PUERTOS DE ENTRADA/SALIDA Los puertos son entradas y salidas del microcontrolador al exterior, por ellas enviaremos o introducimos seales digitales TTL (5V) de forma que podemos comunicar el microcontrolador con el exterior. En este caso tenemos 2 puertos de entrada y salida E/S. Sus nombres son RA y RB. El puerto RA tiene 5 pins RA0-RA4, un caso particular es RA4/TOCK1 que puede actuar como pin de entrada o como entrada de impulsos para un contador denominado TMRO El puerto B tien 8 lneas que van desde RB-RB7 .Cada lnea del RA o del RB se puede configurar como entrada o salida mediante 2 registros llamados TRISA y TRISB
Robtica Ing. Csar Reyes

Facultad de Ingeniera

PUERTOS DE ENTRADA/SALIDA

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

PIC's 16F84 con el puerto RA como entrada y el puerto RB como salida. Utilizaremos como entrada unos micro interruptores y como salida unos leds conectados al puerto RB0-RB7

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

RESET MANUAL En el caso de que sea necesario se puede aplicar un reset manual a la patilla MCLR mediante un pulsador y una resistencia. La siguiente figura muestra una configuracin bsica para realizar un reset manual

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Memorias.
Todo dispositivo programable necesita de una memoria para poder almacenar el programa, poder manejar variables y almacenar datos. MEMORIA DE PROGRAMA En el PIC 16F84 la memoria de programa o de instruciones es una memoria tipo FLASH de 1K. En esta memoria microcontrolador almacenaremos el programa que ejecutar el

Existe un registro especial llamado contador de programa PC cuya finalidad es avanzar por las instrucciones del programa de forma secuencial excepto cuando se encuentran instrucciones de salto.

Robtica

Ing. Csar Reyes

Mapa de memoria de datos Facultad de Ingeniera

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

OTRAS CARACTERISTICAS Dentro del microcontrolador hay unos registros especiales que determinan algunas de las caractersticas notables del microcontrolador: - Temporizador/Contador TMR0 - Perro guardin watch Dog (WD) - Interrupciones. -Reset .(Reinicio del sistema) Estas caractersticas se explicarn mas adelante en el apartado correspondiente a la programacin

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

ESTRUCTURA DE UN PROGRAMA EN ENSAMBLADOR Tipos de Ficheros:

Los ficheros de cdigo fuente llevarn la extensin *.ASM Los ficheros de listado llevarn la extensin *.LST Los ficheros de errores llevarn la extensin *.ERR Los ficheros ejecutables en formato Intel Hex llevarn la extensin *.HEX

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

ESTRUCTURA EN UN PROGRAMA EJEMPLO MUY SIMPLE

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Hemos visto la estructura general. Ahora veremos la posicin de los elementos del cdigo por 4 columnas:

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

TIPO
Decimal

SINTAXIS
D<cantidad> d <cantidad> . <cantidad>

EJEMPLO
MOVLW MOVLW MOVLW D10 d10 .10

Hexadecimal

H<cantidad> h <cantidad> 0x<cantidad> <cantidad>H <cantidad>h

MOVLW MOVLW MOVLW MOVLW MOVLW

H4A h4A 0x4A 4AH 4Ah

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

TIPO
Octal

SINTAXIS
O<cantidad> o <cantidad>

EJEMPLO
MOVLW MOVLW O150 o150

Binario

B<cantidad> b <cantidad>

MOVLW MOVLW

B01011010 b01011010

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

TIPO
ASCII

SINTAXIS
A<carcter> a<carcter> <carcter> <string>

EJEMPLO
MOVLW MOVLW MOVLW AM aM M

String o Cadena de caracteres

DT Estudia UPN

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Instrucciones de Gama Media

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Lgicas AND:


ANDLW W AND literal Sintaxis: [label] ANDLW k Operacin: : (W) AND (k) (W) Descripcin: Realiza la operacin lgica AND entre el contenido del registro W y k, guardando el resultado en W. Ejemplo: Antes: Despus: ANDLW 0xC2 W = 0x17 W = 0x02

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Lgicas AND:


ANDWF W AND F Sintaxis: [label] ANDWF f,d Operacin: (W) AND (f) (dest) Descripcin: Realiza la operacin lgica AND entre los registros W y f. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: : Antes: Despus: ANDWF REG,1 W = 0x17, W = 0x17, REG = 0xC2 REG = 0x02

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Lgicas OR:


IORLW W OR literal Sintaxis: [label] IORLW k Operacin: : (W) OR (k) (W) Descripcin: Se realiza la operacin lgica OR entre el contenido del registro W y k, guardando el resultado en W. Ejemplo: : Antes: Despus: IORLW 0x35 W = 0x9A W = 0xBF

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Lgicas OR:


IORWF W OR F Sintaxis: [label] IORWF f,d Operacin: (W) OR (f) (dest) Descripcin: Realiza la operacin lgica OR entre los registros W y f. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: : Antes: Despus: IORWF REG,0 W = 0x91, W = 0x93, REG = 0x13 REG = 0x13

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Lgicas XOR:


XORLW W XOR literal Sintaxis: [label] XORLW k Operacin: : (W) XOR (k) (W) Descripcin: Se realiza la operacin lgica XOR entre el contenido del registro W y k, guardando el resultado en W. Ejemplo: : Antes: Despus: XORLW 0xAF W = 0xB5 W = 0x1A

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Lgicas XOR:


XORWF W XOR F

Sintaxis: [label] XORWF f,d Operacin: (W) XOR (f) (dest) Descripcin: Realiza la operacin lgica XOR entre los registros W y f. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: : Antes: Despus: XORWF REG,1 W = 0xB5, W = 0xB5, REG = 0xAF REG = 0x1A

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Lgicas COMF:


COMF Complemento de f

Sintaxis: [label] COMF f,d Operacin: : (/ f), 1 (dest) Descripcin: El registro f es complementado. El flag Z se activa si el resultado es 0. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f.. Ejemplo: : Antes: Despus: COMF REG,0 REG = 0x13 REG = 0x13,

W = 0XEC

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Movimientos MOV:
MOVLW Cargar literal en W Sintaxis: [label] MOVLW f Operacin: (k) (W) Descripcin: El literal k pasa al registro W. Ejemplo: Despus: MOVLW 0x5A W = 0x5A

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Movimientos MOV:
MOVF Mover a f

Sintaxis: [label] MOVF f,d Operacin: (f) (dest) Descripcin: El contenido del registro f se mueve al destino d. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Permite verificar el registro, puesto que afecta a Z. Ejemplo: MOVF REG,0

Despus:

W = REG

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Movimientos MOV:
MOVWF Mover a f

Sintaxis: [label] MOVWF f Operacin: W (f) Descripcin: El contenido del registro W pasa el registro f. Ejemplo: MOVWF REG,1

Antes: REG = 0xFF, W = 0x4F Despus: REG = 0x4F, W = 0x4F

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Movimientos SWAPF:
SWAPF Intercambio de f Sintaxis: [label] SWAPF f,d Operacin: : (f <3: 0>) (f <7:4>) Descripcin: Los 4 bits de ms peso y los 4 de menos son intercambiados. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: : SWAPF REG,0

Antes: REG = 0xA5 Despus: REG = 0xA5, W = 0x5A

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Matemticas SUMA:


ADDLW Suma un literal Sintaxis: [label] ADDLW k Operacin: : (W) + (k) (W) Descripcin: Suma el contenido del registro W y k, guardando el resultado en W.

Ejemplo: Antes: Despus:

ADDLW 0xC2 W = 0x17 W = 0xD9

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Matemticas SUMA:


ADDWF W + F Sintaxis: [label] ADDWF f,d Operacin: (W) + (f) (dest) Descripcin: Suma el contenido del registro W y el registro f. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: Antes: Despus: ADDWF REG,0 W = 0x17, W = 0xD9, REG = 0xC2 REG = 0xC2

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Matemticas RESTA:


SUBLW Resta Literal - W Sintaxis: [label] SUBLW k Operacin: ( k ) - (W) (W) Descripcin: Mediante el mtodo del complemento a dos el contenido de W es restado al literal. El resultado se almacena en W. Ejemplos: SUBLW 0x02

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Operaciones Matemticas RESTA:


SUBWF Resta f W

Sintaxis: [label] SUBWF f,d Operacin: ( f ) (W ) (dest) Descripcin: Mediante el mtodo del complemento a dos el contenido de W es restado al de f. . Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplos: Antes: Despus: SUBWF REG,1 REG = 0x03, REG = 0x01,

W = 0x02, W = 0x4F,

C=? C=1

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Borrar Registros CLR:


CLRW Borra el registro W Sintaxis: [label] CLRW Operacin: : 0x00 W, 1 Z Descripcin: El registro de trabajo W se carga con 0x00. El flag Z se activa. Ejemplo: : Antes: Despus: CLRW W = 0x5A W = 0x00,

Z=1

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Borrar Registros CLR:


CLRF Borra un registro

Sintaxis: [label] CLRF f Operacin: : 0x00 (f), 1 Z Descripcin: El registro f se carga con 0x00. El flag Z se activa. Ejemplo: : Antes: Despus: CLRF REG REG = 0x5A REG = 0x00,

Z=1

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Decremento y Incrementos DECREMENTOS:


DECF Decremento de f Sintaxis: [label] DECF f,d Operacin: : (f ) 1 (dest) Descripcin: Decrementa en 1 el contenido de f. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: : Antes: Despus: DECF CONT,1 CONT = 0x01, Z = 0 CONT = 0x00, Z = 1

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Decremento y Incrementos DECREMENTOS Y SALTO:


DECFSZ Decremento y salto Sintaxis: [label] DECFSZ f,d Operacin: (f) -1 d; Salto si R=0 Descripcin: Decrementa el contenido del registro f. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Si la resta es 0 salta la siguiente instruccin, en cuyo caso costara 2 ciclos. Ejemplo: DECFSC REG,0 GOTO NO_ES_0 SI_ES_0 Instruccin .. NO_ES_0 Salta instruccin anterior ..
Ing. Csar Reyes

Robtica

Facultad de Ingeniera

Decremento y Incrementos INCREMENTOS:


INCF Incremento de f Sintaxis: [label] INCF f,d Operacin: : (f ) + 1 (dest) Descripcin: Incrementa en 1 el contenido de f. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: : Antes: Despus: INCF CONT,1 CONT = 0xFF, CONT = 0x00, Z=0 Z=1

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Decremento y Incrementos INCREMENTOS Y SALTO:


INCFSZ Incremento y salto Sintaxis: [label] INCFSZ f,d Operacin: (f) -1 d; Salto si R=0 Descripcin: Incrementa el contenido del registro f. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Si la resta es 0 salta la siguiente instruccin, en cuyo caso costara 2 ciclos. Ejemplo: INCFSC REG,0 GOTO NO_ES_0 SI_ES_0 Instruccin .. NO_ES_0 Salta instruccin anterior ..
Ing. Csar Reyes

Robtica

Facultad de Ingeniera

Borrar Registros CLR:


CLRWDT Borra el WDT Sintaxis: [label] CLRWDT Operacin: 0x00 WDT, 1 /TO 1 /PD Descripcin: Esta instruccin borra tanto el WDT como su preescaler. Los bits /TO y /PD del registro de estado se ponen a 1. Ejemplo: : Despus: CLRWDT Contador WDT = 0, Preescales WDT = 0,

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Rotaciones ROTA A LA IZQUIERDA:


RLF Rota f a la izquierda Sintaxis: [label] RLF f,d Operacin: Rotacin a la izquierda Descripcin: El contenido de f se rota a la izquierda. El bit de menos peso de f pasa al carry (C), y el carry se coloca en el de mayor peso. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: RRF REG,0

Antes: Despus:

REG = 1110 0110, REG = 1110 0110,

C=0 W = 1100 1100,

C=1

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Rotaciones ROTA A LA DERECHA:


RRF Rota f a la derecha

Sintaxis: [label] RRF f,d Operacin: Rotacin a la derecha Descripcin: El contenido de f se rota a la derecha. El bit de menos peso de f pasa al carry (C), y el carry se coloca en el de mayor peso. Si d es 0, el resultado se almacena en W, si d es 1 se almacena en f. Ejemplo: RRF REG,0

Antes: Despus:

REG = 1110 0110, REG = 1110 0110,

C=1 W = 01110 0011, C = 0

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales SALTO INCONDICIONAL:


GOTO Salto incondicional

Sintaxis: [label] GOTO k Operacin: k PC <8:0> Descripcin: Se trata de un salto incondicional. La parte baja de k se carga en PCL, y la alta en PCLATCH. Ocupa 2 ciclos de reloj. Ejemplo: ORIGEN GOTO DESTINO Antes: Despus: PC = ORIGEN PC = DESTINO

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales SALTO A LA SUB-RUTINA:


CALL Salto a subrutina

Sintaxis: [label] CALL k Operacin: PC Pila; k PC Descripcin: Salto a una subrutina. La parte baja de k se carga en PCL, y la alta en PCLATCH. Ocupa 2 ciclos de reloj. Ejemplo: ORIGEN CALL DESTINO Antes: Despus: PC = ORIGEN PC = DESTINO

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales TEST BIT Y SALTA:


BTFSC Test de bit y salto Sintaxis: [label] BTFSC f,d Operacin: Salto si (f<b>) = 0 Descripcin: Si el bit b del registro f es 0, se salta una instruccin y se contina con la ejecucin. En caso de salto, ocupar dos ciclos de reloj. Ejemplo: BTFSC REG,6 GOTO NO_ES_0 SI_ES_0 Instruccin NO_ES_0 Instruccin

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales TEST BIT Y SALTA:


BTFSS Test de bit y salto Sintaxis: [label] BTFSS f,d Operacin: Salto si (f<b>) = 1 Descripcin: Si el bit b del registro f es 1, se salta una instruccin y se contina con la ejecucin. En caso de salto, ocupar dos ciclos de reloj. Ejemplo: BTFSS REG,6 GOTO NO_ES_0 SI_ES_0 Instruccin NO_ES_0 Instruccin

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales BORRA UN BIT:


BCF Borra un bit

Sintaxis: [label] BCF f,b Operacin: : 0 (f<b>) Descripcin: Borra el bit b del registro f Ejemplo: : Antes: Despus: BCF REG,7 REG = 0xC7 REG = 0x47

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales ACTIVA UN BIT:


BSF Activa un bit

Sintaxis: [label] BSF f,b Operacin: 1 (f<b>) Descripcin: Activa el bit b del registro f Ejemplo: : Antes: Despus: BSF REG,7 REG = 0x0A REG = 0x8A

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales NO OPERAR:
NOP No operar

Sintaxis: [label] NOP Operacin: No operar Descripcin: No realiza operacin alguna. En realidad consume un ciclo de instruccin sin hacer nada. Ejemplo: : Despus: CLRWDT Contador WDT = 0, Preescales WDT = 0, /TO = 1, /PD = 1

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales BAJO CONSUMO:


SLEEP Modo bajo consumo Sintaxis: [label] SLEEP Operacin: 0x00WDT, 1 / TO 0 WDT Preescaler, 0 / PD

Descripcin: El bit de energa se pone a 0, y a 1 el de descanso. El WDT y su preescaler se borran. El micro para el oscilador, llendo al modo durmiente.
Ejemplo: : SLEEP

Preescales WDT = 0, /TO = 1, /PD = 1

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales RETORNO DE RUTINA:


RETURN Retorno de rutina Sintaxis: [label] RETURN Operacin: : TOS PC Descripcin: El PC se carga con el contenido de la cima de la pila (TOS): direccin de retorno. Consume 2 ciclos. Ejemplo: : RETURN

Despus: PC = direccin de retorno

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales RETORNO DE INTERRUPCIN:


RETFIE Retorno de interrup. Sintaxis: [label] RETFIE Operandos: Ninguno Descripcin: El PC se carga con el contenido de la cima de la pila (TOS): direccin de retorno. Consume 2 ciclos. Las interrupciones vuelven a ser habilitadas. Ejemplo: : RETFIE

Despus:

PC = direccin de retorno GIE = 1

Robtica

Ing. Csar Reyes

Facultad de Ingeniera

Generales RETORNO, CARGA W:


RETLW Retorno, carga W Sintaxis: [label] RETLW k Operacin: : (k) (W); TOSPC Descripcin: El registro W se carga con la constante k. El PC se carga con el contenido de la cima de la pila (TOS): direccin de retorno. Consume 2 ciclos. Ejemplo: : Despus: RETLW 0x37 PC = direccin de retorno W = 0x37

Robtica

Ing. Csar Reyes

Das könnte Ihnen auch gefallen