Professional Documents
Culture Documents
Programacin Assembler
El conjunto de instrucciones que tiene un
microprocesador da origen al denominado lenguaje
assembler o lenguaje ensamblador.
Es un lenguaje de programacin de bajo nivel para
los computadores, uP, uC y otros circuitos
integrados programables.
Programacin Assembler
El lenguaje ensamblador fue usado principalmente
en los inicios del desarrollo de software, cuando
an no se contaba con potentes lenguajes de alto
nivel y los recursos eran limitados.
Actualmente se utiliza con frecuencia en ambientes
acadmicos y de investigacin, especialmente
cuando se requiere la manipulacin directa de
hardware, altos rendimientos, o un uso de recursos
controlado y reducido.
Programacin Assembler
Elaborar programas mediante cdigo de operaciones
(byte code) resulta complicado y tedioso. Ejemplo:
Calcular las direcciones de salto para instrucciones
condicionales.
Herramientas de Programacin
Para desarrollar programas en assembler de PIC, la
empresa Microchip proporciona un conjunto de
herramientas de programacin.
MPLABX: Es un editor IDE gratuito, destinado a
microcontroladores de la marca Microchip. Este editor
es modular, permite seleccionar los distintos
microcontroladores soportados, adems de permitir la
grabacin de estos circuitos integrados directamente al
programador.
MPLABX es ejecutable en Windows, MacOS y Linux.
MPLABX trae incorporado un compilador para asembler
de PIC denominado MPASM.
Herramientas de Programacin
10
11
Etiquetas
Operacin, nemnicos (instrucciones), Directivas y Macros
Operandos
Comentarios
12
13
14
15
16
17
18
19
20
21
22
23
PIC16F877A:
Las instrucciones son
codificadas de la
siguiente manera:
24
PIC16F877A:
25
PIC16F877A:
26
PIC16F877A: Variables
Una variable es una posicin de memoria
(definicin ms elemental), en donde se almacena
el valor de dicha variable y es modificable en
cualquier momento.
Para definir una variable podemos emplear la
directiva EQU:
tiempo1
tiempo2
rotar
cuenta
EQU
EQU
EQU
EQU
0x20
0x21
0x22
0x23
27
PIC16F877A: Variables
Otra forma de hacerlo sin tener que especificar la
direccin para cada variable es mediante la
directiva CBLOCK. Ejemplo:
CBLOCK 0x20
tiempo1
tiempo2
rotar
cuenta
ENDC
28
PIC16F877A: Subrutinas
Se le llama subrutina a un segmento de cdigo
separado del bloque principal y que puede ser
invocado en cualquier momento desde este o
desde otra subrutina.
Una subrutina al ser llamada dentro de un
programa hace que el cdigo principal se detenga y
se dirija a ejecutar el cdigo de la subrutina. Una
vez terminado de ejecutar la subrutina, vuelve al
programa principal y contina donde se quedo.
29
PIC16F877A: Subrutinas
30
PIC16F877A: Subrutinas
El como recuerda donde se qued es porque
previamente antes de ir a la subrutina guarda la
siguiente direccin del programa principal en
la Zona de Stack.
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Proteus: P05.DSN
Programa: P05.asm
Autor: Mauricio Galvez Legua
52
Proteus: P05B.DSN
Autor: Mauricio Galvez Legua
53
Proteus: P05C.DSN
Autor: Mauricio Galvez Legua
54
Fin
Autor: Mauricio Galvez Legua
(mgalvez@uni.edu.pe)
55