Você está na página 1de 132

ORGANIZACIN INTERNA

+
INTRODUCCIN AL ENSAMBLADOR

DIAGRAMA DE PINES Y
FUNCIONES

CONSIDERACIONES
BSICAS

DIAGRAMA DE PINES Y
FUNCIONES

CONSIDERACIONES
BSICAS

QU ES UN MICROCONTROLADOR?

Arquitectura Harvard

Arquitectura Von Neumann

QU ES UN MICROCONTROLADOR?
Un microcontrolador es un circuito integrado, en cuyo
interior posee toda la arquitectura de un computador,
esto es CPU, memorias RAM, FLASH, EEPROM, y
circuitos de entrada y salida.
Un microcontrolador de fbrica, no realiza tarea
alguna, este debe ser programado para que realice
desde un simple parpadeo de un led hasta un
sofisticado control de un robot.
Un microcontrolador es capaz de realizar la tarea de
muchos
circuitos
lgicos
como
compuertas,
convertidores
A/D,
D/A,
temporizadores,
decodificadores, etc., simplificando todo el diseo de
una PCB.

QU ES UN MICROCONTROLADOR?
Uno de los microcontroladores ms populares
en la actualidad es el PIC16F628A y sus
variantes PIC16F627A y PIC16F648A, estos
modelos (serie A) soportan hasta 100.000 ciclos
de escritura en su memoria FLASH, y 1000.000
ciclos en su memoria eeprom.
Este est reemplazando rpidamente al
popular PIC16F84A, pues presenta muchas
ventajas como son:

ORGANIZACIN de la MEMORIA
Dentro del PIC16F628A se distinguen tres bloques de memoria.

Memoria de programa. FLASH

Contiene el programa con las instrucciones que gobiernan la aplicacin. Es del tipo no voltil.

Memoria de datos RAM


Guarda las variables y datos. Consta de varios registros de 8 bits. Es voltil.

Memoria EEPROM de datos


Es una pequea rea de memoria de datos de lectura y escritura no voltil que permite garantizar que determinada informacin estar siempre disponible al reinicializarse
el programa. Se gestiona de manera distinta a la memoria de datos RAM.

APLICACIONES DE UN
MICROCONTROLADOR
A) CONTROL DE MOTORES
Bombas industriales.
Lavadoras y aspiradoras.
Equipos de gimnasia.
Tensores de cinturones de seguridad.
Calefaccin, ventilacin y aire acondicionado
Refrigeracin.
Herramientas elctricas.
Apertura de puertas.
Control de estabilidad

APLICACIONES DE UN
MICROCONTROLADOR
B) CONTROL DE SENSORES
Sensores de torsin.
De presin
De vibraciones
De golpes
De lluvia.
De fallos en la red elctrica.
De rotura de cristales.
Sensores qumicos y de gases.
Deteccin PIR avanzada 2-D

APLICACIONES DE UN
MICROCONTROLADOR
C) AUTOMOCIN
Control de potencia.
Control de estabilidad y balanceo
Caja de cambios y embrague
Direccin hidrulica asistida
Airbag.
Control de ignicin.
Sensor de presencia de ocupantes
Control del combustible

APLICACIONES DE UN
MICROCONTROLADOR
D) CONECTIVIDAD EN INTERNET
Monitorizacin remota.
Contadores automticos de agua y gas.
Instrumentacin mdica remota.
Sistemas de seguridad.
Mquinas expendedoras.
Diagnstico industrial remoto

APLICACIONES DE UN
MICROCONTROLADOR
E) AUDIO
Reconocimiento de voz.
Altavoces telefnicos.
Redes distribuidas de megafona.
Efectos especiales en instrumentos musicales.
Cancelacin de ruidos.
Reproduccin de sonido digital.
Auriculares para la eliminacin de ruidos.
Puertos de comunicacin para manos libres.
Micrfono activado por la voz.

0000h

RESET

0001h
0002h
0003h
0004h
0005h
0006h
0007h
0008h
0009h
000Ah
000Bh
1FFCh
1FFDh
1FFEh
1FFFh

