Está en la página 1de 55

MANUAL DEL CURSO

SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

SISTEMAS EMBEBIDOS
Curso de Sistemas Embebidos con
Microcontroladores PIC

UNIVERSIDAD NACIONAL DE INGENIERÍA José Oliden Martínez


MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

UNIVERSIDAD NACIONAL DE INGENIERÍA José Oliden Martínez


MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

PROGRAMACIÓN Y APLICACIONES DEL


MICROCONTROLADOR PIC DE
MICROCHIP

UNIVERSIDAD NACIONAL DE INGENIERÍA José Oliden Martínez


MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

UNIVERSIDAD NACIONAL DE INGENIERÍA José Oliden Martínez


MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

ÍNDICE
PIC16F877A ......................................................................................................................................... 6
Introducción a los Microcontroladores PIC ......................................................................................... 8
Programación I .................................................................................................................................. 19
Escritura y compilación de un programa en Assembler..................................................................... 29

Mechatronic Engineering Engitronic S.A.C. EMOF01

5
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

PIC16F877A

Mechatronic Engineering Engitronic S.A.C. EMOF01

6
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Mechatronic Engineering Engitronic S.A.C. EMOF01

7
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Introducción a los Microcontroladores PIC

Un microcontrolador es un circuito integrado programable de alta escala de integración que


incorpora la mayor parte de los elementos que configuran un controlador (computador). Se dice que
es “la solución en un chip” porque su reducido tamaño minimiza el número de componentes y por
lo tanto el costo final del producto en desarrollo. En su memoria sólo reside un programa destinado
a gobernar una aplicación determinada; sus líneas de entrada / salida soportan el conexionado de
los sensores y actuadores del dispositivo a controlar.

La mayoría de equipos pequeños informáticos (teclado, mouse, impresora, etc.), artefactos


electrodomésticos (lavadora, microondas, cocinas, etc), y algunos equipos industriales y robots son
manejados por un microcontrolador.

La diferencia básica entre un microcontrolador y un microprocesador es que el microprocesador es


un sistema abierto con el que puede construirse un computador con las características que desee,
acoplándole los módulos necesarios. Un microcontrolador es un sistema cerrado que contiene un
microcomputador completo y de prestaciones limitadas que no se pueden modificar.

Mechatronic Engineering Engitronic S.A.C. EMOF01

8
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Figura 1: Estructura de un sistema abierto basado en un microprocesador

MICROCONTROLADOR

PERIFERICOS

µC

Figura 2: El microcontrolador es un sistema cerrado

1. Características más representativas de los microcontroladores PIC.

a) La arquitectura del procesador sigue el modelo Harvard

En esta arquitectura, el CPU se conecta de forma independiente y con buses distintos con la memoria
de instrucciones y con la de datos.

Mechatronic Engineering Engitronic S.A.C. EMOF01

9
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Bus de datos Bus de Instrucciones

MEMORIA DE MEMORIA DE
DATOS
CPU INSTRUCCIONES
8 14

Figura 3: Arquitectura Harvard del microcontrolador

La arquitectura Harvard permite al CPU acceder simultáneamente a las dos memorias lo cual propicia
numerosas ventajas al funcionamiento del sistema como se irán describiendo.

b) Técnica de segmentación (“pipe-line”) en la ejecución de las instrucciones.

La segmentación permite al procesador realizar al mismo tiempo la ejecución de una instrucción y la


búsqueda del código de la siguiente. De esta forma se puede ejecutar cada instrucción en un ciclo
(un ciclo de instrucción equivale a cuatro ciclos de reloj).

CLK

ciclo

BI3 BI2 BI1

EI3 EI2 EI3

Fin INSTR0

Fin INSTR1

Fin INSTR2

Figura 4: Un ciclo de instrucción equivale a cuatro ciclos de reloj

La segmentación permite al procesador ejecutar cada instrucción en un ciclo de instrucción


equivalente a cuatro ciclos de reloj. En cada ciclo se realiza la búsqueda de una instrucción y la
ejecución de la anterior.

Las instrucciones de salto ocupan dos ciclos al no conocer la dirección de la siguiente instrucción
hasta que no se haya completado la de bifurcación.

Mechatronic Engineering Engitronic S.A.C. EMOF01

10
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Figura 5: La segmentación permite solapar en el mismo ciclo la fase de ejecución de una instrucción y la de la búsqueda de la siguiente,
excepto en las instrucciones de salto.

c) Formato de las instrucciones con la misma longitud

Todas las instrucciones de los microcontroladores de la gama baja tienen una longitud de 12 bits. Las
de la gama media tienen 14 bits y más las de la gama alta. Esta característica es muy ventajosa en la
optimización de la memoria de instrucciones y facilita enormemente la construcción de
ensambladores y compiladores.

