HOME

PRODUCTOS

PROYECTOS

TUTORIALES

VIDEOS

FREEWARE

PROGRAMAS

FUNCIONES C

EMPRESA

ENGLISH

                   

Programación básica en lenguaje ensamblador para el sistema Bolt 18F2550, controlando los leds, los dip switches y el relevador.

En este tutorial, se proporciona información básica de programación en lenguaje ensamblador para el sistema Bolt 18F2550, así como ejemplos sencillos para controlar los dispositivos básicos, como son los leds, los dip switches, y los relevadores. Los ejemplos se acompañan de los diagramas electrónicos y programas escritos en lenguaje ensamblador.

Los ejercicios están desarrollados para el sistema Bolt el cual cuenta con 8 leds, 4 dip switches y un relevador, controlados por el microcontrolador 18F2550 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.

Para facilitar al usuario la programación, se proporciona un archivos plantilla así como un archivo auxiliar, sobre el cual puede desarrollar su aplicación,  Una vez ensamblado el proyecto desde MPLAB IDE, los archivos .hex generados pueden cargarse directamente en el sistema Bolt.

NOTA IMPORTANTE: Los dip switches 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 dip switches más abajo en este tutorial.

 

 

ASIGNACION DE PINES EN EL MICROCONTROLADOR 18F2550

El microcontrolador 18F2550 tienen la siguiente asignación de pines en sus circuitos.  Debido a que se trata de un microcontrolador multifunciones un mismo pin puede configurarse para desempeñar distintas tareas. Por ejemplo, el pin RA0 puede emplearse como una entrada/salida digital pero también como una entrada analógica para el convertidor A/D de 10 bits. Similarmente, el pin RC6 puede usarse como entrada/salida digital o bien como señal de trasmisión del puerto serial.

                         

 

LA MEMORIA RAM  Y LOS SFR:

El 18F2550 cuenta con 2048 localidades de memoria RAM. Sin embargo, parte de esta zona de memoria ya se encuentra asignada a funciones del microcontrolador: en las localidades 000-05F se encuentran los llamados registros de acceso a la RAM (Access RAM), los cuales son utilizados durante la ejecución del programa para el direccionamiento de la RAM y los registros especiales.

Adicionalmente, el buffer de memoria para el puerto USB del circuito, se encuentra en las localidades 400 a 7FF.

A partir de la dirección 060H, y hasta la dirección 3FF, está la zona de memoria RAM disponible para los programas del usuario.

Finalmente, en las direcciones F60 a FFF, se encuentran los llamados SFR "Special Function Registers" ó los registros de función especial, cuyo objetivo es permitir al usuario configurar las distintas funciones, circuitos e interfaces disponibles en el microcontrolador, como los puertos de E/S, los temporizadores, el puerto serial asíncrono, el puerto USB, los convertidores A/D, etc.

 

LOS REGISTROS ESPECIALES, SFR:

El 18F2550 es un microcontrolador con muy numerosas funciones y opciones de configuración. Cuenta con 83 registros especiales (Special function Registers, SFR) y 14 registros de configuración. Para ver la información completa sobre estos registros, por favor vea el data sheet del 18F2550.

Para aprender programación básica y el manejo de los puertos de entrada/salida, usaremos en los programas de prueba solamente los 11 registros especiales mostrados en la tabla de abajo y que son los más utilizados en aplicaciones simples.

En todos los programas realizados en lenguaje ensamblador, es indispensable declarar el archivo P18F2550.inc en donde se establecen las equivalencias entre los nombres de los registros y bits y sus direcciones, mediante la directiva:

#include P18F2550.inc

Al instalar el software MPLAB IDE, este archivo se almacena automáticamente en la carpeta de instalación.

 