INT

La memoria de programa
Almacena todas las instrucciones del programa de
control, que debe estar grabado de forma
permanente.
La informacin contenida en esta memoria se graba
previamente mediante un equipo fsico denominado
programador o grabador.
El PIC16F628A tiene una memoria de programa no
voltil denominada ROM Flash que admite unas 1.000
grabaciones.
La memoria de programa est organizada en palabras
de 14 bits cada una.
Todas las instrucciones ocupan una posicin de
memoria de programa.

La memoria de datos
Almacena todos los datos que se manejan en un programa.
Se distinguen dos tipos de registro:

Registros de funciones especiales SFR. Son los primeros registros. Cada uno de ellos cumple un propsito especial en el control del PIC.

Registros de propsito general GPR. Se pueden usar para guardar datos temporales.

Cuenta con cuatro bancos de memoria: Bancos 0, 1, 2 y 3.

Los SFR aparecen de la direccin 00h a 1Fh del Banco 0, de 80h a 9Fh del Banco 1, de 100h a 10F en el Banco 2 y de 180h a 18Fh del Banco 3. Algunos son accesibles desde dos o ms bancos.

Los GPR ocupan 240 posiciones de memoria. Algunas posiciones de los Bancos 1 a 3 se mapean sobre el Banco 0.

Existen zonas de memoria no empleadas que devuelven 0 en caso de lectura.

LENGUAJE ENSAMBLADOR
El nico lenguaje que entienden los microcontroladores es el lenguaje
mquina formado por ceros y unos del sistema binario.
El lenguaje ensamblador expresa las instrucciones de una forma ms
natural al hombre, a la vez que muy cercana al microcontrolador, ya que
cada una de sus instrucciones se corresponde con otra en cdigo mquina.
El lenguaje ensamblador trabaja con nemnicos, que son grupos de
caracteres alfanumricos que simbolizan las rdenes o tareas a realizar.
La traduccin de los nemnicos a cdigo mquina entendible por el
microcontrolador la lleva a cabo un programa ensamblador.
El programa escrito en lenguaje ensamblador se denomina cdigo fuente
(*.asm). El programa ensamblador proporciona a partir de este fichero el
correspondiente cdigo mquina, que suele tener la extensin *.hex.

El juego de instrucciones
Es un juego reducido de 35 instrucciones muy simples y rpidas.
La mayora de las instrucciones se ejecuta en 4 ciclos de reloj; los saltos
se ejecutan en 8.
Todas las instrucciones tienen la misma longitud: 14 bits.
Instrucciones de CARGA
NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

clrf f

00 (f)

clrw

00 (W)

Z
Z

movf

f,d

(f) (destino)

movlw

k (W)

Ninguno

movwf

(W) (f)

Ninguno

Instrucciones de BIT
NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

bcf f,b

Pone a 0 el bit b del registro f

Ninguno

bsf f,b

Pone a 1 el bit b del registro f

Ninguno

Instrucciones ARITMTICAS
NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

addlw

(W) + k (W)

C DC - Z

addwf

f,d

(W) + (f) (destino)

C DC - Z

decf

f,d

(f) - 1 (destino)

(f) + 1 (destino)

incf f,d
sublw

K - (W) (W)

C DC - Z

subwf

f,d

(f) - (W) (destino)

C DC - Z

Instrucciones LGICAS
NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

andlw

(W) AND k (W)

andwf

f,d

(W) AND (f) (destino)

comf

f,d

(/f) (destino)

iorlw

(W) OR k (W)

iorwf

f,d

(W) OR (f) (destino)

rlf f,d

Rota (f) a izquierda (destino)

rrf f,d

Rota (f) a derecha (destino)

swap

f,d

Intercambia nibbles (f) (destino)

Ninguno

xorlw

(W) XOR k (W)

xorwf

f,d

(W) XOR (f) (destino)

Instrucciones de SALTO
NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

btfsc

f,b

Salta si el bit b de f es 0

Ninguno

btfss

f,b

Salta si el bit b de f es 1

Ninguno

decfsz f,d

