Académique Documents
Professionnel Documents
Culture Documents
LENGUAJE ENSAMBLADOR
Microcontroladores: Tema 3
Qu es el lenguaje Ensamblador?
Es un lenguaje de computadora que se encuentra en el
trmino medio de un lenguaje de alto nivel y el lenguaje de
mquina ejecutado por un microcontrolador.
LENGUAJE
ALTO NIVEL
Inicio:
For I = 1 to 10 do
begin
valor = valor + 2
end
LENGUAJE
ENSAMBLADOR
movlw
movwf
movff
movlw
movf
0x01
0x30
0x30,0x40
0x00
0x40,W
LENGUAJE
MAQUINA
0x0108
0x010A
0xC030
0xE000
0x5040
Microcontroladores: Tema 3
Crossasembler?
El ensamblador utilizado para programar un
microcontrolador es llamado
crossasembler o ensamblador cruzado ya
que el cdigo generado no es ejecutado
en la plataforma de desarrollo.
Microcontroladores: Tema 3
Programa
Fuente
Ensamblador
*.asm
Programa
Objeto
*.O
Linker
Ejecutable
*.hex
Emulador
Simulador
*.cof
*.O
Programador
Microcontroladores: Tema 3
Instrucciones de mquina
Directivos de ensamblador
Control del ensamblador
Comentarios
Cdigo
Fuente
Microcontroladores: Tema 3
Microcontroladores: Tema 3
Etiqueta de Direccin
Representa con un nombre la direccin
donde se encuentra localizada la instruccin
que la precede
Microcontroladores: Tema 3
Comentario
INICIO: movf 0x020,W ;Lee registro
Comentarios:
Deben iniciar con punto y coma ;
Microcontroladores: Tema 3
Smbolos predefinidos
Nombres que el ensamblador maneja como
default y que representa los registros y
direcciones empleadas mnemnicamente
por el fabricante
Microchip los define en un archivo llamado
NO_PARTE.INC P18F45K22.INC
Instruccin
Equivalencia
addwf 0x40,WREG
bsf
LATA,0x00
addwf 0x40,0xFE8
bsf
0xF89,x00
Microcontroladores: Tema 3
Evaluacin de Expresiones
Las direcciones, constantes y operandos
pueden ser representadas de tres maneras
para facilitar la legibilidad del programa
movwf
Explcito
Predefinido movwf
movwf
Expresin
10
0xFB2
TMR3
0xFB1 + 1
Microcontroladores: Tema 3
Bases Numricas
Para facilitar la legibilidad, el ensamblador
permite expresar los nmeros en varias bases
numericas. La indicacin del tipo de base se
realiza por medio de un prefijo. La base o radix
default es hexadecimal pero se puede modificar
11
Microcontroladores: Tema 3
Directivas de ensamblador
Son instrucciones que le indica al ensamblador
a hacer cosas diferentes a la generacin de
cdigo de mquina.
Control
Condicionales
Datos
Listado
Macro
Objeto
12
Microcontroladores: Tema 3
Control
Controlan como ser ensamblado el programa
13
Microcontroladores: Tema 3
Condicional
Permiten que ciertas secciones del cdigo sean
ensambladas o no dependiendo de una condicin
lgica. NO son como las condicionales en lenguaje de
alto nivel
14
Microcontroladores: Tema 3
Datos
Controlan la alocacin de memoria y proveen un
medio para referirnos a estos elementos en forma
simblica
15
Microcontroladores: Tema 3
Listado
Controlan el formato de salida del archivo de listado
(*.LST). Permiten definir titulos, paginacin etc..
16
Microcontroladores: Tema 3
Macro
Permiten la creacin de macros que nos evitan tener
qu estar re-escribiendo grupos de instrucciones
17
Microcontroladores: Tema 3
Objeto
Usadas para la creacin de cdigo objeto.
18
Microcontroladores: Tema 3
Definicin de constantes
Directivo equ
CUATRO
ACC
OTRO_CUATRO
SON_DOS
19
equ
equ
equ
equ
4
WREG
CUATRO
CUATRO/2
Microcontroladores: Tema 3
Definicin de Variables
Directivo set
Define variables en ram interna.
MI_VARIABLE
20
set
0x00
Microcontroladores: Tema 3
db
db
db
Copyright 2012
0x01,0x03
'A',Hola,04h
;Ascii literal
;Tabla de ctes
;Mezclado
Cuando se usa en la generacin de cdigo relocalizable se puede usar para definir espacio de
RAM
21
Microcontroladores: Tema 3
Directivo org
Asigna el operando al que precede un valor
absoluto de direccin de modo que todas las
instrucciones estaran localizadas a partir de
esa direccin.
org 0x0000
bra inicio
inicio:
22
org 0x0100
;Direccion de codigo 0100
addwf 0x40,WREG
Microcontroladores: Tema 3
Ms sobre Directivos
El lenguaje ensamblador, tiene la capacidad
de manejar mdulos independientes. Los
directivos asociados a este esquema de
programacin quedan fuera del alcance del
curso.
23
Microcontroladores: Tema 3
Sobre el Linker
El Linker es un programa utilizado para
unir varios archivos objeto relocalizable
en un archivo objeto ms grande.
24
Microcontroladores: Tema 3
Sobre el Linker
La herramienta
MPLAB realiza el
proceso en forma
automtica, sin
embargo esta
definicin puede
requerir cambios en
ciertas aplicaciones.
25
Microcontroladores: Tema 3
Programacin
26
Microcontroladores: Tema 3
Programas
27
Entender el problema
Definir la estrategia de solucin
Definir el algoritmo
Codificacin
Pruebas y depuracion (debug)
Liberacin
Mantenimiento
Microcontroladores: Tema 3
Banda Transportadora
TORRETA
SENSOR
CONTENEDOR
MOTOR
BOTON DE
ARRANQUE
CONTROLADOR
BASADO EN PIC18
28
Microcontroladores: Tema 3
29
Microcontroladores: Tema 3
Banda Transportadora
El programa de control deber de realizar lo
siguiente:
Esperar el botn de arranque
Contar el nmero de cajas
Si el nmero llega a un MAXIMO
Parar la banda transportadora
Encender una torreta
Esperar de nuevo el botn de arranque.
30
Microcontroladores: Tema 3
Banda Transportadora
Seales en sensores y actuadores:
RB4
BOTON
PRESIONADO
RD0
MOTOR
ENCENDIDO
1
0
RB5
0
RD1
SENSOR
CAJA PRESENTE
TORRETA
ENCENDIDA
1
0
31
Microcontroladores: Tema 3
INCIO
INICIALIZAR
NO
BO TO N
PRESIONADO
ENCENDER MO TO R
APAGAR TO RRETA
NO
CAJA
PRESENTE
CUENTA =
CUENTA + 1
INICIALIZAR
CUENTA
NO
CAJA
AUSENTE
32
CUENTA
= MAXIMO ?
ENCENDER
TO RRETA
SI
APAG AR
MO TO R
Microcontroladores: Tema 3
33
Microcontroladores: Tema 3
;****************************************************************************
;*
Programa principal
;****************************************************************************
inicia:
org
bra
0x0000
inicia
org
call
0x0100
inicializa_p
34
PORTA,MOTOR
PORTA,TORRETA
CUENTA
Microcontroladores: Tema 3
btfsc
bra
PORTA,BOTON
espera_boton
btfss
bra
PORTA,SENSOR
espera_caja1
0x01
CUENTA,F
;Vamos a sumoar 1 W = 1
;Sumamos CUENTA = CUENTA + W
btfsc
bra
PORTA,SENSOR
espera_caja2
movlw
cpfseq
bra
MAXIM0
CUENTA
espera_caja1
35
bcf
clrf
bra
PORTA,TORRETA
CUENTA
espera_boton
Microcontroladores: Tema 3
*.LST
Listado del programa
*.COF
Archivo para la herramienta de debug
*.HEX
Archivo ejecutable (formato INTEL HEX)
36
Microcontroladores: Tema 3
Archivo Ejecutable
El archivo que va a ser ejecutado por el microcontrolador
puede ser generado en varios formatos, entre los
principales formatos se encuentran:
37
Microcontroladores: Tema 3
38
Registro de datos
Registro de fin
Registro segmentado
Registro lineal
0x00
0x01
0x02
0x04
Microcontroladores: Tema 3
Check
Sum
:0400000080EF00F09D
Inicio
39
Cantidad
de
Bytes
Tipo
4 Bytes
80,EF,00,F0
Microcontroladores: Tema 3
Documentacin.
Los programa en lenguaje ensamblador como en
cualquiere lenguaje deben de ser adecuadamente
documentados para facilitar el mantenimiento.
El lenguaje ensamblador es muy criptico si lo
comparamos con otros lenguajes por lo que la
documentacin se vuelve un factor muy importante.
Un programa sin documentacin es un programa que no
puede ser mantenido, un programa que no puede ser
mantenido acaba en la basura ......y......
Firmware is the most expensive thing in the universe, yet
we do little to control its costs (Jack Ganssle dixit)
40
Microcontroladores: Tema 3
Documetacin.
Se recomienda que todo programa deber de iniciar con un
encabezado con mnimo la siguiente informacin:
Autor
Fecha de creacin
Archivo
Versin/Revisin y fecha
Layout de los puertos y dispositivos destino
Abstract de como funciona
Herramientas empleadas para su desarrollo
Ensamblador/Linker/versiones etc.
Microcontroladores: Tema 3
Documetacin.
Se recomienda tener una seccin a manera de bitcora
donde se indica:
42
Versin anterior
Archivo anterior
Versin actual
Archivo actual
Fecha de la revisin
Abstract de los cambios realizados.
Microcontroladores: Tema 3
Documetacin.
Se recomienda que cada procedimiento y subrutina lleve
un encabezado donde se describe su funcin.
Se recomienda el uso exahustivo de comentarios para
indicar en forma textual lo que las intrucciones estan
realizando.
Se recomienda que las variables tengan nombres
coherentes con su funcin y sean lo ms descriptivas
posibles.
Existen muchos estilos para el nombramiento de variables
y tipos, se debe de probar con varios para encontrar el que
mejor se adapte a la organizacin.
43
Microcontroladores: Tema 3
Instrucciones de rotacin
44
Microcontroladores: Tema 3
Resumen
45
Lenguaje ensamblador
Elementos del lenguaje
Ejemplos de programas
Archivos
Documentacin.
Microcontroladores: Tema 3
Rotacin izquierda
7
rlcf f,d,a
rlncf f,d,a
46
Microcontroladores: Tema 3
Rotacin derecha
C
rrcf f,d,a
rrncf f,d,a
47
Microcontroladores: Tema 3
48