d) Procesador RISC (Procesador con conjunto reducido de instrucciones)

Los modelos de la gama baja disponen de un repertorio de 33 instrucciones, 35 los de la gama media
y casi 60 los de la alta.

e) Arquitectura basada en un banco de registros

Esto significa que todos los objetos del sistema (puertos de E/S, temporizadores, posiciones de
memoria, etc.) están implementados físicamente como registros.

f) Diversidad de modelos de microcontroladores

La gran variedad de modelos de microcontroladores PIC con prestaciones y recursos diferentes


permite que el usuario pueda seleccionar el más conveniente para su proyecto.

Mechatronic Engineering Engitronic S.A.C. EMOF01

11
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

g) Herramientas de soporte

La empresa Microchip y otras que utilizan los PIC ponen a disposición de los usuarios numerosas
herramientas para desarrollar hardware y software. Son muy abundantes los programadores, los
simuladores software, los emuladores en tiempo real, ensambladores, Compiladores C, Intérpretes
y Compiladores Basic, etc. Entre ellas tenemos:

• Ensamblador MPASM.
• Compilador de lenguaje C, MP-C.
• Programador universal PICSTART PLUS
• Emulador universal PIC MASTER.
• Entorno de Desarrollo Integrado MPLAB
2. Las tres gamas de Microcontroladores PIC

Para resolver aplicaciones sencillas se precisan pocos recursos; en cambio, las aplicaciones grandes
requieren numerosos y potentes recursos. Siguiendo esta filosofía, Microchip construye diversos
modelos de microcontroladores orientados a cubrir, de forma, las necesidades de cada proyecto. Así,
hay disponibles microcontroladores sencillos y baratos para atender las aplicaciones simples y otros
complejos y más costosos para las de mucha envergadura.

La mayoría de los sistemas de control incrustados requieren CPU, memoria de datos, memoria de
instrucciones, líneas de E/S, y diversas funciones auxiliares como temporizadores, comunicación
serie y otras. La capacidad y el tipo de las memorias, el número de líneas de E/S y el de
temporizadores, así como circuitos auxiliares, son parámetros que dependen exclusivamente de la
aplicación y varían mucho de unas situaciones a otras. Para adaptarse de forma óptima a las
necesidades de los usuarios, Microchip oferta tres gamas de microcontroladores de 8 bits

Con las tres gamas de PIC se dispone de gran diversidad de modelos y encapsulados, pudiendo
seleccionar el que mejor se acople a las necesidades de acuerdo con el tipo y capacidad de las
memorias, el número de líneas de E/S y las funciones auxiliares precisas. Sin embargo, todas las
versiones están construidas alrededor de una arquitectura común, un repertorio mínimo de
instrucciones y un conjunto de opciones muy apreciadas, como el bajo consumo y el amplio margen
del voltaje de alimentación.

PIC17CXX
OTP/
EPROM
Gama Alta

PIC16CXXX
OTP/EPROM
Gama Media

PIC16C5X
OTP/EPROM/EEPROM
PIC12CXX
OTP
Gama Baja
Figura 5: Las tres gamas de Microcontroladores PIC

Mechatronic Engineering Engitronic S.A.C. EMOF01

12
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Las características específicas de los microcontroladores se encuentran en su hoja técnica de datos.


Aquí se muestra un tabla con las principales características de la familia PIC16F87X. La hoja técnica
se puede encontrar en el CD de microchip (de distribución gratuita) o en su página web
www.microchip.com

3. Arquitectura Interna

3.1 Procesador:

El procesador de los microcontroladores corresponde a la Arquitectura Harvard (estudiada


anteriormente) y RISC (Computadores de Juego de Instrucciones Reducido). Además otra
característica es la técnica de Segmentación pípe-line, que como se observó brinda un
paralelismo implícito, trabajando con 2 instrucciones a la vez.

3.2 Memoria de Programa (Instrucciones)

Aquí se almacenan todas las instrucciones del programa de control. No se pueden utilizar memorias
externas. Los tipos existentes son: ROM con máscara, EPROM, OTP (Programable una vez), EEPROM
y FLASH.

La memoria de programa siempre está direccionada desde el Contador de Programa (PC), mientras
que la memoria de datos puede direccionarse directamente desde parte del código OP de la
instrucción o indirectamente a través de un registro denominado FSR (Registro de Selección del
Banco).

La memoria de programa (o de instrucciones) tiene una capacidad de 8k de 14 bits. Durante la fase


de búsqueda, la dirección de la instrucción la proporciona el PC, el cual normalmente se
autoincrementa en la mayoría de las instrucciones, excepto en las de salto. Con las instrucciones de
salto se carga la Pila con el valor inicial del PC incrementado una unidad. Posteriormente, las
instrucciones de retorno, situadas al final de las rutinas, devuelven el valor almacenado en la Pila al
PC.

