You are on page 1of 86

Herramientas para desarrollos sobre plataformas MCS-51 KEIL VISION 2

Ing. Gustavo Alessandrini Parte 1

Temario
Arquitectura MCS-51 Macro Assembler IDE para MCS-51
Edicin Debugger

Ejemplos

Familia 8051 - Hardware


Unidad aritmtico-lgica de 8 bits 32 pins de E/S (4 grupos de 8) que pueden ser accedidos individualmente 2 contadores/temporizadores de 8 bits Full duplex UART 6 fuentes de interrupciones con dos niveles de prioridad Espacios separados de memoria de cdigo y datos (64 kB c/u)

Organizacin de la memoria
FFFFh FFFFh

FFh

80h

FFh

SFR
7Fh 2Fh 1Fh 00h 80h 7Fh

0000h

00h

0000h

CODE

DATA

IDATA

XDATA

Modos de direccionamiento
Los modos de direccionamiento de un micro- computador son las diferentes formas de transformacin del campo de operando de la instruccin en la direccin (localizacin) del operando Se utilizan tcnicas de direccionamiento con los siguientes fines
Dar versatilidad de programacin al usuario proporcionando facilidades tales como ndices, direccionamientos indirectos, etc. Reducir el nmero de bits del campo de operando

Modos de direccionamiento
La disponibilidad de diferentes esquemas de direccionamiento le da al programador experimentado flexibilidad para escribir programas que son ms eficientes en cuanto a nmero de instrucciones y tiempo de ejecucin Es tal la importancia de los modos de direccionamiento, que la potencia de una mquina se mide tanto por su repertorio de instrucciones como por la variedad de modos de direccionamiento que es capaz de admitir

Modos de direccionamiento
La especificacin del modo de direccionamiento puede ir en el cdigo de operacin o en el campo de cada operando Modos de direccionamiento del 8051
Directo Indirecto Por registro Implcito Inmediato Indexado

Modos de direccionamiento
Direccionamiento directo
ADD A,4Ch
MOV A,@R0 MOVX A,@DPTR

A (A)+(4C)
A ((R0)) A ((DPTR))

Direccionamiento indirecto

Direccionamiento por registro


MOV Rn,A MOV Rn,#FFh Rn (A) Rn FF

Modos de direccionamiento
Direccionamiento implcito
INC A MOV A,#3Dh A (A)+1 A 3D

Direccionamiento inmediato
Direccionamiento indexado MOVC A,@A+DPTR A ((A)+(DPTR))

Modos de direccionamiento
DATA and IDATA
MOV R1, #22H MOV A, @R1 MOV @R0, A INC R0 INC R1

acceso

;set R1 to point at DATA address 22H ;read the value at DATA address 22H ;into the accumulator ;write the value in the accumulator ;to IDATA address A9H ;set R0 to point at IDATA address AAH ;set R1 to point at DATA address 23H

MOV R0, #0A9H ;set R0 to point at IDATA address A9H

MOV 34H, @R0 ;write the value at IDATA address AAH ;to DATA address 34H MOV @R1, #67H ;write 67H to DATA address 23H

Modos de direccionamiento
XDATA acceso
MOV DPTR, #3048H ;set DPTR to point at XDATA address ;3048H MOVX A, @DPTR ;read the data at XDATA address 3048H ;into the accumulator INC DPTR ;3049H MOV A, #26H ;set the accumulator to 26H MOVX @DPTR, A ;write 26H to XDATA address 3049H ;set DPTR to point at XDATA address

MOV R0, #87H

;set R0 to point at XDATA address 87H

MOVX A, @R0 ;read the data at XDATA address 87H ;into the accumulator

Modos de direccionamiento
CODE acceso
MOV DPTR, #TABLE_BASE ;set DPTR to point at the ;base of a lookup table MOV A, index ;load the accumulator with an ;index into the table ;read the value from the ;table into the accumulator

MOVC A, @A+DPTR

Sistema de interrupciones
El 8051 bsico tiene 6 fuentes de interrupciones
2 fuentes externas (INT0, INT1) 2 fuentes internas timer/counter 2 fuentes internas provenientes de la lnea serie (recepcin y transmisin)

