Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ACFrOgDsLfVO7C0F0V3yPsb6dNhRZgHw7oDj0lCmYAzYbdaMwPdvW1gPULTxgvdgjT1fQ jNak4jQNGRwXp5YF5c0dvJsr8qaK249l2oSmr5jsAMIGoP2f1kbcqezJY PDF
ACFrOgDsLfVO7C0F0V3yPsb6dNhRZgHw7oDj0lCmYAzYbdaMwPdvW1gPULTxgvdgjT1fQ jNak4jQNGRwXp5YF5c0dvJsr8qaK249l2oSmr5jsAMIGoP2f1kbcqezJY PDF
SISTEMAS EMBEBIDOS
Curso de Sistemas Embebidos con
Microcontroladores PIC
ÍNDICE
PIC16F877A ......................................................................................................................................... 6
Introducción a los Microcontroladores PIC ......................................................................................... 8
Programación I .................................................................................................................................. 19
Escritura y compilación de un programa en Assembler..................................................................... 29
5
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
PIC16F877A
6
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
7
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
8
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
MICROCONTROLADOR
PERIFERICOS
µC
En esta arquitectura, el CPU se conecta de forma independiente y con buses distintos con la memoria
de instrucciones y con la de datos.
9
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
MEMORIA DE MEMORIA DE
DATOS
CPU INSTRUCCIONES
8 14
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.
CLK
ciclo
Fin INSTR0
Fin INSTR1
Fin INSTR2
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.
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.
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.
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.
Esto significa que todos los objetos del sistema (puertos de E/S, temporizadores, posiciones de
memoria, etc.) están implementados físicamente como registros.
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
12
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
3. Arquitectura Interna
3.1 Procesador:
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).
13
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
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.
14
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
Un reset pone a 0 todos los bits del PCL y PCLATH, obligando a que la dirección de reinicio sea 0000h.
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.
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.
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.
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.
Cualquier instrucción usando el registro INDF hace referencia al registro apuntado por FSR.
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.
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:
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”
En la práctica se utiliza:
Instrucciones aritméticas
19
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
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.
20
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
Instrucciones especiales
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:
21
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
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.
22
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
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.
En la figura 14 encontramos el nombre de cada bit y en la 15 encontramos las funciones de cada uno.
23
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
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.
Los registros asociados con el PORTA son los que se muestran en la figura 17
24
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC & _WRT_ENABLE_ON & _LVP_OFF
INICIO:
movf PORTA,W ; W = PORTA addlw
0x02 ; W = W + 02 movwf
PORTB ; PORTB = W
goto INICIO ; regresar a INICIO
25
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
PORTB
PORTC
26
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
PORTD
PORTE
27
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
28
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
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©).
29
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
Versión 5:
https://es.freedownloadmanager.org/Windows-PC/MPLAB-X-IDE-GRATIS.html
Otras Versiones:
https://mplab-x-ide.software.informer.com/versions/
Le damos siguiente:
30
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
31
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
La
carpeta por defecto donde se instalará el programa
32
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
Damos Next:
33
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
Comenzará la instalación
34
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
Instalar:
Seguirá instalando:
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:
36
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
37
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
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.
39
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
Figura 27: Creación de un nuevo Project
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.
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
42
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
43
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
44
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
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:
46
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
47
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
48
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
49
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
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"
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.
51
MANUAL DEL CURSO
SISTEMAS EMBEBIDOS EMOFDECUNI MT136 FIM UNI
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
RLF f,d Rotale Left f through Carry d = f << 1 (donde d puede ser W ó f)
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)
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
engitronic@gmail.com
55