Mechatronic Engineering Engitronic S.A.C. EMOF01

13
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Figura 7: Mapa de Memoria de Programa

3.2.1 El PC. Direccionamiento del Programa

El PC consta de 13 bits con los que se puede direccionar una memoria de código con una capacidad
de hasta 8k palabras de 14 bits cada una. La memoria se organiza en paginas de 2k de tamaño.

El byte de menos peso del PC se corresponde con el contenido del registro PCL ubicado en la posición
02h del banco 0. Los 5 bits de mas peso del PC se corresponden con los 5 bits de menos peso del
registro PCLATH en la posición 0Ah del banco 0. Los bits de mas peso del PC solos se pueden escribir
a través del registro PCLATH.

En las instrucciones de salto relativo, el resultado de la misma afecta solo a los 8 bits de menos peso
del PC. Los 5 bits de mas peso se suministran desde PCLATH<4:0>.

En las instrucciones GOTO y CALL los 11 bits de menos peso del PC se suministran desde el código
OP. Los dos bits de mas peso del PC se cargan con los bits <4:3> del registro PCLATH. Como la
memoria de programa se organiza en paginas de 2k, la posición la seleccionan los 11 bits de menos
peso, mientras que con los 2 bits de mas peso del PC se elige la página.

Mechatronic Engineering Engitronic S.A.C. EMOF01

14
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Figura 8: Carga del PC en situaciones diferentes

Un reset pone a 0 todos los bits del PCL y PCLATH, obligando a que la dirección de reinicio sea 0000h.

El comportamiento del PC para las diversas instrucciones del repertorio es el siguiente:

1°. Para todas las instrucciones menos los saltos del programa, el PC se autoincrementa para apuntar
la siguiente instrucción a la que se está ejecutando.

2º. Las instrucciones de salto GOTO cargan en el PC directamente los 11 bits de menos peso desde
el código OP de la propia instrucción. Cuando el área de programa es superior a las 2k posiciones, los
2 bits de más peso del PC (Al0 y A9) se cargan con el valor de los bits PA1 y PA0 del Registro de Estado.

3º. Las instrucciones CALL, antes de su ejecución, guardan en la Pila el valor del PC inicial
incrementado una unidad. Dicho valor se restituye al PC cuando se ejecuta la instrucción de retorno
cuyo mnemónico es RETLW.

4º. Cuando el PC apunta la última posición de una página y se autoincrementa pasa a direccionar a
la siguiente instrucción que estará situada en la primera posición de la página siguiente. Cuando se
produce un cambio de página, se deben actualizar los bits PA1 y PA0 del Registro de Estado porque,
en caso contrario, cuando se ejecute una instrucción de salto, éste seguirá controlando la página en
la que se halla esta instrucción de salto.

3.3 Memoria de Datos

Las posiciones de la memoria de datos tienen 8 bits de longitud. La memoria de datos se organiza en
"bancos" (4). Los bancos tienen un tamaño de 128 bytes cada uno.

Mechatronic Engineering Engitronic S.A.C. EMOF01

15
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

La memoria de datos funciona de forma similar al "banco de registros" de un procesador por lo cual
sus posiciones implementan registros de propósito especial y propósito general.

En la figura 9 se presenta la organización de la memoria compuesta por cuatro bancos. Se indican los
nombres de los registros específicos en las primeras posiciones del banco 0.

Figura 9: Organización de la memoria de datos

3.3.1 Modos de direccionamiento


Para direccionar la memoria de datos que contiene los registros de propósito especifico y los de
propósito general, existen dos modos:

1ª. Direccionamiento directo


Aquí se utilizan los 7 bits de menos peso del código OP de la instrucción para apuntar cualquiera de
las 128 posiciones del banco 0. Si el dato no se halla en el banco 0, se usa un sistema de paginación
Mechatronic Engineering Engitronic S.A.C. EMOF01

16
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

para seleccionar el banco adecuado se emplean los bits RP1 y RP0 del Registro de estado <6:5>,
seleccionan el banco.

2ª. Direccionamiento indirecto


En este caso el operando de la instrucción hace referencia al registro INDF, que ocupa la posición 0
del área de datos (00h del banco 0). Se accede a la posición que apunta el registro FSR, que se halla
situado en la posición 04h del banco 0. Los 7 bits de menos peso de FSR seleccionan la posición y su
bit de mas peso junto con el bit IRP del Registro de estado <7>, seleccionan el banco. El registro INDF
no se halla implementado físicamente. Cada vez que se le referencia, se utiliza el contenido del
registro FSR para direccionar al operando.

Cualquier instrucción usando el registro INDF hace referencia al registro apuntado por FSR.