Vector de interrupciones
Fuente Reset External 0 Timer 0 External 1 Timer 1 Serial RX/TX Timer 2 (8052) Direccin de salto 0000h 0003h 000bh 0013h 001bh 0023h 002bh

Prioridad de las interrupciones


El 8051 soporta dos niveles de prioridad para atender las interrupciones: alta y baja Un servicio de atencin de una interrupcin de baja prioridad solo puede ser interrumpido por una interrupcin de alta prioridad Un servicio de atencin de una interrupcin de alta prioridad no puede ser interrumpido

Prioridad de las interrupciones


A cada fuente de interrupcin se le puede individualmente asignar alta o baja prioridad de acuerdo a como se programe el bit asociado en el registro IP (interrupt priority)

PT2

PS

PT1

PX1

PT0

PX0

(IP) Interrupt priority register. Bit addressable B8h

1: alta prioridad
0: baja prioridad

Habilitacin de interrupciones
Todas las interrupciones pueden ser habilitadas o bloqueadas en forma general Cada fuente de interrupcin puede individualmente habilitarse o bloquearse
EA ET2 ES ET1 EX1 ET0 EX0

(IE) Interrupt enable register. Bit addressable B8h

1: fuente de interrupcin habilitada


0: fuente de interrupcin deshabilitada

Temporizadores y contadores
El 8051 bsico tiene 2 registros utilizables como temporizadores / contadores 8, 13 16 bits de cuenta Pueden utilizarse
Como temporizador
fc = 1/12 fosc

Como contador de eventos externos


fmxima de evento = 1/24 fosc

Temporizador/contador
Modo 13 16 bits sin auto recarga

Temporizador/contador
Modo 8 bits con auto recarga

UART
Unidad Asincrnica de Recepcin Transmisin serie
Full duplex UART, bajo control del software 8 9 bits de palabra de datos Velocidad de comunicacin programable

Tipos de memoria
CODE
Reservado para el programa 64 kBytes

DATA
Memoria interna para datos, direccionable en forma directa 128 Bytes Rpido acceso

Tipos de memoria
IDATA
Memoria interna para datos, direccionable en forma indirecta 128 Bytes (8051), 256 Bytes (8052)

BDATA
Memoria interna para datos, direccionable de a bit (128 bits) Uso con direccionamiento directo 16 Bytes

Tipos de memoria
XDATA
Memoria externa para datos 64 kBytes

PDATA
Memoria externa paginada para datos 256 Bytes

Programacin del 8051


Macro Assembler Ax51

Programacin del 8051


Assembly Statements: Un programa escrito en assembly est formado por un conjunto de declaraciones (statements), las cuales pueden ser de 3 tipos
Directivas Control Instrucciones (mnemnicos)

Programacin del 8051


Las declaraciones deben estar contenidas en una nica lnea de cdigo Cada lnea de un programa puede contener una nica declaracin de control, directiva o instruccin No son column sensitive esto significa que pueden indentarse Todos los programas deben finalizar con la directiva END para indicar al ensamblador que all finaliza el programa

Programacin del 8051


Directivas Proporcionan al programador un medio para indicar al ensamblador como procesar las instrucciones Permiten definir constantes y reservar espacio para variables Las directivas no deben ser confundidas con instrucciones

Programacin del 8051


Las directivas se dividen en categoras
Control de segmento Definicin de smbolos Inicializacin de memoria Reserva de memoria Declaracin de procedimientos Enlace de programa Control de direcciones Otras

Programacin del 8051

Programacin del 8051


Declaraciones de control
Controlan las operaciones que realiza el ensamblador cuando genera un archivo de listado o un archivo de cdigo objeto. Las declaraciones condicionales indicarn al ensamblador qu cdigo es ensamblado, bajo ciertas condiciones Deben comenzar con el caracter $ ej: $INCLUDE (reg51.inc)

Programacin del 8051


Instrucciones
Son las rdenes especficas que generarn cdigo de programa cuando sean ensambladas por el ensamblador En general tienen el siguiente formato
[etiqueta:] mnemnico [operando] [,operando] [,operando] [;comentario]

Programacin del 8051


Comentarios
Son lneas de texto que pueden (deben) ser includas en el programa para identificar y explicar las partes del mismo Pueden ubicarse en cualquier lugar Deben ir precedidos del caracter ; Los comentarios no tienen impacto sobre la generacin del cdigo objeto