(f) - 1 (destino) y salta si es 0

Ninguno

incfsz

f,d

(f) + 1 (destino) y salta si es 0

Ninguno

goto

Salta a la direccin k

Ninguno

Instrucciones de manejo de SUBRUTINAS


NEMNICO

DESCRIPCIN

FLAGS AFECTADOS

call k

Llamada a subrutina

Ninguno

retfie

Retorno de una interrupcin

Ninguno

Retorno con un literal en (W)

Ninguno

Retorno de una subrutina

Ninguno

retlw
return

Instrucciones ESPECIALES
NEMNICO

DESCRIPCIN

clrwdt

Borra Timer del Watchdog

nop

No operacin

sleep

Entra en modo de bajo consumo

FLAGS AFECTADOS

/TO - /PD
Ninguno
/TO - /PD

El cdigo fuente
Est compuesto por una sucesin de lneas con instrucciones.
Cada lnea de programa puede estar compuesta de hasta cuatro campos o
columnas separados por uno o ms espacios o tabulaciones entre s.

Campo de etiquetas. Expresiones alfanumricas escogidas por el usuario para identificar una determinada instruccin del programa. Todas las etiquetas tienen asignado el valor de la posicin de memoria en la que se encuentra la instruccin a la que acompaan.

Campo del cdigo de operacin. Corresponde al nemnico.

Campo de operandos y datos. Contiene los operandos que precisa el nemnico utilizado. Segn la instruccin, puede haber dos, uno o ningn operando.

Campo de comentarios. Dentro de una lnea, todo lo que se encuentre a continuacin de un punto y coma ( ; ) ser ignorado y considerado como comentario.

El campo del cdigo de operacin es el nico que nunca puede estar vaco; ste
siempre contiene una instruccin o una directiva del assembler.
El campo del operando o direccin puede contener una direccin o un dato, o
puede estar en blanco.
El campo de etiquetas o del comentario es opcional. El programador asignar
una etiqueta a una lnea de instruccin y/o agregar un comentario segn su
conveniencia; normalmente para hacer ms fcil el uso y la lectura de un
programa, por ejemplo si va a retomar el trabajo despus de un.

Delimitadores:
Los campos van separados slo con espacios y/o tabulaciones. No agregar nunca
otros caracteres (comas, puntos, etc ).
No utilice espacios extra, particularmente despus de comas que separan
operandos. ( Ej: movlw 5,w )
No use caracteres delimitadores (espacios y tabulaciones) en nombres o
etiquetas.
Etiquetas:
La etiqueta es el primer campo en una lnea en lenguaje assembler y puede no
existir.
Si una etiqueta est presente, el assembler la define como el equivalente a la
direccin del 1er byte correspondiente a esa instruccin.
Esta etiqueta puede volver a usarse en otro lugar pero como operando de una
instruccin.
- No pueden usarse como nombres de etiquetas a palabras ya reservadas por el
assembler ( ORG, EQU, etc. ) o nombres de instrucciones ( movlw, call, nop,
etc.)

No se permite el uso de nmeros o caracteres no alfabticos como 1er letra de


la etiqueta. Como regla prctica: usar siempre letras, y en mayscula.
Nemnicos (cdigos de operacin):
La tarea principal del assembler es la traduccin de los cdigos de operacin en
nemnico en sus equivalentes binarios.
El assembler realiza sta tarea usando una tabla como si lo haramos a mano .
El assembler debe hacer algo ms que traducir los cdigos de operacin.
Tambin debe determinar cuantos operandos requiere la instruccin y de que
tipo.
Esto es un poco complejo; algunas instrucciones (como clrw) no tienen
operandos, otras (como sumas o saltos) tienen una, mientras que otras
(manipulacin de bits o skips) requieren dos.

El ensamblador MPASM (distribuido por Microchip) soporta los sistemas


de numeracin decimal, hexadecimal, octal, binario y ASCII.
Los nemnicos que tengan una constante como operando debern incluirla
respetando la sintaxis que se indica a continuacin.
TIPO

Decimal
Hexadecimal

SINTAXIS

D<valor>