Figura 10: Modos de direccionamiento

Un ejemplo de direccionamiento indirecto en el cual limpiamos las direcciones 20h a al 2Fh de la


RAM es el siguiente:

4. Líneas de entrada y salida para los controladores de periféricos.

A excepción de las 2 patitas de alimentación, las del cristal del reloj (para regular la frecuencia de
trabajo) y la del reset, las restantes patitas del microcontrolador sirven para controlar o comunicarse
Mechatronic Engineering Engitronic S.A.C. EMOF01

17
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

con periféricos externos. Las líneas de E/S que se adaptan con los periféricos manejando información
entre ellos se agrupan en conjuntos de 8 y reciben el nombre de “puertos” o “puertas”. Así para el
PIC 16F877 tenemos 5 puertos: Puerto A, B, C, D y E, a cada uno de ellos podemos acceder en forma
paralela (control de bit) o utilizar funciones preestablecidas de comunicación o control (canal de
comunicaciones síncrono SSP con modo I2C y SPI, canal USART/SCI, control PWM, conversores AD de
10 bits). Las descripción de las patitas y sus funciones están en la hoja técnica, en la figura 11 se
muestra esta en forma resumida.

Figura 11: Diagrama de pines y funciones

5. Recursos Auxiliares

Según las aplicaciones cada modelo de microcontrolador incorpora una diversidad de complementos
que refuerzan su potencia y flexibilidad. Entre los recursos más comunes se citan los siguientes:

a) Circuito de reloj, encargado de generar los impulsos que sincronizan el funcionamiento de


todo el sistema.
b) Temporizadores, orientados a controlar tiempos.
c) Perro Guardian (“watchdog”), destinado a provocar una reinicialización cuando el
programa queda bloqueado o “colgado”.
d) Conversores AD y DA, para poder recibir y enviar señales analógicas.
e) Comparadores analógicos, para verificar los valores de señales analógicas.
f) Sistema de protección ante fallos de alimentación.
g) Estado de reposo “sleep”, en el que el sistema queda “congelado” y el consumo de energía
se reduce al mínimo.

Mechatronic Engineering Engitronic S.A.C. EMOF01

18
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Programación I

Vamos a comenzar a familiarizarnos con las instrucciones de manejo de bytes y bits del microPIC.

Instrucción “mov”

Transfiere el contenido de un registro <<fuente>> a un registro <<destino>>. En los


microcontroladores PIC todos los datos residen en posiciones de la memoria de datos, y solo el
registro de trabajo W se salva de esta regla. Esto significa que mov puede mover tres tipos de
operandos fundamentales:

1. El contenido del registro w.


2. El contenido de una posición de la memoria de datos o registro.
3. Un literal o valor inmediato que se incluye en el código máquina de la propia instrucción.

movf f,d: Mueve el contenido de f al destino d. d = f (d puede ser W o


f)
movwf f: Mueve el contenido de W al destino f. f = W.
movfw k: Mueve el literal k a W. W = k.

En la práctica se utiliza:

movfw f: Mueve el contenido de f al destino W. W = f.


(no existe, pero el compilador lo acepta y lo transforma a movf f,0)

Instrucciones aritméticas

addwf f,d: Suma W y f. d=W+f


(i d = 0 entonces la suma va a W, y si es 1, la suma va a f)
addlw k: Suma W y k y el resultado lo deposita en W. W = W + k.

Mechatronic Engineering Engitronic S.A.C. EMOF01

19
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

sublw k Sustrae W del literal k. W = k - W.


subwf f,d Sustrae W de f. d = f - W.
(d puede ser W o f)

En la primera y 4 últimas instrucciones vistas, funciona el señalizador FZ(bit 2 del registro STATUS),
que se pone a 1 cuando el resultado de la operación/instrucción es cero. Además en las dos últimas
funcionan los señalizadores FC (acarreo de suma de los dos bits de mas peso de los operandos, bit
0) y el FDC (que es 1 cuando ocurre acarreo al sumar los bit que ocupan el 4to lugar de los operandos,
bit 1). Este último es útil cuando se trabaja con dígitos BCD. Estos señalizadores o banderas también
funcionan con las instrucciones lógicas.

Instrucciones de manejo de bit

bcf f,b Pone a cero el bit “b” del registro f. f(b) = 0.


bsf f,b Pone a uno el bit “b” del registro f. f(b) = 1.
btfsc f,b Si el bit “b” de f es 0, salta una instrucción. f(b) = 0?,
Si, salta una
instrucción
btfss f,b Si el bit “b” de f es 1, salta una instrucción. f(b) = 1?,
Si, salta una instrucción

Instrucciones de Operaciones lógicas

andlw k AND entre el literal k y W. W = W AND k.