Programacin del 8051


Smbolos
Un smbolo es un nombre que define el programador para representar una constante, variable, direccin, etc. Los nombres se componen de caracteres permitidos (hasta 31) { A-Z, a-z, 0-9, _, ? } Deben comenzar con cualquiera de los caracteres anteriores, excepto los dgitos Assembly no es case sensitive

Programacin del 8051


Etiquetas (labels)
Una etiqueta es un smbolo que se utiliza para definir un lugar en el programa Las reglas aplicadas a nombres de smbolos tambin se aplican para etiquetas Una etiqueta debe ser el primer texto en una lnea Debe estar seguida del caracter : Puede estar precedida por tabulaciones o espacios Se puede definir una nica etiqueta por lnea

Programacin del 8051


Operandos, expresiones y operadores
Un operando es una constante numrica, smbolo, expresin o cadena de caracteres que dependen de la directiva o instruccin donde se utilice Una expresin es una combinacin de, nmeros, smbolos y operadores, que se evaluan para obtener un nmero como resultado Las expresiones son evaluadas en tiempo de ensamblado

Programacin del 8051


Operandos, expresiones y operadores (cont)
Los operadores se utilizan para combinar operandos dentro de un programa, no son instrucciones de programa, ni generan cdigo Los operadores representan operaciones que son evaluadas en tiempo de ensamblado

Programacin del 8051


Macros (Standard Assemblers Macros)
Una macro es un nombre que permite colocar en un programa un conjunto de declaraciones (instrucciones, directivas), que sern ensambladas en aquellos lugares del programa donde dicho nombre fue invocado No debe ser confundida con una subrutina

Programacin del 8051


Cundo utilizar subrutinas o macros?
Subrutinas son ms usadas cuando un procedi-miento se usa frecuentemente o si la cantidad de memoria utilizada debe mantenerse al mnimo Macros deberan utilizarse cuando se necesita mxima velocidad de procesador y/o cuando no importa la cantidad de memoria usada Macros son ms adecuadas cuando se utilizan bloques de cdigo pequeos en forma repetitiva, para la creacin de tablas de conversin, etc.

Programacin del 8051


Directivas para macros: Se utilizan especficamente en la definicin de la macro
ENDM
Finaliza la definicin de la macro

EXITM
IRP IRPC

Termina la expansin de la macro


Especifica una lista de argumentos que son sustituidos por parmetros especificados en las siguientes lneas Especifica un argumento que es sustitudo, un caracter a la vez, por un parmtero especfico en la lnea siguiente Indica un smbolo local usado dentro de la macro Indica un comienzo de definicin de macro, su nombre, y lista de argumentos pasados a la macro Indica la repeticin de las lineas siguientes de la macro

LOCAL
MACRO REPT

Programacin del 8051


Definicin de una macro
La macro debe estar definida antes de ser utilizada Debe comenzar con la directiva MACRO, la cual declara el nombre con que ser invocada y los parmetros que recibe Debe finalizar con la directiva ENDM El texto entre MACRO y ENDM se denomina cuerpo de la macro

Programacin del 8051


Definicin de una macro (ejemplos)
nombre

WAIT
cuerpo

MACRO REPT NOP ENDM ENDM

parmetro X ; macro definition X ; generate X NOP instructions ; end REPT ; end MACRO ; macro definition ; make sure X has a value ; if not then exit ; generate X NOP instructions ; end REPT ; end MACRO

WAIT2

MACRO X IF NUL X EXITM ENDIF REPT X NOP ENDM ENDM

Programacin del 8051


Parmetros de una macro
Pueden pasarse hasta 16 parmetros en su lnea de invocacin Deben estar separados por comas, tanto en la definicin como en la invocacin de la macro

Programacin del 8051


Parmetros de una macro (ejemplo)
CLRMEM MACRO LOCAL MOV MOV MOV MOV INC DJNZ ENDM ADDR, LEN LOOP R7, #LEN R0, #ADDR A, #0 @R0, A R0 R7, LOOP

; etiqueta local

LOOP:

Programacin del 8051


Repeticiones de bloques en una macro
REPT, IRP e IRPC son directivas de macros para repetir bloques de texto en el cuerpo de una macro Cada una de estas directivas debe finalizar con su propia directiva de finalizacin ENDM

