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 : 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:
|
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.
- 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.
|
DIAGRAMA ELECTRÓNICO DE LOS LEDS, LOS DIP SWITCHES EN EL SISTEMA BOLT 18F2550
DIAGRAMA DEL RELEVADOR EN EL SISTEMA BOLT 18F2550
|