HOME

PRODUCTOS

PROYECTOS

TUTORIALES

VIDEOS

FREEWARE

PROGRAMAS

FUNCIONES C

EMPRESA

ENGLISH

                   

 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.

LEDSMICROSWITCHESRELEVADOR.jpg (116542 bytes)

 

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.

BANCO 0 DIRECCION BANCO 1 DIRECCION
TMRO 01H OPTION 81H
PCL 02H PCL 82H
STATUS 03H STATUS 83H
FSR 04H FSR 84H
PORTA 05H TRISA 85H
PORTB 06H TRISB 86H

         

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.

EJEMPLO DE PROGRAMACION DEL REGISTRO TRISA: EL BIT RA0 DEL PUERTO 'A' QUEDA PROGRAMADO COMO SALIDA, Y LOS BITS RA1...RA4 QUEDAN PROGRAMADOS COMO ENTRADAS.

 0

0

0

1

1

1

1

0 (RA0)

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.

IRP RP1 RP0 TO PD Z DC C

           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.
PLANTILLAF628.asm. Para programar con 16F628
PLANTILLAF88TINY.asm Para EVOLUPIC Bootloader 16F88. Archivo único.
PLANTILLAF88TINY2.asm, KEY.inc Para EVOLUPIC Bootloader 16F88. Idéntica función que el archivo anterior, pero utilizando un archivo auxiliar (KEY.inc)

 

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

 Mediante el manejo del bit RA0 del puerto A, el procesador 16F84/F628/F88 puede activar un relevador. Los datos nominales de este relevador son : un polo un tiro, activación con 9 volts DC y contactos de 127 VCA @ 10 Amperes. Este relevador puede ser usado como actuador para activar dispositivos externos como focos, válvulas, solenoides, motores, etc.

 

 

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:

 

EDUPIC 16F84 EDUPIC 16F628 ó EVOLUPIC 16F628 Sistema EB88

DESCRIPCION Y LINK

  plantillaF628.asm plantillaF88TINY.asm Plantillas para 16F628/F88. Archivo único
    plantillaF88TINY2.asm Plantilla para EVOLUPIC Boot. 16F88, con archivo auxiliar KEY.inc
    KEY.inc Archivo auxiliar para usarse con la plantilla anterior
contador.asm contadorF628.asm contadorF88TINY.asm Contador binario en los leds
contador.hex contadorF628.hex contadorF88TINY.hex  
demof84.asm demof628.asm demof88TINY.asm Corrimiento en los leds
demof84.hex demof628.hex demof88TINY.hex  
microsw.asm microswF628.asm microswF88TINY.asm Manejo de leds, microswitches y relevador
microsw.hex microswF628.hex microswF88TINY.hex  
    LEDSMICROTINY.asm Manejo de claves en microswitches y acción LEDS
    LEDSMICROTINY.hex  
  LEDSCORRIMIE2.asm LEDSCORR2TINY.asm Uso del simulador en MPLAB para el manejo de leds y microswitches
  LEDSCORRIMIE2.hex LEDSCORR2TINY2.hex