Beruflich Dokumente
Kultur Dokumente
Clase 3
Los detalles acerca de estos registros se describen a través de sus bits, a medida que se requiere su uso en las distintas aplicaciones
estudiadas en capítulos posteriores del presente trabajo. A continuación se ofrece una descripción general de las funciones y
características más resaltantes de algunos de ellos.
02H (PCL).
Se trata del byte bajo del Program Counter. Los cinco bits restantes se manejan a través del registro PLATH ubicado en la posición
PCLATH de la misma RAM.
Este es el registro de estados, elemento común en todo dispositivo programable que puede cumplir funciones de controlador. En él se
refleja la condición del sistema luego de procesar cada instrucción. El valor de cada uno de sus bits tiene particular significación, tal
como se explica en la figura 3.1 y en la Tabla III.1.
Data Sheet del PIC16F8XX. Documento 41291D, Microchip Technology Inc., 2007
Wilmer Sanz F. 1
Apuntes de Microprocesadores. Clase 3
05H (PORTA), 06H (PORTB), 07H (PORTC), 08H (PORTD), 09H (PORTE)
En estos registros se “mapea” el puerto de entrada/salida identificado como PORTA, PORTB, PORTC, PORTD y PORTE . Una
mayor descripción acerca de estos puertos se ofrece más adelante.
85H (TRISA), 86H (TRISB), 87H (TRISC), 88H (TRISD), 89H (TRISE)
Los bits de estos registros determinan la función de cada uno de los bits de los puertos A, B, C, D y E respectivamente. Un bit
colocado en cero configura el bit correspondiente como salida, mientras que un uno lo configura como entrada.
Cuando se diseña un circuito sobre la base de un dispositivo microprogramable es fundamental comprender que existe un binomio sin
el cual no hay funcionamiento posible: hardware y software. A diferencia de otros dispositivos digitales un µP o µC requiere de un
programa para definir su funcionamiento, de lo cual deriva su inmensa potencialidad. En efecto, la programación puede hacer que un
µP (o un µC) sustituya gran cantidad de hardware, que se acometa la realización de múltiples tareas, o bien que responda de
diferentes formas ante diversos estímulos.
Ante ese panorama el técnico tradicional se encuentra con que no basta reemplazar un integrado programable con otro de
igual numeración. Sin la misma programación no logrará reproducir las condiciones de funcionamiento del circuito que intenta
reparar. De igual forma, en la fase de diseño la prueba de un circuito no se limita a verificar su funcionamiento después del
ensamblaje; hay que probar mediante ambientes de simulación los bloques o secciones, tanto del hardware como del software.
En lo sucesivo se ilustrará como realizar la programación de los diferentes bloques que componen a un µC y como plasmar
un algoritmo en un lenguaje que pueda traducirse a los términos en que se concrete el pleno control del hardware y la definición de las
acciones a ser ejecutadas.
Existen dos clases de lenguaje de programación: intérpretes y compiladores. Los Intérpretes leen las instrucciones de un archivo en
formato editable y las ejecutan al mismo momento. El más conocido de estos lenguajes es el BASIC. En contraste un lenguaje
compilador toma como entrada el archivo fuente y genera a partir de él otro archivo con formato ejecutable (EXE o .COM). El archivo
generado se compone de códigos hexadecimales que corresponden a comandos y entradas para el hardware de un sistema basado en
microprocesador. La gran diferencia entre ambos tipos de lenguajes radica en que el archivo fuente siempre será requerido en el caso
de los intérpretes, pero no así con los compiladores.
Archivo Instrucciones
Fuente Intérprete ejecutadas
Archivo
Fuente Compilador Archivo Instrucciones
Ejecutable ejecutadas
Por otra parte, todos los lenguajes se ubican en dos categorías: de alto nivel, como C, Pascal (compiladores) y BASIC; y los
de bajo nivel, como el Assembler. Los primeros codifican comandos poderosos que generan un gran número de instrucciones en
lenguaje de máquina. Cuando se escribe un programa en un lenguaje ensamblador de bajo nivel, se codifican las instrucciones
simbólicas, donde cada una genera una instrucción en lenguaje de máquina.
a) Proporciona más control sobre el manejo particular de los requerimientos del hardware.
b) Genera módulos ejecutables más pequeños y más compactos.
c) Su ejecución es más rápida.
Wilmer Sanz F. 2
Apuntes de Microprocesadores. Clase 3
Dependiendo de su arquitectura y elementos internos, cada dispositivo programable cuenta con un lenguaje de programación
llamado assembler, el cual permite a los usuarios escribir los archivos fuentes correspondientes a los diversos algoritmos que se
deseen implementar. Dicho lenguaje se compone de instrucciones sencillas concebidas en forma de mnemónicos, cada una de las
cuales permite generar directamente un código en lenguaje de máquina. Debe contar además de elementos auxiliares, definición de
constantes, variables y reglas de sintaxis para garantizar una que posea una estructura lógica.
La figura 3 muestra cual es el formato de una instrucción en asesmbler de los microncontroladores PIC.
Luego de la Etiqueta sigue uno o más espacios en blanco y posteriormente el mnemónico correspondiente a la instrucción
utilizada. La forma más general continúa con espacios en blanco y uno o dos operandos, según el tipo de instrucción del que se trate.
Entre los operandos media una coma (,) como elemento separador; y el segundo de ellos está limitado a especificar un bit del registro
especificado en el primero o bien el destino donde será almacenado el resultado de la operación (la ‘b’ o la ‘d’ de la Tabla III.2).
Wilmer Sanz F. 3
Apuntes de Microprocesadores. Clase 3
Tipos de instrucciones
Los microcontroladores PIC del rango mediano tienen un set reducido de instrucciones que asciende solo a 35, la mayoría de las
cuales tienen como operando implícito al contenido del registro W. Ellas se clasifican en tres tipos: de registros orientadas a byte, de
registros orientadas a bit y de control y literales. El formato o sintaxis es ligeramente diferente según el tipo, de acuerdo con lo
mostrado en la figura 3.1.
En ellas, el operando explícito se indica en ‘f’. El resultado se almacena en el registro especificado o en W, dependiendo del valor del
bit ‘d’ es cero o uno, respectivamente.
En este caso se hace referencia al bit ‘b’ del registro ‘f’. El operando destino es el mismo registro indicado. No hay intervención del
registro W en estas instrucciones.
Para este grupo, el operando explicitado se simboliza con la letra ‘k’. Esta puede ser una constante o una cadena de caracteres.
Al tratarse de una constante se está implementando un modo de direccionamiento análogo al inmediato de la arquitectura propia de los
microprocesadores más comunes; mientras que una cadena de caracteres se utiliza para indicar saltos o cambios en el flujo normal del
programa.
Figura 3.4 Formato de una instrucciones en assembler de los µC PIC, según su tipo
Wilmer Sanz F. 4
Apuntes de Microprocesadores. Clase 3
________________________________________________________________________________________________
En la figura 3.5 puede observarse cuales son los posibles operandos de la Unidad Aritmética y Lógica (ALU). Uno de ellos
proviene de un Mux que selecciona entre los registros de RAM y ocho bits del Instruction Register; el otro es el contenido del registro
W (Work), el cual equivale al Acumulador asociado a los sistemas de los microprocesadores más comunes.
El contenido de W se usa como operando implícito en la mayoría de las instrucciones, mientras que la selección del Mux
depende del tipo de instrucción a procesar. Si se trata de una instrucción de salto, que afecta el flujo o secuencia del programa, o que
involucra a una constante, el Mux se usa para dar acceso al campo de control del IR. Para cualquier otro propósito el operando
seleccionado proviene de la RAM.
Ejemplo de programación
Actividades sugeridas
Bibliografía
- Microchip Technology Inc. (2007). Data Sheet del PIC16F8XX. Documento 41291D,
http://ww1.microchip.com/downloads/en/DeviceDoc/41291D.pdf [En línea] Último acceso: 29-09-2017
Wilmer Sanz F. 5