SFR, nombre del registro Dirección Función
PORTA F80H Entradas/Salidas digitales
PORTB F81H Entradas/Salidas digitales
PORTC F82H Entradas/Salidas digitales
TRISA F92H Registro para configuración de E/S
TRISB F93H Registro para configuración de E/S
TRISC F94H Registro para configuración de E/S
STATUS FD8H Bits de Status del microcontrolador
FSR0L FE9H Registro de direccionamiento indirecto, parte baja
FSR0H FEAH Registro de direccionamiento indirecto, parte alta
PCL FF9H Contador del programa parte baja (manejo de tablas)
PCLATH FFAH Contador del programa parte alta (manejo de tablas)

 

PUERTOS DIGITALES

Puertos digitales : El 18F2550 cuenta con 3 puertos digitales, el puerto A, con 6 bits disponibles (RA0...RA5), el puerto B con 8 bits disponibles (RB0...RB7) y el puerto C con 7 bits disponibles. Un total de 21 bits. Todos los bits 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, “TRISB” para el puerto B y TRISC para el puerto C.

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

 

PUERTO A, PUERTO C

PUERTO B
RA0 ACTIVA/DESACTIVA EL RELEVADOR RB0 ACTIVA LED B0
RA4 LEE EL DIP SWITCH SW1 RB1 ACTIVA LED B1
RA5 LEE EL DIP SWITCH SW2 RB2 ACTIVA LED B2
RC1 LEE EL DIP SWITCH SW3 RB3 ACTIVA LED B3
RC2 LEE EL DIP SWITCH SW4 RB4 ACTIVA LED B4
  RB5 ACTIVA LED B5
  RB6 ACTIVA LED B6
  RB7 ACTIVA LED B7
 

 

EL REGISTRO STATUS

El registro llamado STATUS, contiene varias banderas de importancia para el manejo de los programas en el 18F2550. En la programación en lenguaje ensamblador, el uso adecuado de estas banderas es indispensable para su correcto funcionamiento.

- - - N OV Z DC C

-           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

-           los bits 3 y 4 son el OVERFLOW y el bit de resultado NEGATIVO, y son banderas que se activan, con un valor igual a 1, cuando el resultado de una operación o instrucción genera un overflow ó un resultado negativo en aritmética complemento a dos.

 

PLANTILLA Y PROGRAMAS EJEMPLO EN LENGUAJE ENSAMBLADOR

Use la plantilla para desarrollar sus propios programas. Recuerde que es indispensable el uso del software Bolt v1.0.1. para cargar los programas ejecutables .HEX en el módulo.

BOLT-PLANTILLA.asm Use este archivo como plantilla para desarrollar sus programas. Incluye una subrutina de retraso variable.
KEYBOLT.inc Archivo auxiliar para utilizarse con la plantilla. Almacene este archivo siempre en la misma carpeta que su archivo de aplicación. Incluye macros de inicialización y definiciones de puertos.
KEYBOLT2.inc Versión actualizada del archivo auxiliar, incluye macro para lectura de los microswitches SW4..SW1 y almacenamiento de su valor binario 0..15 en una localidad de memoria.
BOLT-CONTADOR-BINARIO.asm Cuenta binaria en los leds del puerto B, con retraso de 1 segundo.
BOLT-PARPADEA-UN-LED.asm Parpadea el led RB0 en períodos de 1 segundo.
BOLT-LEE-MICROSWITCHES.asm Lee los 4 microswitches SW1...SW4 y activa los leds RB0...RB3 de acuerdo a su valor.
BOLT-LEE-MICROSWITCHES-V-2.asm Variante del programa anterior. Lee los 4 dip switches SW1...SW4 y activa los leds RB0...RB3 de acuerdo a su valor.
VER TODOS LOS PROGRAMAS DISPONIBLES EN LENGUAJE ENSAMBLADOR Lista completa de programas.

 

DIAGRAMA ELECTRÓNICO DE LOS LEDS, LOS DIP SWITCHES EN EL SISTEMA BOLT 18F2550

 

 

DIAGRAMA DEL RELEVADOR EN EL SISTEMA BOLT 18F2550