d<valor>

.<valor>

H<valor>

h<valor>

0x<valor>

<valor>H

<valor>h

Octal

O<valor>

o<valor>

Binario

B<valor>

b<valor>

ASCII
Cadena

A<carcter>

a<carcter>

<carcter>

<cadena>

Las constantes hexadecimales que empiecen por una letra deben ir precedidas de un
cero para no confundirlas con una etiqueta. Ejemplo: movlw 0F7h

Directivas
Controlan el proceso de ensamblado del programa, pero no son parte del
mismo (tambin se conocen como pseudo-instrucciones).
Hay ms de 50 directivas reconocidas por MPASM. A continuacin se
recogen algunas de las ms habituales
END

Es la nica directiva obligatoria. Indica al ensamblador dnde debe


detener el proceso. Debe colocarse en la ltima lnea del programa.

<etiqueta> EQU <expresin>


El valor <expresin> es asignado a <etiqueta>. Estas directivas se
suelen colocar al principio del programa y habitualmente se usan
para definir constantes y direcciones de memoria.
[<etiqueta>] ORG <expresin>
Las instrucciones del cdigo fuente que siguen a esta directiva se
ensamblan a partir de la posicin indicada por <expresin>.

__CONFIG <expresin> [& <expresin> & ... & <expresin>]


Permite indicar la configuracin elegida para la grabacin del PIC.
Ejemplo: __CONFIG _CP_OFF & _WDT_OFF & _XT_OSC
LIST P=16F877
Indica el tipo de microcontrolador utilizado.
INCLUDE <p16F877.inc> o INCLUDE p16F877.inc
Incluye en el programa un fichero donde se definen las etiquetas
con las que se nombra a los diferentes registros y sus bits. Este
fichero se encuentra en el directorio principal del programa
ensamblador. Puede usarse esta directiva para incluir cualquier
otro fichero (Ojo! El fichero de inclusin no puede terminar con
una directiva END).
DT <expr1> [, <expr2>, ... , <exprN>]
Genera una instruccin retlw por cada expresin que incluya la
directiva. Si la expresin es del tipo cadena, se generar una
instruccin retlw por cada carcter de la misma.

RADIX: Especifica la raz por defecto (Hex, Dec, Octal)


Ejemplo: RADIX Hex
SET: Define una variable en ensamblador
<label> SET <expresin>
Ejemplo:

Ancho SET 0x12


Long SET
0x14
Area SET Log*Ancho

#DEFINE: Define sustitucin de texto


#DEFINE <nombre> [<argumento>, <valor>]
Ejemplo: #DEFINE control CONTA, 5
.
.
bsf control

CBLOCK: Define un bloque de constantes


DATA: Crea dato numrico y texto
Ejemplo: DATA 1, 2, label
DB: Declara dato de un byte
DE: Declara dato de eeprom
DT: Define tabla
DW: Declara dato de una palabra
ENDC: Fin de bloque

Ejemplo: Para pic 16F628A

Set de Instrucciones.-

Taller No. 1.Realizar un algoritmo basado en un PIC de microchip; que realice la


siguiente tarea:
a. A + B = C.
b. Complemente a dos C.
c. Guarde C en D, conserve el valor de C. (A, B, C y D son literales de
8 bits)
d. Compilar con MPLAB.
e. Hacer reporte, incluir:
Pantalla con resultados build succeeded.
Diagrama de flujo.
Cdigo fuente *.asm.

Taller 2.Disear un algoritmo que compare dos nmeros A y B.


Si A > B, entonces B = 0F.
Si A < B, entonces B = F0.
Si A = B, entonces B = 69.
Realizar la simulacin en MPLAB
Adjuntar imgenes de resultados y compilacin.
Realizar Diagrama de flujo de la secuencia del programa.

PORTA

Taller 3.Disear un algoritmo de control que acepte una cdigo en nmeros


decimales de 4 dgitos. Los datos ingresaran por PORTA y las
seales de control y alarma saldrn por PORTB. Si es correcto
PORTB = FF, si es falso PORTB= 00.
Realizar la simulacin en MPLAB, usar STIMULUS.
Adjuntar imgenes de resultados y compilacin.
Realizar Diagrama de flujo de la secuencia del programa.

