Está en la página 1de 9

LABORATORIO DE PROGRAMACION EN ASEMBLER

SESION: 3 MODULO: 1

TEMA: PUERTOS DIGITALES DE I/O (GPIO) II

I. OBJETIVOS:
 Continuar viendo lo que son las entradas y salidas digitales GPIO
 Configurar los nuevos registros de microcontrolador de la familia 18F
 Familiarizarse con el SET de instrucciones del PIC18F4550
 Implementar banco de pruebas con el PIC18F4550
II. MATERILAES Y EQUIPOS
 Software MPLAB X IDE y PROTEUS 8
 Microcontrolador PIC18F4550, protoboard, resistores, leds y otros componentes de
prueba.

III. CONCEPTOS Y DEFINICIONES

RUTINA. – Se utiliza este término para nombrar en general a los códigos escritos en ensamblador.

SUBRUTINA. - Es una sección de codigo en ensamblador separado de la rutina principal que puede
ser llamado para realizar una función específica. Una subrutina puede ser llamada por la rutina
principal u otra subrutina tantas veces como sea necesario. Se accede mediante su etiqueta y la
instrucción CALL, la cual carga al PC la posición de memoria de la subrutina, a su vez el PC guarda
su valor en la PILA. Una vez finalizado las instrucciones de la subrutina, se retorna a la rutina
principal con un RETURN. En la Figura 1 detalle del flujo de un llamado a subrutina.

DIRECTIVA DEL EMSAMBLADOR. – Son las instrucciones/comandos que no pertenecen al set de


instrucciones del microcontrolador, son instrucciones propias del ensamblador que nos permiten
simplificar ciertas tareas al programar. Alguna de las directivas que más utilizaremos son:

 EQU: Para definir etiquetas, nombres y constantes.


 ORG: Indica al ensamblador la dirección donde empieza la ejecución del programa. Por lo
general empezaremos con 0x00.
 #INCLUDE: Indica los ficheros que deberán ser añadidos al codigo durante el ensamblado,
similar a su uso en C/C++. Usaremos archivos con extensión “.INC” y “.ASM”.
 #DEFINE: Indica sección del codigo que será remplazado durante el ensamblado, su uso
para establecer macros o definiciones de parámetros del programa, similar a su uso en
C/C++.
 LIST: Indica al ensamblador el dispositivo de trabajo, obligatorio en todos los programas.

LABORATORIO DE PROGRAMACIN EN ASEMBLER 1


 END: Indica el fin del programa, siempre debe ir en la última línea del programa.
 MACRO: Su uso se verá en la siguiente sección.

Rutina Principal

78H CALL
79H 0x00
80H 0x12 Subrutina
PILA 81H 1200H

0x78 RETURN
200H
201H
CALL Todas las subrutinas
202H terminan en una
203H 0xFF instrucción de retorno

Fig.1 Invocación de una subrutina, y retorno de la misma.

MACRO. – Los Macros consisten en una secuencia de instrucciones y directivas las cuales las
cuales pueden ser escritas para aceptar distintos argumentos y así lograr instrucciones de más
alto nivel al programar. A diferencia de una subrutina, cada vez que se invoca una macro, el código
es copiado completamente por el ensamblador para su remplazo en la etiqueta del código antes
de realizar el ensamblaje. En la figura 2 la sintaxis de una macro.

Fig.2 Sintaxis de una macro en ensamblador.

El uso de las macros se verá a más detalle en los ejercicios resueltos.

LABORATORIO DE PROGRAMACIN EN ASEMBLER 2


Fig.3 Ejemplo de macro para realizar la suma de dos números.

Salida digital. Registro LATx . – Para los PIC18 tenemos un registro más a configurar, mediante
este registro se ponen en alto o en bajo un bit.

 Bit a “0” del LATx salida digital en bajo(“0”)


 Bit a “1” del LATx salida Digital en alto(“1”)

Entrada digital. Registro PORTx . – Para los PIC de la Familia PIC18, el registro PORTx es de lectura,
se usa solo para entradas digitales, este caso lo veremos en los ejemplos.

 REGISTRO INTCON2,7: El bit RBPU=0 habilita los pull-up internos de puerto B

MASCARA. – Se utiliza con la finalidad de solo alterar un bit en el registro, esto es cuando solo
queremos definir un bit como cero-uno o conmutar su valor. Utilizamos para ello las operación
AND, OR o XOR respectivamente.

Fig.4 Ejemplo grafico de mascara, una vez aplicada nos permite modificar un solo bit

TABLA. – Se utilizan para hacer una consulta de un grupo de valores almacenados en la RAM,
según la posición (índice) que ocupan, se verá el detalle del uso de una tabla de datos con el
ejercicio 2.

LABORATORIO DE PROGRAMACIN EN ASEMBLER 3


IV. Ejemplos Resueltos con Entradas y Salidas

EJERCICIO 1A. BLINK de LED a 1SEG

Modificar la rutina de retardo del laboratorio anterior para temporizar un tiempo de 1Seg, usar
subrutina para indicar el tiempo a temporizar. Considerar el oscilador interno de 4MHZ

Desarrollo

Creamos un nuevo proyecto, damos el nombre ejercicio1_A, seleccionamos el PIC18F550 y


escribimos el siguiente código:

LABORATORIO DE PROGRAMACIN EN ASEMBLER 4


Comprobamos funcionamiento en Proteus:

EJERCICIO 2. TABLA DE DATOS- DISPLAY DE 7 SEGMENTOS

Realizar un programe que muestre por un display de 7 segmentos el valor de una cuenta
ascendente de 1 segundo. Considerar oscilador interno de 4MHz.

Desarrollo:

Tenemos el siguiente diagrama de flujo:

LABORATORIO DE PROGRAMACIN EN ASEMBLER 5


Iniciar

Define las variables de tiempo y la tabla.


Oscilador interno a 4MHZ

Configurar PuertoD como salida,


CONTADOR=0

NO BUSCA TABLA, LUEGO


PORTD=VALOR_TABLA(CONTADOR)
CONTADOR++

¿CONTADOR = 10 ?

SI

CONTADOR = 0

Creamos un nuevo proyecto, damos el nombre ejercicio2, seleccionamos el PIC18F4550 y


escribimos el siguiente código:

LABORATORIO DE PROGRAMACIN EN ASEMBLER 6


LABORATORIO DE PROGRAMACIN EN ASEMBLER 7
Comprobamos funcionamiento en Proteus:

LABORATORIO DE PROGRAMACIN EN ASEMBLER 8


V. Ejercicios Propuestos

Desarrollar cada uno de los ejercicios como nuevo proyecto. Probar el funcionamiento de los
mismos con el software de simulación proteus e implementar de ser posible. La evaluación de
los problemas es a la entrada de la siguiente clase.

1. Modificar el Ejercicio 1A para utilizar el oscilador interno de 8MHZ, y un oscilador


externo de 20MHz
2. Escribe un programa que reciba 2 número de A, y B de 2 bits y realice la suma de los dos,
mostrar su resultado en el display de 7 segmentos.

OBS: Para los 2 ejercicios considerar PIC18F4550 y oscilador interno de 4MHZ

LABORATORIO DE PROGRAMACIN EN ASEMBLER 9

También podría gustarte