andwf f,d AND entre W y f. d = W AND f.
(d puede ser W o f)
iorlw k OR inclusiva entre k y W. W = W OR k.
iorwf f,d OR inclusiva entre W y f. d = f OR W.
(d puede ser W o f)
xorlw k OR exclusiva entre k y W. W = W XOR k.
xorwf f,d OR exclusiva entre W y f. d = f XOR W.
(d puede ser W o f)

Instrucciones de manejo de byte

clrf f Pone a cero el registro f. f = 0.


comf f,d Complemento de f. d = NOT(f).
(d puede ser W o f)
decf f,d Decremento de f. d = f – 1.
(d puede ser W o f)
incf f,d Incremento de f. d = f + 1.
(d puede ser W o f)
rlf f,d Corre los bits de f a la izquierda una posición d = f << 1.
(d puede ser W o f)

Mechatronic Engineering Engitronic S.A.C. EMOF01

20
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

rrf f,d Corre los bits de f a la derecha una posición d = f >> 1.


(d puede ser W o f)
swapf f Intercambia los MSB con los LSB f = f(45670123)

Instrucciones condicionales, de salto y retorno

decfsz f,d Decrementa f y salta si es cero. d = f - 1. Si d = 0, salta.


(d puede ser W o f)
incfsz f ,d Incrementa f y salta si es cero. d = f + 1. Si d = 0, salta.
(d puede ser W o f)
call k Llamada a subrutina en la dirección k goto k
Va a la dirección k retfie Retorna de la subrutina de
interrupción retlw k Retorna de la subrutina con
W = k return Retorna de una subrutina.

Instrucciones especiales

clrw Pone a cero W. W = 0.


clrwdt Pone a cero el Watchdog timer. Watchdog = 0
nop No realiza ninguna operación. sleep Pone
al PIC en standby.
option Carga el registro OPTION con W. OPTION = W
tris f Carga el registro tris de f. TRIS de f = W

Estas son todas las instrucciones que se utilizarán en la programación del microcontrolador.

Registros Especiales

Además de las instrucciones vamos a ver los registros especiales que se deben configurar para el
trabajo con los PICs. Aquí vamos a realizar una descripción muy breve de los más importantes.
STATUS (03h)
Los bits de este registro tienen tres misiones distintas:

1. Se encargan de avisar las incidencias del resultado de la ALU (C, DC y Z)