Programacin del 8051


REPT repite un bloque de texto un nmero n de veces
DELAY MACRO ; macro definition NOP

REPT instructions NOP


ENDM ENDM

5 ; insert 5 NOP

NOP
NOP

NOP
; end REPT block ;end macro definition NOP

Programacin del 8051


IRP repite un bloque de texto, uno por cada argumento
CLRREG MACRO
IRP

; macro definition

MOV MOV

R0, #00h R1, #00h

RNUM, <R0,R1,R2,R3,R4,R5,R6,R7>

MOV
ENDM ENDM

RNUM, #00h
; end IRP ; end macro definition

MOV
MOV MOV

R2, #00h
R3, #00h R4, #00h

MOV
MOV

R5, #00h
R6, #00h

MOV

R7, #00h

Programacin del 8051


IRPC repite un bloque de texto, uno por cada caracter en el argumento dado
ERROUT MACRO
IRPC

; macro definition

CHR, <Err>

jnb
clr

TI, $
TI

mov
mov

a, # CHR
SBUF, A

ENDM
ENDM

; end IRPC
; end macro definition

jnb clr mov mov jnb clr mov mov jnb clr mov mov

TI, $ TI A, # E SBUF, A TI, $ TI A, # r SBUF, A TI, $ TI A, # r SBUF, A

Programacin del 8051


Llamado (invocacin) de una macro
Una vez que la macro fue definida, puede ser llamada varias veces desde distintos puntos del programa El llamado consiste del nombre de la macro seguido por los parmetros que puede recibir

Programacin del 8051


Llamado (invocacin) de una macro
DELAY MACRO n ; macro definition ; insert n NOP

Definicin

REPT instructions NOP

ENDM
ENDM ... mov

; end REPT block


; end macro definition P0, #0 ; clear port 0

Llamado
Llamado

DELAY
mov DELAY ...

10
20

; wait 10 NOPs
; set P0 ; wait 20 NOPs

P0, # 0ffh

Proceso de desarrollo SW
.asm A51 .obj .lib .obj .obj L51

.lst

LIB51 .lib
OH51

.bin
V2
In Circuit Emulator

.map

.hex
Kit evaluacin Programador Eprom

Herramientas de desarrollo SW
Vision/51 Compilador C51 Biblioteca C LIB51 Linker BL51
dScope-51
VISION 2

Macro assembler A51 RTX51

Programador EPROM

Kit desarrollo DE-EB51

Herramientas de desarrollo SW
Ejecutable
llave en modo : LOAD

Carga desde PC (.HEX)


llave en modo : RUN

Ejecucin

Depuracin
Fin depuracin?

Correccin

Fin!

Vision2 IDE

Manejo de proyectos Facilidades para la creacin de programas ejecutables Edicin de cdigo fuente Depuracin (debugging) de programas Simulacin en el mismo ambiente de desarrollo

Vision2 IDE

Vision2 permite trabajar ms rpido a travs de una plataforma fcil de usar El editor y el depurador estn integrados en una misma aplicacin suministrando un ambiente de desarrollo nico para todo el proyecto

Vision2 IDE

Project window

Source code editor window

Output window

Project management

Un proyecto es un conjunto de archivos con cdigo que son compilados/ensamblados y enlazados (linkeados) para obtener un nico cdigo de programa ejecutable

Project window

Project management
Creacin de un nuevo proyecto:

1. Seleccionar New Project desde Project menu para abrir una New Project dialog box 2. Ingresar el nombre del proyecto en la Project Name box 3. Seleccionar la carpeta para guardar el proyecto (Sugerencia: utilizar una carpeta para cada proyecto) 4. Click OK 5. Luego de oprimido OK (o guardar) aparece la opcin para seleccionar un dispositivo para el objetivo (target) que se est creando, aqui debe escogerse de la lista el indicado para el proyecto en cuestin (Sugerencia: utilizar ATMEL 89C52 que es el utilizado en los kits de desarrollo) 6. Click OK

New Project

Project management
Agregado de archivos al proyecto:

En el target creado, se deben agregar el/los archivo/s que formarn parte del proyecto, esto implica dos operaciones: Abrir un nuevo archivo En la entrada de men file oprimir New , esto abrir un espacio en blanco en la ventana de edicin de cdigo Guardar el archivo creado con nombre y extensin (a51 asm), con la opcin Save As Agregar el archivo creado al proyecto En la ventana de proyecto, haciendo click con el botn derecho sobre la carpeta Source Group 1, seleccionar la opcin Add file to group Seleccionar el archivo creado de la lista y oprimir Add

Agregado de archivos

Agregado de archivos

Opciones para el proyecto

El cuadro de dilogo Options for target se abre oprimiendo el botn en la barra de herramientas o click del botn derecho sobre la carpeta Target 1 en la ventana de proyecto Sugerencia: No modificar las opciones establecidas por defecto, excepto la frecuencia de cristal, y en las opciones de salida seleccionar la opcin Create Hex File, para que genere el archivo .hex que se utilizar en el kit de desarrollo

Editor

Editor toolbar

Build toolbar

Build toolbar

Build project

Construir el proyecto significa realizar los pasos necesarios para obtener el programa ejecutable Cada proceso involucrado (ensamblado, enlazado, creacin del .hex) generar un reporte de salida visible en la output window

Build project

Debugger window

Debugger

Debugger toolbar

Debugger

Distintas opciones para ejecutar un programa Ejecucin normal (run) Paso a paso Por funcin (o subrutina completa) Hasta terminar la funcin (o subrutina) Hasta la posicin del cursor

Debugger

Distintas opciones para detener la ejecucin de un programa Detencin normal (halt execution) Breakpoints Se pueden colocar/retirar breakpoints durante la edicin del cdigo, los cuales sern activados en la sesin de debugger

Debugger

Atributos: Muestran sobre la primer columna de la ventana de cdigo el estado de ejecucin del programa, breakpoints, etc.

Debugger

Watch window: Muestra el valor actual de variables y permite el cambio de los mismos Memory window: Permite observar el estado de 2 reas de memoria y cambiar su contenido

Watch window

Memory window

Debugger

Simulacin de perifricos, interrupciones, registros y puertos (pins) de entrada/salida

Simulacin de registros

Permite observar y/o modificar el estado de registros internos del micro-controlador Indica la cantidad de ciclos de instruccin y el tiempo (en segundos de acuerdo con el cristal seleccionado) que transcurrieron desde el comienzo de la ejecucin

Simulacin E/S

Permite colocar en estado alto/bajo cualquiera de los pins del dispositivo seleccionado Indica el estado cuando el programa acta sobre un determinado puerto o pin

Simulacin timers/counters

Permite modificar el estado de cuenta, modo de trabajo, etc. del dispositivo seleccionado Indica estado del temporizador (contador) cuando el programa lo modifica

Simulacin interrupciones

Permite modificar el estado del sistema de interrupciones Indica estado del sistema cuando el programa lo modifica Activacin o desactivacin de pedidos externos, pueden hacerse por los respectivos pins

Simulacin UART

Permite modificar el estado de los registros asociados a la UART Indica estado de la UART cuando se produce una recepcin/transmisin

Serial window

Permite la emulacin de una terminal para la UART Modos de edicin ASCII o HEX pueden ser configurados por un men local

Disassembly window

Permite observar en una misma ventana el cdigo fuente y el cdigo objeto del programa que est siendo depurado Muy til cuando se programa en lenguaje C y se quiere observar el cdigo que gener el compilador para una determinada funcin o bloque

Disassembly window

Code coverage

Muestra el porcentaje de las instrucciones del programa que han sido ejecutadas Permite detectar facilmente partes del cdigo que no han sido ejecutadas

Perfomance analyzer

Guarda y muestra el tiempo de ejecucin de funciones o bloques del programa Utilizable para analizar donde el programa consume ms tiempo de ejecucin

Debugger
IMPORTANTE: Para una visualizacin correcta de la ejecucin del programa, se debe activar la opcin Periodic Window Update en la entrada de men View

Bibliografa recomendada

uv2_v2.pdf Keil Vision2 IDE an Debugger Quick Start Gs51.pdf Getting Started and Creating Applications. Keil software A51.pdf Macro Assembler and Utilities. Keil software Finalwd.pdf The final word on 8051. Keil software 01502a01.pdf AP-69 An Introduction to the Intel MCS-51 Single-Chip microcomputer family

You might also like