Programación básica en lenguaje ensamblador para los sistemas 16F84/F628/F88, controlando leds, microswitches y un relevador. |
En este tutorial, se
proporciona información básica de programación, así como ejemplos sencillos para
controlar los dispositivos básicos de los sistemas embebidos (embedded systems), como son
los leds, los microswitches, y los relevadores. Los ejemplos se acompañan los diagramas
electrónicos y programas escritos en lenguaje ensamblador . Los ejercicios están desarrollados para los sistemas EDUPIC y Sistema EB88, los cuales cuentan con 8 leds, 4 microswitches y un relevador, controlados por los microcontroladores 16F84/F628/F88 de Microchip, pero pueden ser fácilmente modificados para adaptarse a cualquier otro sistema. En la siguiente figura se muestra un diagrama general de control de los dispositivos señalados. NOTA IMPORTANTE: Los microswitches SW1...SW4, en la posición "ON" (contactos cerrados) generan un voltaje bajo, es decir, un 0 lógico y en la posición "OFF" (contactos abiertos) generan un voltaje alto, es decir un 1 lógico. Vea los diagramas electrónicos de los microswitches más abajo en este tutorial. |
ASIGNACION DE PINES EN LOS MICROCONTROLADORES Los microcontroladores mencionados tienen la siguiente asignación de pines en sus circuitos. Observe que en el 16F84 la función de los pines es única, mientras el 16F628 tiene asignadas varias posibles funciones en cada pin de sus puertos A y B. El 16F88, que es la versión más reciente, asigna, adicionalmente a las funciones del 16F628, 7 canales de conversión A/D, y varias señales para el puerto síncrono SSP.
|
LOS REGISTROS ESPECIALES: Para aprender programación básica y el manejo de los puertos de entrada/salida, usaremos en los programas de prueba solamente los 9 registros especiales mostrados en la tabla de abajo, que son comunes a los 3 microcontroladores antes mencionados. De esos 9, los 7 marcados con color azul aguamarina son los más utilizados en aplicaciones simples. El direccionamiento de los registros está organizado por bancos ó grupos de registros: el 16F84 cuenta con 2 bancos y un total de 15 registros especiales; el 16F628 contiene 4 bancos y 34 registros especiales; el 16F88 contiene 4 bancos y 50 registros especiales. Algunos de los registros pueden ser accesados desde varios bancos. En todos los programas, es indispensable incluir los archivos p16f628.inc ó p16f88.inc en donde se establecen las equivalencias entre los nombres de los registros y bits y sus direcciones.
|
PUERTOS DIGITALES Los sistemas 16F84/F628/F88 cuentan con dos puertos digitales, el puerto A, con 5 bits disponibles (RA0...RA4) y el puerto B con 8 bits disponibles (RB0...RB7). Ambos puertos son bidireccionales, ésto es, pueden programarse como entradas o como salidas, de acuerdo a unos registros de dirección de datos, llamados “TRISA”, en el caso del puerto A y “TRISB” para el puerto B. Para programar un bit como entrada, se debe escribir un "1" y para programarlo como salida, un "0" en los bits correspondientes de estos registros.
La asignación de cada uno de los bits de los puertos A y B, se muestra en la siguiente tabla. En los sistemas EDUPIC y EVOLUPIC, se conectan RA1...RA4, (programados como entradas) a 4 microswitches y RB0...RB7 (programados como salidas) para activar 8 LEDS, así como un relevador conectado al pin RA0 (programado como salida).
|
PUERTO A | PUERTO B |
RA0 ACTIVA/DESACTIVA EL RELEVADOR | RB0 ACTIVA LED B0 |
RA1 LEE EL MICROSWTICH SW1 | RB1 ACTIVA LED B1 |
RA2 LEE EL MICROSWITCH SW2 | RB2 ACTIVA LED B2 |
RA3 LEE EL MICROSWITCH SW3 | RB3 ACTIVA LED B3 |
RA4 LEE EL MICROSWITCH SW4 | RB4 ACTIVA LED B4 |
RB5 ACTIVA LED B5 | |
RB6 ACTIVA LED B6 | |
RB7 ACTIVA LED B7 |
EL REGISTRO STATUS El registro llamado STATUS, se encuentra en la dirección 03H y contiene varias banderas de importancia para el manejo de los programas en el 16F84/F628/F88.
Bit
7
Bit 0
-
los bits 0, 1 y 2 son el
CARRY, HALF CARRY Y ZERO, y son banderas que se activan, con un valor igual a 1, cuando el
resultado de una operación o instrucción genera un carry, un half carry o un valor igual
a cero respectivamente.
-
El bit 3 se llama POWER DOWN
y su valor es de 1 después de una instrucción CLRWDT (CLEAR WATCH DOG TIMER) ó bien
después de encender el sistema (POWER UP). El valor es de 0 después de ejecutar la
instrucción SLEEP.
-
El bit 4, se llama TIMER OUT tendrá un valor de
1 después de POWER UP, CLRWDT ó SLEEP y tendrá un valor de 0 si el WDT (WATCH DOG
TIMER) activa su señal de alarma.
-
Los bits 5 y 6 RP0, RP1
seleccionan el banco de memoria que habrá de accesarse. Si RP0 =0, RP1=0 se selecciona el
banco 0. Si RP0=1, RP1=0, banco 1; RP0=0, RP1=1, banco 2; RP0=1, RP1=1, banco 3.
-
El bit IRP se usa para
direccionamiento indirecto, junto con el registro FSR, para seleccionar el banco de
registros en donde se encuentra la memoria de datos que se quiere accesar. Si IRP=0, se
seleccionan los bancos 0 y 1; si IRP=1,se seleccionan los bancos 2 y 3 |
Plantillas para
programar en lenguaje ensamblador los sistemas EDUPIC y EVOLUPIC 16F626/F88. Use estas
plantillas para desarrollar sus propios programas.
|
DIAGRAMAS ELECTRONICOS DE
CONEXIONES A LEDS Y MICROSWITCHES: Una vez inicializados los puertos de la forma mostrada, puede escribirse en los LEDS o leer el estado de los microswitches, considerando los diagramas electrónicos que se muestran enseguida. El objetivo de los LEDS y los microswitches es dar al usuario la posibilidad de realizar emulaciones de sensores digitales y salidas para la activación de actuadores.
DIAGRAMA ELECTRONICO DE LA CONEXION AL RELEVADOR
EJEMPLOS SIMPLES DE PROGRAMACION: De la tabla de abajo, elija el programa que desee bajar. Recuerde que los leds, microswitches y relevador deben de estar conectados siguiendo los diagramas electrónicos mostrados (que son los usados por EDUPIC y EVOLUPIC). Puede ensamblar estos archivos con el software MPLAB IDE ó cargar directamente el ejecutable .hex en los sistemas EDUPIC 16F84/F628/F88, mediante la aplicación WINPIC ó TINY (en el caso del EVOLUPIC Bootloader 16F88). Por favor siga el instructivo del manual del sistema. Use las plantillas resaltadas en color azul aguamarina, para desarrollar sus nuevos programas: |