2. Indican el estado de Reset (TO# y PD#)
3. Seleccionan el banco a acceder en la memoria de datos (IRP, RP0 y RP1)

La figura 12 muestra los bits de STATUS y sus funciones.

Mechatronic Engineering Engitronic S.A.C. EMOF01

21
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Figura 12: Registro STATUS (Direcciones 03h, 83h, 103h, 183h)

OPTION_REG (81h)
La misión principal de este registro es controlar el TMR0 (temporizador) y el divisor de frecuencia.

Además configura la interrupción externa INT y las resistencias pull-ups del puerto B. La
figura 13 muestra la descripción de los bits del registro OPTION.

Mechatronic Engineering Engitronic S.A.C. EMOF01

22
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Figura 13: Registro OPTIONREG (Direcciones 81h, 181 h)

INTCON (0Bh)
La mayor parte de los señalizadores y bits de permiso de las fuentes de interrupción en los PIC16X8XX
están implementados sobre los bits de este registro que ocupa la dirección 0Bh del banco 0 y se
encuentra duplicado en los demás bancos.

Figura 14: Registro INTCON (Direcciones 0Bh, 8Bh, 1 0 B, 18B )

En la figura 14 encontramos el nombre de cada bit y en la 15 encontramos las funciones de cada uno.

Mechatronic Engineering Engitronic S.A.C. EMOF01

23
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Figura 15: Descripción de funciones de los pines del registro INTCON

PORTA
Algunos de los puertos de E/S son multiplexados para algunas otras funciones. Los registros de los
puertos en el banco 1 (TRIS) son para configurar los puertos.

Figura 16: Funciones del PORTA

Los registros asociados con el PORTA son los que se muestran en la figura 17

Mechatronic Engineering Engitronic S.A.C. EMOF01

24
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Figura 17: Registros asociados con el PORTA


Vamos a ver un ejemplo de configuración del PORTA y PORTB para utilizarlos como puertos de salida.
list p=16F877 ; Indica el modelo de PIC que se usa

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_ON & _LVP_OFF

;Zona de include macros

include <p16F877.inc> ; en este inc están etiquetadas algunas direcciones para


; un mejor entendimiento del programa.
;Zona de etiquetas

org 0x05 ; inicio del programa, comando que indica al Ensamblador


; la dirección de la memoria de programa donde situará
; la siguiente instrucción.

;Configuración inicial de puertos


bcf STATUS, RP0
bcf STATUS, RP1 ; Banco 0 clrf
PORTA ; limpiando el PORTA clrf PORTB
; limpiando el PORTB
bsf STATUS, RP0 ; Banco 1
movlw 0x06 ; configura todos los pines movwf ADCON1 ; como entradas digitales
movlw 0xFF ; Configuración de pines movwf TRISA ; PA0-PA5 como entradas clrf
TRISB ; PB0-PB7 como salidas bcf STATUS, RP1 ; Banco 0

INICIO:
movf PORTA,W ; W = PORTA addlw
0x02 ; W = W + 02 movwf
PORTB ; PORTB = W
goto INICIO ; regresar a INICIO

END ; Directiva de fin de programa

Mechatronic Engineering Engitronic S.A.C. EMOF01

25
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

PORTB

Figura 18: Funciones del PORTB

Figura 19: Registros asociados con el PORTB

PORTC

Figura 20: Funciones del PORTC

Figura 21: Registros asociados con el PORTC

Mechatronic Engineering Engitronic S.A.C. EMOF01

26
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

PORTD

Figura 22: Funciones del PORTD

Figura 23: Registros asociados con el PORTD

PORTE

Figura 24: Funciones del PORTE

Mechatronic Engineering Engitronic S.A.C. EMOF01

27
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Figura 25: Registros asociados con el PORTD

Ahora si vamos a analizar un programa de ejemplo para familiarizarnos con la estructura de


programación.

Mechatronic Engineering Engitronic S.A.C. EMOF01

28
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Escritura y compilación de un programa en


Assembler

Como cualquier microprocesador, es necesario preparar un programa que le permita desarrollar su


trabajo. Un programa esta constituido por una lista de instrucciones en secuencia, cada una de las
cuales identifican unívocamente las funciones de base que los PIC están en grado de desarrollar.
Cada instrucción esta representada por un código operativo (en inglés operation code o más
brevemente opcode ) a 14 bit y es memorizada en una posición de memoria EEPROM. Un ejemplo
de opcode en anotación binaria y Hexadecimal viene reportado enseguida.

00 0001 0000 0000B 0100H CLRW

El mismo valor puede ser representado en assembler con la notación 0x100 derivada del lenguaje C
o H´0100´. Estos códigos, completamente privados de sentido para un ser humano, son los únicos
que el PIC está en grado de entender. Para facilitar la tarea al programador, se recurre a algunos
instrumentos y convenciones para hacer las instrucciones más comprensibles. La primera
convención es aquella de asociar a cada opcode una sigla mnemónica es decir, una sigla que ayude
a recordar el significado de la instrucción. Por ejemplo el opcode 0100H corresponde a la instrucción
mnemónica CLRW que ya hemos visto. Otras convenciones permiten de definir las variables, las
constantes, las etiquetas (label) de referencia a las direcciones de memoria, etc. El conjunto de estas
convenciones para facilitar la escritura de un programa para los PIC es el llamado lenguaje
assembler. Un programa escrito en lenguaje assembler puede ser escrito en un PC utilizando
cualquier procesador de palabra o editor en grado de generar archivos de tipo ASCII. Un archivo ASCII
o, mejor dicho, un archivo de texto que contenga un programa en assembler es llamado source o
fuente assembler. Una vez preparado nuestro source assembler (veremos mas adelante como),
es necesario un programa en grado de traducir las instrucciones mnemónicas y todas las otras formas
convencionales con las cuales fue escrito nuestro source en una serie de números (los opcode)
reconocibles directamente por el PIC. Este programa se llama compilador assembler o
assemblador. En la figura 26 viene esquematizado el flujo de operaciones y el archivo (file) que se
genera para pasar de un source assembler a un PIC programado. Como se dijo la primera operación
a efectuar es escribir el source assembler y su memorización en un archivo (file) de texto con
extensión .ASM. Para hacer esto vamos a utilizar el editor del MPLAB (se puede utilizar cualquiera
como por ejemplo el NOTEPAD.EXE de Windows o el EDIT.EXE de MS/DOS©).

Mechatronic Engineering Engitronic S.A.C. EMOF01

29
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

El software utilizaremos es el MPLABX.

Podemos encontrar las siguientes versiones:

Para 64 bits o 32 bits:

Versión 5:

https://es.freedownloadmanager.org/Windows-PC/MPLAB-X-IDE-GRATIS.html

Otras Versiones:

https://mplab-x-ide.software.informer.com/versions/

Ejecutamos con el administrador:

Le damos siguiente:

Mechatronic Engineering Engitronic S.A.C. EMOF01

30
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Aceptamos los términos y condiciones:

Mechatronic Engineering Engitronic S.A.C. EMOF01

31
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

La
carpeta por defecto donde se instalará el programa

Mechatronic Engineering Engitronic S.A.C. EMOF01

32
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Damos Next:

Damos Next para iniciar la instalación

Mechatronic Engineering Engitronic S.A.C. EMOF01

33
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Comenzará la instalación

Mechatronic Engineering Engitronic S.A.C. EMOF01

34
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Habrá algunas ventanas de seguridad le damos Instalar:

Instalar:

Seguirá instalando:

Mechatronic Engineering Engitronic S.A.C. EMOF01

35
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Antes de finalizar desactivamos las casillas para poder evitar la ventanas emergente en el
navegador:

Mechatronic Engineering Engitronic S.A.C. EMOF01

36
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Obtendremos los siguientes iconos en nuestro escritorio.

Al abrirlo el MPLAB X IDE visualizaremos la siguiente pantalla:

Mechatronic Engineering Engitronic S.A.C. EMOF01

37
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Este será nuestro entorno de inicio:

Mechatronic Engineering Engitronic S.A.C. EMOF01

38
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Para utilizar el MPLAB se tiene que crear un proyecto (sobre el cual se trabajará) de la siguiente
manera.

Vamos a File>New Project y damos un nombre a nuestro proyecto dentro de un directorio en el


formulario que muestra la figura 27.

Eligimos Standalone Proyect en Microchip Embedded y damos Next:

Mechatronic Engineering Engitronic S.A.C. EMOF01

39
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
Figura 27: Creación de un nuevo Project

Elijamos nuestro microcontrolador a utilizar:

Escogemos Simulador y Next

Mechatronic Engineering Engitronic S.A.C. EMOF01

40
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Utilizamos mpasm

Colocamos el nombre de nuestro proyecto y luego damos clic en Browse para ubicar nuestro
archivo para mayor comodidad.

Mechatronic Engineering Engitronic S.A.C. EMOF01

41
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Crearemos una nueva carpeta llamada Área de Trabajo dando clic en el icono de archivo en la
parte superior derecha

Luego damos en Next

Mechatronic Engineering Engitronic S.A.C. EMOF01

42
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

En la parte izquierda superior notaremos nuestros archivos generados:

En Source Files, damos clic derecho New y luego Other

Mechatronic Engineering Engitronic S.A.C. EMOF01

43
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Luego agregamos en categorías Assemebler y AssemblyFile.asm para crear nuestro archivo el


cual ejecutaremos nuestro código en asembler

Mechatronic Engineering Engitronic S.A.C. EMOF01

44
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Le colocamos el nombre en File Name;

Y tenemos nuestro archivo para agregar nuestro código

Mechatronic Engineering Engitronic S.A.C. EMOF01

45
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Para poder ver todos los Registros que utilizaremos seleccionamos en el Menu de Window,
Target Memory Views, SFRs:

Mechatronic Engineering Engitronic S.A.C. EMOF01

46
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Saldra todos nuestros registros y su valor binario:

Para ver registros específicos:

Mechatronic Engineering Engitronic S.A.C. EMOF01

47
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Aquí escogeremos los registros que deseamos:

Agregamos New Watch

Mechatronic Engineering Engitronic S.A.C. EMOF01

48
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Escogemos nuestro registro de la memoria de datos por ejemplo WREG :

Podemos agregar más:

Luego seleccionaremos un archivo témplate ubicado en:

Mechatronic Engineering Engitronic S.A.C. EMOF01

49
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Copiar el archivo Template en el main de nuestro ASM.

Una vez creado nuestro programa en el editor (como ejemplo puede tipearse el programa de
configuración de los puertos A y B), paso sucesivo es la compilación del source es decir, la
transformación en opcode de los códigos mnemónicos o instrucciones assembler en los contenidos.

El compilador assembler que utilizaremos es el MPASMWIN.EXE del entorno MPLAB. Los pasos de
la compilación son simples. Una vez revisado nuestro programa lo compilamos, este proceso lo
hacemos seleccionando “Project” y luego “Make project” o directamente presionando la tecla “F10”.
El compilador nos muestra las advertencias (“warning”) y los errores (“error”) de nuestro programa,
indicando en qué línea se ha cometido este falla. Si nuestro programa es correcto el mensaje sería el
siguiente:
Building <nombre>.HEX...

Compiling <nombre>.ASM:
Command line: "C:\ARCHIV~1\MPLAB\MPASMWIN.EXE /e+ /l+ /x- /c+ /p16F877 /q C:\ARCHIV~1\MPLAB\<nombre>.ASM"

Build completed successfully.

A pesar que puedan existir “Warning”, el programa se compila satisfactoriamente. No ocurriendo lo


mismo con los “error”

Mechatronic Engineering Engitronic S.A.C. EMOF01

50
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Durante la compilación del source, el compilador assembler genera una serie de archivos con nombre
idéntico a la source pero con extensión distinta:

• .HEX es el archivo que contiene los códigos operativos para enviar al PIC a través del
programador.
• .LST es un archivo de texto el cual contiene todo el source assembler y la correspondiente
traducción en opcode. No es utilizable para la programación del PIC pero es extremadamente
útil para verificar los procesos de compilación realizados por el compilador.
• .ERR contiene la lista de los errores de compilación encontrados y el numero de línea en el
interno del source assembler en la cual se encontraron.

Los archivos .LST, .ERR vienen utilizados para el control de lo realizado en la compilación. Solo el
archivo .HEX viene utilizado realmente para programar el PIC. El archivo .HEX no es un archivo en
formato binario y no corresponden directamente al contenido que deberá tener la EEPROM del PIC.
Pero su formato si corresponde directamente a cuanto será transferido al PIC en forma legible y con
unas instrucciones de más.

Además de nuestro source con extensión .ASM es necesario entregar al compilador un segundo
archivo producido por Microchip con extensión .INC diferente según el tipo de PIC que estemos
utilizando. En nuestro caso el archivo es el PIC16F877.INC. Esta source contiene algunas definiciones
dependientes del chip utilizado.

Mechatronic Engineering Engitronic S.A.C. EMOF01

51
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Set de instrucciones del PIC16F87X


JOSE OLIDEN MARTINEZ

Sintaxis Descripción Microchip Operación equivalente

ADDLW k Add Literal and W W=W+k

ADDWF f,d Add W and f d = W + f (donde d puede ser W ó f)

ANDLW k AND Literal with W W = W AND k

ANDWF f,d AND W with f d = W AND f (donde d puede ser W ó f)

BCF f,b Bit Clear f f(b) = 0

BSF f,b Bit Set f f(b) = 1

BTFSC f,b Bit Test f, Skip if Clear f(b) = 0 ? Si, salta la siguiente instrucción

BTFSS f,b Bit Test f, skip if Set f(b) = 1 ? Si, salta la siguiente instrucción

CALL k Subroutine Call Llama a la subrutina en la dirección k

CLRF f Clear f f=0

CLRW Clear W Register W=0

CLRWDT Clear Watchdog Timer Watchdog timer = 0

COMF f,d Complement f d = not f (donde d puede ser W ó f)

DECF f,d Decrement f d = f -1 (donde d puede ser W ó f)

DECFSZ f,d Decrement f, Skip if 0 d = f -1 (donde d puede ser W ó f) si d = 0 salta

GOTO k Go to address Salto incondicional a la dirección k

INCF f,d Increment f d = f +1 (donde d puede ser W ó f)

INCFSZ f,d Increment f, Skip if 0 d = f +1 (donde d puede ser W ó f) si d = 0 salta

IORLW k Inclusive OR Literal with W W = W OR k

IORWF f,d Inclusive OR W with f d = f OR W (donde d puede ser W ó f)

MOVLW k Move literal to W W=k

MOVF f,d Move f d = f (donde d puede ser W ó f)

MOVWF f Move W to f f=W

NOP No Operation No operación

OPTION Load Option Register OPTION = W

RETFIE Return from Interrupt Retorna de una subrutina de interrupción

RETLW k Return Literal to W Retorna de una subrutina con W = k

RETURN Return from Subroutine Retorna de una subrutina

RLF f,d Rotale Left f through Carry d = f << 1 (donde d puede ser W ó f)

Mechatronic Engineering Engitronic S.A.C. EMOF01

52
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

RRF f,d Rotale Right f through Carry d = f >> 1 (donde d puede ser W ó f)

SLEEP Go into Standby Mode Pone el PIC en standby

SUBLW k Subtract W from Literal W=k–W

SUBWF f,d Subtract W from f d = f - W (donde d puede ser W ó f)

SWAPF f Swap f f = Swap Intercambia los bit 0123 con 4567 de f

TRIS f Load TRIS Register TRIS de f = W

XORLW k Exclusive OR Literal with W W = W XOR k

XORWF f,d Exclusive OR W with f d = f XOR W (donde d puede ser W ó f)

Mechatronic Engineering Engitronic S.A.C. EMOF01

53
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Todos los derechos reservados. Ninguna parte de este documento puede ser reproducida o
transmitida de cualquier forma o por cualquier medio, electrónico o mecánico, incluido fotocopia,
grabación o por cualquier sistema de almacenamiento o recuperación de información, sin el
permiso previo por escrito del propietario de los derechos de autor y el editor.

engitronic@gmail.com
Mechatronic Engineering Engitronic S.A.C. EMOF01

54
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI

Material guía elaborado por

Derechos reservados 2018

engitronic@gmail.com

José F. Oliden Martínez

Mechatronic Engineering Engitronic S.A.C. EMOF01

55

También podría gustarte