Temporizador TMR0

Temporizador TMR0

Temporizador TMR0

Celdas sombreadas no son utilizadas por el Timer0.

Temporizador TMR0

Temporizador TMR0

Temporizador TMR0

Temporizador TMR0

Temporizador TMR0

Temporizador TMR0.-

Temporizador TMR0.-

Ftimer0 = Fint /Preescalador = Fosc /4*Preescalador;


cuando tocs=0 (para modo temporizador)

Temporizador TMR0.-

Temporizador TMR0.-

bsf
bcf

OPTION,5 ;modo contador de pulsos desde RA4/TOCLKI


OPTION,4 ;incremento con flanco ascendente

bcf

OPTION,5 ;modo temporizador, TMR0 funciona con el PREESCALADOR

Temporizador TMR0.-

Temporizador TMR0.-

Temporizador TMR0.-

http://www.mikroe.com/chapters/view/81/capitulo-3-microcontrolador-pic16f887/

Temporizador TMR0.Como hacer una temporizacin con el registro TMR0.El tiempo empleado en una temporizacin se puede calcular a partir de un ciclo de
instruccin (es decir 1 instruccin por cada microsegundo, si se est trabajando con
un XT de 4 Mhz), tambin se necesitar el valor del Divisor de Frecuencia (el que
se selecciona con los bit's PS2, PS1 y PS0), y finalmente con el complemento del
valor cargado en TMR0 (es decir 255-TMR0), la ecuacin que permite realizar el
clculo es la que sigue:
Temporizacin = Ciclo de instruccin * (255-TMR0) * Divisor de Frecuencia
Ejemplo:
Suponer que se desea una temporizacin de 10 ms (10 milisegundos), y que se est
trabajando con un XT de 4 Mhz, y que a dems se seleccion como Divisor de
Frecuencia 256 (es decir: PS2,PS1,PS0 = 1,1,1).

Temporizador TMR0.Pregunta... Cul es el valor que se debe cargar en el TMR0...?


255-TMR0 = Temporizacin(en seg)/(1 ciclo/seg * Div. de Frec. del
Preescalador)
y reemplazando se tendr...
255-TMR0 = 10,000 us/(1 ciclo/us * 256)
255-TMR0 = 10000 /(256 ciclos)
255-TMR0 = 39.0625 ciclos
255-TMR0 ~ 39 ciclos
Eso significa que en TMR0 se deber cargar 255-39=216 (0xD8) y a partir
de all el TMR0 contar los 39 ciclos que faltan para desbordarse y producir
la interrupcin, y el tiempo que tardar en hacerlo es aproximadamente
10,000 us, o sea 10 ms.

Temporizador TMR0.Antes de seguir, despejemos un par de dudas:


1 seg. = 1.000 ms = 1.000.000 us y ...
1 ciclo/us es el tiempo empleado en ejecutarse una instruccin.

OSCILADOR. CONFIGURACIN.-

OSCILADOR. CONFIGURACIN.-

OSCILADOR. CONFIGURACIN.-

OSCILADOR. CONFIGURACIN.-

OSCILADOR. CONFIGURACIN.-

OSCILADOR. CONFIGURACIN.-

OSCILADOR. CONFIGURACIN.-

OSCILADOR. CONFIGURACIN.-

OSCILADOR. CONFIGURACIN.-

SYNC4 TXSTA
SPEN 7 RCSTA
RCIE 5 PIE1
RX9 6 TXSTA
CREN 4 RCSTA
RCIF 5 PIR1

OERR 1 RCSTA

Manejo de Interrupciones:

Modulos CCP:

DIRECCIONAMIENTO DIRECTO E INDIRECTO.-

COMUNICACIN ASNCRONA

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

DIRECCIONAMIENTO INDIRECTO.-

DIRECCIONAMIENTO INDIRECTO.-

REGISTRO OPTION.-

REGISTRO OPTION.-

Você também pode gostar