You are on page 1of 52

Tabla de contenido

PREFACIO.........................................................................................................................3
PRCTICA # 1.- INTRODUCCIN AL MPLAB..................................................................4
PRCTICA # 2.- USO DEL PROGRAMADOR DE MICROCONTROLADORES............11
PRCTICA # 3.- MANEJO DE PUERTOS DIGITALES...................................................16
PRCTICA # 4.- CONVERTIDOR ANALGICO DIGITAL..............................................21
PRCTICA # 5.- COMUNICACIN SERIE ASNCRONA...............................................25
PRCTICA # 6.- MANEJO DE TEMPORIZADORES......................................................32
PRCTICA # 7.- MANEJO DE MDULOS CAPTURE/COMPARE/PWM......................36
PRCTICA # 8.- MANEJO DE INTERRUPCIONES........................................................43
PRCTICA # 9.- PROGRAMACIN DE MEMORIA EEPROM.......................................48

PREFACIO
El presente manual de prcticas est diseado con el propsito de que el estudiante
aprenda a emplear las herramientas de Codificacin, Depuracin, Ensamble,
Simulacin y Programacin de Algoritmos en Lenguaje Ensamblador para
Microcontroladores de la compaa Microchip, de la familia PIC16F87x, con
actualizaciones para trabajar con circuitos de la familia PIC16F88x, el cual adems de
las caractersticas de la familia PIC16F87x cuenta con un oscilador interno. Aunque las
mismas prcticas pueden ser adaptadas para cualquier otro microcontrolador de la
misma familia que cuente con caractersticas de hardware similares.
El presente manual se divide en un total de 9 prcticas donde el alumno llevar a cabo
una comparacin entre los conocimientos adquiridos en el aula con la prctica.
Las primeras dos prcticas de laboratorio se centran en el manejo de herramientas de
software y hardware, que le permitirn al alumno codificar, depurar, ensamblar y simular
los algoritmos que disee (programa MPLAB IDE) adems de programar esos
algoritmos en un circuito Microcontrolador (Programadores Universales).
La tercera prctica es sobre manejo de los Sistemas Perifricos o Puertos del
microcontrolador, con los cuales el alumno llevar a cabo aplicaciones sencillas de
lectura de datos digitales o control de salidas digitales.
En la cuarta prctica, el alumno se familiarizar con el uso del sistema de Conversin
Analgica Digital, empleado en aplicaciones de lecturas de seales analgicas
continuas como es medicin de parmetros como temperatura, humedad, flujo, nivel,
etc.
En la quinta prctica, el alumno emplear el sistema USART (Sistema de comunicacin
serial RS-232), para establecer comunicacin con dispositivos perifricos externos que
empleen este mecanismo para comunicarse, por ejemplo una Computadora.
En las tres prcticas que siguen, en alumno se familiarizar con los Sistemas que
basan su funcionalidad en el uso del sistema de Reloj del Microcontrolador, que son
Temporizadores, Contadores, Entradas por Captura, Salidas por Comparacin, PWM,
as como el sistema de Interrupciones.
En la ltima prctica, el alumno aprender a leer y escribir datos en la memoria
EEPROM interna que se mantendrn almacenados permanentemente an cuando se
quite la alimentacin al circuito Microcontrolador.
M.I. Jess Alfonso Mrquez Borbn
Profesor Investigador de Carrera Asociado
Instituto Tecnolgico Superior de Cajeme
Agosto de 2010

PRCTICA # 1.- INTRODUCCIN AL MPLAB


OBJETIVOS:

El alumno aprender a manejar la herramienta computacional MPLAB para codificar,


ensamblar, ligar y simular el funcionamiento de programas escritos en Lenguaje
ensamblador para microcontroladores de la compaa Microchip.

INTRODUCCIN:
El MPLAB es un entorno de desarrollo integrado que le permite escribir y codificar los
microcontroladores PIC de Microchip para ejecutarlos. El MPLAB incluye un editor de
texto, funciones para el manejo de proyectos, un simulador interno y una variedad de
herramientas que lo ayudarn a mantener y ejecutar su aplicacin. Tambin provee una
interfase de usuario para todos los productos con lenguaje Microchip, programadores
de dispositivos, sistemas emuladores y herramientas de tercer orden.
El MPLAB est diseado para ser ejecutado bajo Windows 3.11, y puede operar con
Windows 95 y 98. Asume que el usuario ya conoce el entorno de Windows y sabe
manejarlo.
MATERIAL Y EQUIPO EMPLEADO

Laboratorio equipado con computadoras.


Programa MPLAB instalado.

DESARROLLO
1. Para iniciar MPLAB IDE, dar doble clic al icono instalado en el Escritorio o
seleccionar Inicio>Programas>Microchip>MPLAB IDE vx.xx>MPLAB IDE.
a. Desplegndose la ventana de trabajo de MPLAB. (Figura 1).
2. Para seleccionar el dispositivo Microcontrolador con el que se trabajar, seleccione
el men Configure>Select Device. Esto abre un cuadro de dilogo donde deber
seleccionar el PIC16F877A o el PIC16F887 (o en su defecto el microcontrolador con
el que desees trabajar) si es que no se encuentra seleccionado. Se puede observar
un conjunto de indicadores de color que muestran el soporte que tiene la compaa
para el dispositivo seleccionado.
a. Indicador verde.- soporte completo
b. Indicador amarillo.- soporte preliminar.
c. Indicador rojo.- no existe soporte para este dispositivo.

Figura 1. Ventana de Trabajo de MPLAB

3. El siguiente paso es crear un proyecto. Un proyecto es la forma en que los archivos


estn organizados para ser compilados y ensamblados. Seleccionar Project>Project
Wizard. De la ventana de bienvenida dar clic al botn Next>, la ventana siguiente les
pide seleccionar el dispositivo, asegurarse que esta seleccionado el PIC16F877A o
el PIC16F887, de no ser as, seleccionarlo en la lista desplegable, despus dar clic
en Next>.
4. La siguiente ventana les pide que seleccionen el lenguaje de programacin del
Microcontrolador, estos valores los dejaremos por omisin, dndole clic al botn
Next>.
5. A continuacin debemos asignarle un nombre a nuestro proyecto y una ubicacin en
el disco duro (una carpeta de trabajo). Le pondremos PRACT01 y usando el botn
Browse ubicaremos al proyecto en la carpeta C:\MICROS\PRACTICAS\ (si no
existe la carpeta, hay que crearla), despus dar clic en Next>.
6. En el paso siguiente se les pide que agreguen al proyecto los archivos codificados
en ensamblador (si es que ya cuentan con ellos), aqu daremos clic en Next>.
Mostrndose un resumen de la configuracin del Asistente, donde daremos clic en
Finalizar>
7. Se abrir el rea de trabajo, con el administrador de proyectos (una ventana con un
directorio como el navegador de archivos de Windows).

8. Abriremos un archivo para escribir el cdigo de nuestro programa, del men


Archivo>New, escribiremos el siguiente programa en la ventana, guardando el
archivo en el directorio de trabajo con el nombre PRACT01.ASM
9. Si usamos el PIC16F877A, escribiremos:
LIST
#INCLUDE

P=16F877A
<P16F877A.INC>

__CONFIG

0x3F39

REG1
REG2
REG3
GRUESO
MEDIO
FINO

EQU
EQU
EQU
EQU
EQU
EQU

0x2C
0x2D
0x2E
0x40
0x40
0x50

RESET

ORG
GOTO

H'0000'
INICIO

INICIO

ORG

0x005

CLRW
MOVWF

PORTB

BSF
BCF

STATUS, RP0
STATUS, RP1

CLRF

TRISB

BCF
BCF

STATUS, RP0
STATUS, RP1

MOVLW
MOVWF

0x01
PORTB

CALL

RETARDO

MOVLW
MOVWF

0x00
PORTB

CALL

RETARDO

GOTO

PPAL

RETARDO

MOVLW
MOVWF

GRUESO
REG1

DEM3

MOVLW
MOVWF

MEDIO
REG2

DEM2

MOVWL
MOVWF

FINO
REG3

DEM1

DECFSZ REG3
GOTO
DEM1

PPAL

DECFSZ REG2
GOTO
DEM2
DECFSZ REG1
GOTO
DEM3
RETLW
END

10. Si usamos el PIC16F887, escribiremos:


LIST
#INCLUDE
__CONFIG
__CONFIG

P=16F887
<P16F887.INC>

_CONFIG1, 0x20D5
_CONFIG2, 0x3FFF

REG1
REG2
REG3
GRUESO
MEDIO
FINO

EQU
EQU
EQU
EQU
EQU
EQU

0x2C
0x2D
0x2E
0x40
0x40
0x50

RESET

ORG
GOTO

H'0000'
INICIO

INICIO

ORG

0x005

CLRW
MOVWF

PORTB

BSF
BCF

STATUS, RP0
STATUS, RP1

CLRF

TRISB

BCF
BCF

STATUS, RP0
STATUS, RP1

MOVLW
MOVWF

0x01
PORTB

CALL

RETARDO

MOVLW
MOVWF

0x00
PORTB

CALL

RETARDO

GOTO

PPAL

RETARDO

MOVLW
MOVWF

GRUESO
REG1

DEM3

MOVLW
MOVWF

MEDIO
REG2

DEM2

MOVWL
MOVWF

FINO
REG3

DEM1

DECFSZ REG3
GOTO
DEM1

PPAL

DECFSZ REG2
GOTO
DEM2
DECFSZ REG1
GOTO
DEM3
RETLW
END

11. Se agrega el archivo del cdigo del programa (PRACT01.ASM) al administrador de


proyectos, posicionando el cursor en la carpeta SORCE FILES, se da clic al botn
derecho y del men emergente seleccionamos ADD FILES. Buscando el cdigo del
programa que acabamos de crear.
12. Se guarda el archivo y el proyecto.
13. Del men Project, podemos ensamblar y ligar los archivos del proyecto. Todava no
tiene cdigo propio en ellos, pero con esto se asegura de que el proyecto est
configurado correctamente. Para construir el proyecto se debe seleccionar:
a. Project>Build All
b. Dar clic al botn derecho del ratn y seleccionar Build All en la ventana
emergente.
c. Dar clic en el botn Build All en la barra de herramientas de Proyectos.
14. La ventana de salida muestra los resultados del proceso de construccin. Donde no
debera presentarse ningn error. De presentarse algn error, se abre un archivo de
bitcora, indicando la lnea donde se presenta el error y una breve descripcin del
error que se presento. Se debe corregir y volver a ensamblar hasta que no se
presenten mensajes de ERROR o de WARNING.
15. Observar la carpeta donde se cre el proyecto. Observe los archivos que se han
creado. Abra y analice los archivos con extensin *.LST y *.HEX
SIMULACIN
1. Cree un nuevo proyecto y asgnele el nombre PRAC01A.
2. Seleccionar la herramienta de Depuracin, del men Debugger>Select Tool. Y de la
ventana desplegable seleccionar MPLAB SIM, visualizando los siguientes cambios:
1) En la barra de estado inferior de la ventana de MPLAB IDE debe cambiar a
MPLAB SIM
2) Deben aparecer nuevas opciones en el men Debugger
3) Se activan iconos nuevos en la barra de herramientas, apareciendo como
herramientas de depuracin.
4) Se agrega la pestaa MPLAB SIM a la ventana de Salida (Output)

Figura 2. Activacin de opciones de Simulacin

3. En seguida se debe seleccionar Debugger>Reset>Processor Reset


aparecer una flecha verde donde inicia el programa.

y debe

4. Para ejecutar una instruccin del programa se selecciona Debugger>Step Into. Esto
ejecuta la lnea de cdigo actual y mueve la flecha a la siguiente lnea de cdigo a
ser ejecutada. Para seguir ejecutando el cdigo del programa se sigue
seleccionando la funcin Step Into.
5. Para regresar a una instruccin que ya ha sido ejecutada seleccionar
Debugger>Step Out. Cuando se manda llamar a una funcin y se desea observar
cmo se ejecuta instruccin por instruccin se selecciona Debugger>Step Into, pero
si lo que se desea es ejecutar la funcin como si fuera una instruccin seleccionar
Debugger>Step Over.
6. Existen una serie de opciones rpidas para las funciones de las herramientas de
depuracin:

7. Para poder observar si el cdigo est operando adecuadamente sobre el PORTC.


Seleccionar View>Watch para abrir una ventana de visualizacin. Aqu se presentan
dos opciones de listas desplegables; la de la izquierda etiquetada como Add SFR
se usa para agregar Registros con Funciones Especiales, como los puertos.
Seleccionar PORTC de la lista y despus darle clic al botn Add SFR para

agregarlo a la ventana. Agregar los registros PORTC, TRISC, STATUS, WREG y


PCL.
8. La opcin desplegable de la derecha permite agregar smbolos definidos en el
programa. Use esta lista para agregar la variable reg1 a la ventana de
visualizacin. Seleccione reg1 de la lista y despus de clic en Add Symbol para
agregarla. Agregar las variables reg2 y reg3.
9. La ventana de visualizacin debe mostrar la direccin, valor y nombre de los
Registros agregados.

Figura 3. Ventana Watch, para verificar los valores de los Registros y variables.

10. Ejecute el programa paso a paso, verificando los valores arrojados en cada variable
en la ventana de visualizacin al ejecutarse cada instruccin. Los registros y
variables que son modificadas con la ejecucin de cada instruccin, se ven de color
rojo).

PRCTICA # 2.- USO DEL PROGRAMADOR DE


MICROCONTROLADORES
OBJETIVOS:

El alumno aprender a manejar las herramientas de hardware y software para


grabar en un Microcontrolador programas escritos en Lenguaje ensamblador de la
compaa Microchip.

INTRODUCCIN:
Un programador universal es un dispositivo electrnico que a travs del puerto paralelo
o USB de un equipo de cmputo, permite programar, leer, copiar o comprobar cualquier
dispositivo Dual In Line (Circuitos integrados con doble fila de terminales) de hasta 48
pins. Existe una lista de adaptadores para diferente tipo de encapsulados.
MATERIAL Y EQUIPO EMPLEADO

Laboratorio equipado con computadoras.


Programador Universal
Software del Programador de Microcontroladores empleado (Chipmax, SuperPro,
ICPROG).

DESARROLLO
1. Para esta prctica es necesario contar con un programa funcional, que se encuentre
ya Ensamblado y Ligado, y de preferencia haber hecho una simulacin de la
funcionalidad del mismo.
2. Conectar el Programador Universal al puerto serie o paralelo, segn sea el caso.
3. Ejecutar el Software con el que opera el Programador Universal empleado:
PROGRAMADOR CHIPMAX
a) Ir al botn Inicio seleccionar Todos los Programas, seleccionar la opcin
EETools, y ejecutar el programa Max Loader. Debe aparecer una ventana como
la que se presenta en la figura 4.

Figura 4. Ventana de trabajo Max Loader- ChipMax

b) Abrir el receptculo del Programador y colocar el circuito integrado a programar,


en nuestro caso es el PIC16F877A / PIC16F887. Tener cuidado al colocar el
circuito en la base, y despus cerrar el receptculo. El circuito no debe tener
movimiento alguno.
c) El siguiente paso es Seleccionar el dispositivo en el programa. Para esto
seleccione del men Device la opcin Select (Ctrl+F7), lo que abre una ventana
para seleccionar el dispositivo.
d) En el recuadro de bsqueda escriba PIC16F877A / PIC16F887, o buscar el
componente en la lista por fabricante y por componentes. Seleccione el
componente deseado y dar clic en el botn OK.
e) En seguida debemos cargar el programa a grabar en el dispositivo; para esto del
men File seleccionamos la opcin Load (F3), abriendo un navegador de
archivos.
f) Buscamos el archivo binario del programa a grabar con extensin *.HEX y
damos clic en el botn OK. Esto carga el programa en un Buffer de memoria.
g) Si deseas analizar o revisar los datos de tu programa lo puedes hacer en el
men Buffer seleccionando la opcin Edit Buffer (F6), donde se abre una
ventana de edicin donde podemos ya sea visualizar o Editar la informacin del
buffer.
h) Si no configuramos la palabra de control del dispositivo, del men Device
seleccionamos la opcin Option (Ctrl+O), donde podemos configurar diferentes
opciones del microcontrolador, por el momento solo seleccionaremos la opcin
HS-High Speed Crystal del oscilador, dando clic en OK para cerrar esa ventana.
i) Para programar el dispositivo debemos seguir los siguientes pasos:
Borrar el Dispositivo (Device>Erase Ctrl+E)

j)
k)
l)
m)
n)

Checar que el dispositivo este borrado (Device>Blank check Ctrl+B)


Programar el Dispositivo (Device>Program Ctrl+P) y
Verificar que el dispositivo este programado (Device>Verify Ctrl+V)
Tambin puede programar el dispositivo de manera automtica seleccionando
del men Device la opcin Auto (Ctrl+A), que bsicamente realiza los pasos que
sigues en el punto anterior.
Si deseas leer un dispositivo ya programado (siempre y cuando no est activado
el bit de proteccin), selecciona del men Device la opcin Read, lo que hace
una copia de la memoria del circuito al buffer del equipo de cmputo.
El siguiente paso es abrir la palanca del hardware para liberar el circuito y
quitarlo de la base.
Montar el circuito programado en un circuito de prueba, y verificar la operacin y
funcionalidad del programa grabado.
Para salir del programa seleccionar la opcin Exit del men File (Alt+X)

PROGRAMADOR SUPERPRO, ICPROG.


a) Los pasos para cualquier programador universal o de algn microcontrolador
especfico son los mismos que ya se mencionaron, aunque la presentacin
grfica, nombres de funciones u opciones de programacin sean diferentes.
b) Para ejecutar el programador universal SUPERPRO. Ir al botn Inicio
seleccionar Todos los Programas, seleccionar la opcin SUPERPRO LX. Debe
aparecer una ventana como la que se presenta en la figura 5.

Figura 5. Ventana de trabajo SUPERPRO LX

c) Para ejecutar el programador de PIC ICPROG. Abrir una ventana de navegacin


de archivos, buscar la carpeta ICPROG y ejecutar el archivo ICPORG.EXE. Debe
aparecer una ventana como la que se presenta en la figura 6.

Figura 6. Ventana de Trabajo ICPROG

Actividad Complementaria:
Graba en un circuito el programa PRACT01A que se simulo en la prctica anterior,
disear un circuito para probar el funcionamiento de este programa.
VC C
U 1
M C LR
O SC 1

1
13

R A0
R A1
R A2
R A3
R A 4 /T 0 C L K
R A 5 /S S
R B 0 /IN T
R B1
R B2
R B3
R B4
R B5
R B6
R B7
R C 0 /T 1 O S I/T 1 C L K
R C 1 /T 1 O S O
R C 2 /C C P 1
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R C 5 /S D O
R C 6
R C 7
R D 0 /P S P 0
R D 1 /P S P 1
R D 2 /P S P 2
R D 3 /P S P 3
R D 4 /P S P 4
R D 5 /P S P 5
R D 6 /P S P 6
R D 7 /P S P 7
R E 0 /R D
R E 1 /W R
R E 2 /C S
O S C 2 /C L K O U T

M C L R /V P P
O S C 1 /C L K

11
32

12
31

G N D
G N D

VD D
VD D

2
3
4
5
6
7
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
14

R 3
470

D 1
LED

O SC 2

P IC 1 6 F 8 7 7

VC C
C 1
O SC 1
22pF
C 2

R 2
47k

Y 1
8 MH z

SW 1
O SC 2
S W P U S H B U TTO N

22pF

Figura 7. Diagrama esquemtico prctica 2.

M C LR

PRCTICA # 3.- MANEJO DE PUERTOS DIGITALES


OBJETIVOS:

El alumno aprender a disear algoritmos escritos en Lenguaje ensamblador, que le


permitan configurar y aprovechar los perifricos de Entrada y Salida de un circuito
Microcontrolador.

INTRODUCCIN:
Una unidad de entrada-salida, llamada tambin puerto, es un dispositivo empleado por
la computadora para recibir o enviar datos al mundo exterior. Algunos de estos
dispositivos son: teclado, ratn, interruptores, impresora, monitor, discos magnticos,
tarjetas de comunicacin, etc. Estos dispositivos al igual que las localidades de
memoria tienen direcciones nicas por medio de las cuales el procesador interacta con
ellos. Estas direcciones se expresan generalmente en hexadecimal.
El PIC16F877 contiene 5 puertos que pueden ser configurados como entrada o salida
digitales (A, B, C, D, E). El puerto A contiene 6 bits (RA0-5). El puerto B (RB0-7), el
puerto C (RC0-7) y el puerto D (RD0-7) tienen cada uno 8 lneas. El puerto E solo
cuenta con 3 lneas (RE0-2)
La operacin de configuracin de los puertos en general implica la siguiente secuencia:
Ingresar al banco 1
Configurar los puertos (registros TRISA, TRISB, TRISC, TRISD y TRISE)
Regresar al banco 0
Escribir o leer datos desde los puertos. (registros PORTA, PORTB, PORTC,
PORTD y PORTE )
MATERIAL Y EQUIPO EMPLEADO

Laboratorio equipado con computadoras.


Programador Universal
Software del Programador de Microcontroladores empleado (Chipmax, SuperPro,
ICPROG).
Fuente de Alimentacin.
Osciloscopio
Circuito de prueba armado en protoboard (ver diagramas esquemticos).

DESARROLLO
1. Abrir el programa MPLAB y copiar la siguiente secuencia de cdigo la cual se
guardar con el nombre de PRAC03.ASM.

LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG
0x3F39
CONF_ADCON1
ORG
NOP
NOP
BSF
BCF
MOVLW
MOVWF
MOVLW
MOVWF
CLRF
BCF
BCF
BUCLE:
MOVF
MOVWF
GOTO
END

EQU b'00000110'
0x000
STATUS, RP0
STATUS, RP1
CONF_ADCON1
ADCON1
B'00111111'
TRISA
TRISB
STATUS, RP0
STATUS, RP1
PORTA, W
PORTB
BUCLE

;
;
;
;
;
;
;
;
;
;
;
;
;

LIST P=16F887
INCLUDE "P16F887.INC"
__CONFIG
_CONFIG1, 0x20D5
__CONFIG
_CONFIG2, 0x3FFF
CONF_ADCON1
ORG
NOP
NOP
BSF
BSF
CLRF
BCF
MOVLW
MOVWF
CLRF
BCF
BCF
BUCLE:
MOVF
MOVWF
GOTO
END

EQU b'00000110'
0x000
STATUS, RP0
STATUS, RP1
ANSEL
STATUS, RP1
B'00111111'
TRISA
TRISB
STATUS, RP0
STATUS, RP1
PORTA, W
PORTB
BUCLE

;
;
;
;
;

;
;
;
;
;
;
;

2. Ensamblar, depurar y simular el funcionamiento paso a paso de este programa.


3. Analizar el programa de esta prctica y contestar las siguientes preguntas:
a.

Para qu sirve la instruccin list? Esta instruccin se ejecuta en la


simulacin paso a paso?

b.

Para qu sirve la instruccin include? Esta instruccin se ejecuta en la


simulacin paso a paso?

c.

Qu resultado arrojan la instruccin nop?

d.

Qu funcin cumplen las instrucciones:


bsf STATUS,RP0
bcf STATUS,RP1

e.
f.
g.

Cul es la razn de guardar en el registro ADCON1 el valor binario


b00000110?
Para qu sirven los registros TRISA y TRISB?
Qu valor es necesario guardar en los registros de configuracin para que
los perifricos sirvan como Puertos de Entrada?

h.

Qu valor es necesario guardar en los registros de configuracin para que


los perifricos sirvan como Puertos de Salida?

i.

Qu funcin cumplen las instrucciones:


bcf STATUS,RP0
bcf STATUS,RP1

4. En general describir el funcionamiento del programa.


5. Grabar el programa en un Microcontrolador.
6. Armar el circuito de prueba que se muestra a continuacin.
VC C
U 1
M C LR
O SC 1

R 2

470

D 1

LED

R 3

470

D 2

LED

R 4

470

D 3

LED

R 5

470

D 4

LED

R 6

470

D 5

LED

R 7

470

D 6

LED

R 8

470

D 7

LED

R 9

470

D 8

LED

R B0

1
13

R B1
R A0
R A1
R A2
R A3
R A 4 /T 0 C L K
R A 5 /S S
R B 0 /IN T
R B1
R B2
R B3
R B4
R B5
R B6
R B7
R C 0 /T 1 O S I/T 1 C L K
R C 1 /T 1 O S O
R C 2 /C C P 1
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R C 5 /S D O
R C 6
R C 7
R D 0 /P S P 0
R D 1 /P S P 1
R D 2 /P S P 2
R D 3 /P S P 3
R D 4 /P S P 4
R D 5 /P S P 5
R D 6 /P S P 6
R D 7 /P S P 7
R E 0 /R D
R E 1 /W R
R E 2 /C S
O S C 2 /C L K O U T

M C L R /V P P
O S C 1 /C L K

11
32

12
31

G N D
G N D

VD D
VD D

2
3
4
5
6
7
3
3
3
3
3
3
3
4
1
1
1
1
2
2
2
2
1
2
2
2
2
2
2
3
8
9
1
1

3
4
5
6
7
8
9
0
5
6
7
8
3
4
5
6
9
0
1
2
7
8
9
0
0
4

R
R
R
R
R
R
R
R
R
R
R
R
R
R

A
A
A
A
A
A
B
B
B
B
B
B
B
B

0
1
2
3
4
5
0
1
2
3
4
5
6
7

R B2
R B3
R B4
R B5
R B6
R B7

VC C

R 10
47k
O SC 2

R
R
R
R
R
R

P IC 1 6 F 8 7 7

R 12
47k

R 13
47k

R 14
47k

R 15
47k

5
4
3
2
1
0
1
1
1
1
1
1
1
9

6
5
4
3
2
1
0

VC C

A
A
A
A
A
A

R 11
47k

C 1

SW 2

O SC 1

C 2

Y 1
8 M H z

SW 1
O SC 2

S W D IP -8

1
2
3
4
5
6
7
8

22pF

R 1
47k
M C LR

SW P U SH B U TTO N
22pF

Figura 8. Diagrama esquemtico prctica 3.

7. Probar el funcionamiento del circuito, cambiando el estado de los microswitches de


ON a OFF.
8. Despus de probar el circuito, responda las siguientes preguntas:

a. Cul es el resultado observado?


b. El resultado obtenido es el mismo al resultado esperado? (lo que se observa
en la prctica coincide con la simulacin obtenida).

Actividad Complementaria:

Escriba un programa en el que se configure el puerto A como entrada y el puerto B


como salida, el algoritmo debe leer el valor binario del puerto A (4 microswitch en la
parte baja del puerto) y desplegarlo en el puerto B donde se tendr un display de 7
segmentos de nodo Comn. Ensamblar, depurar, simular el programa y probar el
funcionamiento en un circuito Microcontrolador.

VC C

VC C
U 1

M C LR
O SC 1

R 2

R A0
M C L R /V P P
R A1
O S C 1 /C L K
R A2
R A3
VD D
R A 4 /T 0 C L K
VD D
R A 5 /S S
R B 0 /IN T
R B1
R B2
R B3
R B4
R B5
R B6
R B7
R C 0 /T 1 O S I/T 1 C L K
R C 1 /T1 O S O
R C 2 /C C P 1
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R C 5 /S D O
R C 6
R C 7
R D 0 /P S P 0
R D 1 /P S P 1
R D 2 /P S P 2
R D 3 /P S P 3
R D 4 /P S P 4
R D 5 /P S P 5
R D 6 /P S P 6
R D 7 /P S P 7
R E 0 /R D
R E 1 /W R
R E 2 /C S
O S C 2 /C L K O U T

1
13

12
31

G N D
G N D

11
32

2
3
4
5
6
7
3
3
3
3
3
3
3
4
1
1
1
1
2
2
2
2
1
2
2
2
2
2
2
3
8
9
1
1

3
4
5
6
7
8
9
0
5
6
7
8
3
4
5
6
9
0
1
2
7
8
9
0
0
4

R
R
R
R
R
R
R
R
R
R
R
R
R
R

A
A
A
A
A
A
B
B
B
B
B
B
B
B

0
1
2
3
4
5
0
1
2
3
4
5
6
7

R B0
R 3
R B1
R 4
R B2

470
470
470

R 5

470

R 6

470

R 7

470

R 8

470

R B3
R B4

a
b
c
d
e

R B5
R B6

f
g

VC C

R 10
47k

R 11
47k

R 12
47k

R 13
47k

O SC 2

P IC 1 6 F 8 7 7

R
R
R
R

3
2
1
0
1
1
1
1
1
1
1
9

6
5
4
3
2
1
0

VC C

A
A
A
A

C 1

SW 2

O SC 1

C 2

R 1
47k

Y 1
8 M H z

SW 1
O SC 2

S W D IP -8

1
2
3
4
5
6
7
8

22pF

M C LR

S W PU SH B U TTO N
22pF

Figura 9. Diagrama esquemtico prctica 3, actividad complementaria 1

Escriba un programa que configure el puerto B parte baja (RB0-RB3) como entrada
y la parte alta (RB4-RB7) como salida y el puerto C como salida, en el puerto B se
tendr conectado un teclado matricial de 4x4 y en el puerto C se tendrn conectado
en la parte baja (bits del 0 al 3) un circuito 74LS47 (Convertidor de binario a 7
segmentos) con 4 displays de 7 segmentos conectados en paralelo, y en la parte
alta del mismo puerto (bits 4 al 7) se tendrn conectados un transistor 2N2222 que
servir como interruptor para activar/desactivar cada uno de los displays (Como se
muestra en el diagrama). El programa checar la tecla presionada en el teclado
matricial conectado al puerto B y lo desplegara en el puerto C, haciendo un
corrimiento hacia la izquierda del valor anterior, ejemplo: si se tiene desplegado _ _
_ 1 y se presiona la tecla 3, se debe desplegar _ _ 1 3. Ensamblar, depurar,
simular el programa y probar el funcionamiento en un circuito Microcontrolador.

VC C

VC C

SW 2

U 1
M C LR
O SC 1

[0 ]

R A0
M C L R /V P P
R A1
O S C 1 /C L K
R A2
R A3
VD D
R A 4 /T0 C L K
VD D
R A 5 /S S
R B 0 /IN T
R B1
R B2
R B3
R B4
R B5
R B6
R B7
R C 0 /T 1 O S I/T 1 C L K
R C 1 /T 1 O S O
R C 2 /C C P 1
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R C 5 /S D O
R C 6
R C 7
R D 0 /P S P 0
R D 1 /P S P 1
R D 2 /P S P 2
R D 3 /P S P 3
R D 4 /P S P 4
R D 5 /P S P 5
R D 6 /P S P 6
R D 7 /P S P 7
R E 0 /R D
R E 1 /W R
R E 2 /C S
O S C 2 /C L K O U T

1
13

G N D
G N D

11
32

12
31

VC C

2
3
4
5
6
7
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
14

R 10
47k

R
R
R
R
R
R
R
R
R
R
R
R
R
R
R
R

B
B
B
B
B
B
B
B
C
C
C
C
C
C
C
C

R 11
47k

R 12
47k

R 13
47k

SW 6

R
R
R
R

B
B
B
B

0
1
2
3

SW 10
[8 ]
SW 14
[C ]

R
R
R
R

B
B
B
B

SW 4

[1 ]

[2 ]

SW 5
[3 ]

SW 8

SW 7

[4 ]

0
1
2
3
4
5
6
7
0
1
2
3
4
5
6
7

SW 3

SW 9

[5 ]

[6 ]

[7 ]

SW 11

SW 12

SW 13

[9 ]

[A ]

[B ]

SW 15

SW 16

[D ]

[E ]

SW 17
[F ]

4
5
6
7
VC C
R
R
R
R

C
C
C
C

4
5
6
7

VC C

3
Q 1
12 N 2 2 2 2

VC C

3
Q 1
12 N 2 2 2 2

VC C

3
Q 1
12 N 2 2 2 2

O SC 2

P IC 1 6 F 8 7 7

R 1
47k
SW 1

M C LR
VC C

S W P U S H B U TTO N

C 1
O SC 1
22pF
C 2

22pF

Y 1
8 MH z

O SC 2

R
R
R
R

C
C
C
C

0
1
2
3

7
1
2
6
4
5
3

U 2
1
2
4
8
B I/R B O
R BI
LT
74LS48

A
B
C
D
E
F
G

1
1
1
1
9
1
1

3
2
1
0
5
4

R 2

470

R 3

470

R 4

470

R 5

470

R 6

470

R 7

470

R 8

470

A
B
C
D
E
F
G

Figura 10. Diagrama esquemtico prctica 3, actividad complementaria 2

3
Q 1
12 N 2 2 2 2

PRCTICA # 4.- CONVERTIDOR ANALGICO DIGITAL


OBJETIVOS:

El alumno aprender a disear algoritmos escritos en Lenguaje ensamblador, que le


permitan configurar y aprovechar los Convertidores Analgico-Digital de un circuito
Microcontrolador.

INTRODUCCIN:
Un convertidor analgico a digital tiene como entrada un nivel de voltaje (valor
analgico) y produce en su salida un nmero binario de n bits proporcionales al nivel de
la entrada (valor digital). Los convertidores de seal anloga a digital se abrevian como
ADC o A/D.
Uno de los parmetros que definen al A/D es la resolucin definida como la mnima
variacin de voltaje en la entrada que produce cambio del valor digital en la salida. Por
ejemplo: un convertidor de 10 bits tiene un total de 2 10 valores (1024 valores de 0 a
1023).
Si tenemos 10V a la entrada la resolucin seria de 9,765mV; en este caso el voltaje es
de 10V a 0V pero pueden variar. Por ejemplo si tenemos de 10v a 5v la resolucin ser:
Resolucin= (10v 5v)/1024=4.88 mV
Una frmula para el clculo ser:
Resolucin= (Vref2-Vref1)/1024
donde las tensiones de referencia son 10V y 5V, respectivamente.
MATERIAL Y EQUIPO EMPLEADO

Laboratorio equipado con computadoras.


Programador Universal
Software del Programador de Microcontroladores empleado (Chipmax, SuperPro,
ICPROG).
Fuente de Alimentacin.
Osciloscopio
Circuito de prueba armado en protoboard (ver diagramas esquemticos).

DESARROLLO
1. Abrir el programa MPLAB y copiar la siguiente secuencia de cdigo la cual se
guardar con el nombre de PRAC04.ASM.

LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG
0x3F39
ORG 0x000
NOP
NOP
_INICIO
BCF STATUS, RP0
BCF STATUS, RP1
MOVLW B'01000001'
MOVWF ADCON0
BSF STATUS, RP0
BCF STATUS, RP1
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
MOVLW b'00000111'
MOVWF OPTION_REG
MOVLW B'00001110'
MOVWF ADCON1
BCF TRISA, 0
BCF STATUS, RP0
BCF STATUS, RP1
CLRF PORTC
_BUCLES
BTFSS INTCON, T0IF
GOTO _BUCLE
BCF INTCON, T0IF
BSF ADCON0, GO
_ESPERA
BTFSC ADCON0, GO
GOTO _ESPERA
MOVF ADRESH, W
MOVWF PORTC
GOTO _BUCLE
END

LIST P=16F887
INCLUDE "P16F887.INC"
__CONFIG
_CONFIG1, 0x20D5
__CONFIG
_CONFIG2, 0x3FFF
ORG 0x000
NOP
NOP
_INICIO
BCF STATUS, RP0
BCF STATUS, RP1
MOVLW B'01000001'
MOVWF ADCON0
BSF STATUS, RP0
BSF STATUS, RP1
BSF ANSEL, 0
BSF STATUS, RP0
BCF STATUS, RP1
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
MOVLW b'00000111'
MOVWF OPTION_REG
CLRF ADCON1
BCF TRISA, 0
BCF STATUS, RP0
BCF STATUS, RP1
CLRF PORTC
_BUCLES
BTFSS INTCON, T0IF
GOTO _BUCLE
BCF INTCON, T0IF
BSF ADCON0, GO
_ESPERA
BTFSC ADCON0, GO
GOTO _ESPERA
MOVF ADRESH, W
MOVWF PORTC
GOTO _BUCLE
END

2. Ensamblar, depurar y simular el funcionamiento paso a paso de este programa.


3. Analizar el programa de esta prctica y contestar las siguientes preguntas:
a.
Cul es la razn de guardar en el registro ADCON0 el valor binario
b01000001?
b.

Cul es la razn de guardar en el registro OPTION_REG el valor binario


b00000111?

c.

Qu se configura con el dato almacenado en el registro ADCON1?

d.

Qu funcin cumplen las instrucciones:


bsf ADCON0,GO
_espera
btfsc ADCON0,GO
goto _espera

4. En general describir el funcionamiento del programa.


5. Grabar el programa en un Microcontrolador.
6. Armar el circuito de prueba que se muestra a continuacin.
7. Probar el funcionamiento del circuito, variando el valor del potencimetro de entrada.
8. Colocar el potencimetro para entregar los voltajes de entrada mostrados en la
Tabla, anotar el valor binario obtenido, calcular el valor de voltaje que representa el
valor digital observado, calcular el dato esperado en la salida en relacin al voltaje
de entrada y anotar el porcentaje de error entre el valor esperado y el medido.
VALORES PRACTICOS
Vin
Valor Bin
Valor Dec
(Volts)
Observado
Observad
o
0.0
0.5
1.0
1.5
2.0
2.5
3.0
3.5
4.0
4.5
5.0

VALORES TEORICOS
Vin
Valor Bin
Valor Dec
(Volts)
Calculado
Calculado

ERROR
% Error

9. Despus de probar el circuito, responda las siguientes preguntas:


a. Cul es el resultado observado?
b. El resultado obtenido es el mismo al resultado esperado? (lo que se observa
en la prctica coincide con la simulacin obtenida).

VC C
U 1
1
13

R A0
R A1
R A2
R A3
R A 4 /T 0 C L K
R A 5 /S S
R B 0 /IN T
R B1
R B2
R B3
R B4
R B5
R B6
R B7
R C 0 /T 1 O S I/T 1 C L K
R C 1 /T 1 O S O
R C 2 /C C P 1
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R C 5/S D O
R C 6
R C 7
R D 0 /P S P 0
R D 1 /P S P 1
R D 2 /P S P 2
R D 3 /P S P 3
R D 4 /P S P 4
R D 5 /P S P 5
R D 6 /P S P 6
R D 7 /P S P 7
R E 0 /R D
R E 1 /W R
R E 2 /C S
O S C 2 /C L K O U T

M C L R /V P P
O S C 1/C L K

11
32

12
31

G N D
G N D

VD D
VD D

R A0

470

D 1

LED

R 3

470

D 2

LED

R 4

470

D 3

LED

R 5

470

D 4

LED

R 6

470

D 5

LED

R 7

470

D 6

LED

R 8

470

D 7

LED

R 9

470

D 8

LED

R C 1
R C 2

3
4
5
6
7
8
9
0
5
6
7
8
3
4
5
6
9
0
1
2
7
8
9
0

R C 3
R C 4
R
R
R
R
R
R
R
R

C
C
C
C
C
C
C
C

0
1
2
3
4
5
6
7

R C 5
R C 6
R C 7

VC C

0
4

O SC 2
3

M C LR
O SC 1

2
3
4
5
6
7
3
3
3
3
3
3
3
4
1
1
1
1
2
2
2
2
1
2
2
2
2
2
2
3
8
9
1
1

R 2
R C 0

R 17

R 16

P IC 1 6 F 8 7 7

R A0

10K

470
VC C
C 1
O SC 1
22pF
C 2

22pF

R 1
47k

Y 1
8 M H z

O SC 2

SW 1

M C LR

SW P U SH B U TTO N

Figura 11. Diagrama esquemtico prctica 4.

PRCTICA # 5.- COMUNICACIN SERIE ASNCRONA


OBJETIVOS:

El alumno aprender a disear algoritmos escritos en Lenguaje ensamblador, que le


permitan configurar y aprovechar la Unidad de Comunicacin Serial Asncrona
(USART) de un circuito Microcontrolador.

INTRODUCCIN:
Entre las herramientas que disponen los PIC16F87x se encuentra el USART, llamado
SCI (Serial Comunications Interface), puede funcionar como un sistema de
comunicacin bidireccional, adaptndose a multitud de perifricos y dispositivos que
transfieren informacin de forma serial, tales como una computadora. Tambin puede
trabajar en modo unidireccional para soportar perifricos como memorias,
convertidores, etc.
El USART (Transmisor/Receptor Sncrono/Asncrono Serie) puede trabajar de dos
formas:
o Asncrono (Bidireccional)
o Sncrono (Unidireccional)
En el modo asncrono, la comunicacin serie del USART en los PIC16F87x esta
soportada por las lneas RC6/TX/CK y RC7/RX/DT por las que se mueven los bits a la
frecuencia interna de reloj. En el modo sncrono, los bits de informacin circulan en
ambos sentidos por la lnea DT a la frecuencia de los impulsos que genere el maestro
por la lnea CK.
En el presente mdulo vamos a enfocar el estudio del modo asncrono.
En esta forma de comunicacin serie, se usa la norma RS-232-C, donde cada palabra
de informacin o dato se enva independientemente de los dems. Cada dato esta
formado de 8 9 bits y van precedidos por un bit de START (inicio) y detrs de ellos se
coloca un bit de STOP (parada), de acuerdo con las normas del formato estndar NRZ
(Non Return-to-Zero), los bits se transfieren a una frecuencia fija y normalizada. La
USART transmite y recibe primero el bit menos significativo.
La USART en modo asncrono contiene los siguientes elementos:
o Generador de Baudios
o Circuito de Muestreo
o Transmisor Asncrono
o Receptor Asncrono

MATERIAL Y EQUIPO EMPLEADO

Laboratorio equipado con computadoras.


Programador Universal
Software del Programador de Microcontroladores empleado (Chipmax, SuperPro,
ICPROG).
Fuente de Alimentacin.
Osciloscopio
Circuito de prueba armado en protoboard (ver diagramas esquemticos).

DESARROLLO
1. Abrir el programa MPLAB y copiar la siguiente secuencia de cdigo la cual se
guardar con el nombre de PRAC05.ASM. (considerar un Xtal=4MHz).
LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG
0x3F39

BCF STATUS, RP1


BCF TXSTA, TX9
BSF TXSTA, TXEN

ORG 0x00
NOP
NOP
BSF STATUS, RP0
BCF STATUS, RP1
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
BCF TRISC, 6
BSF TRISC, 7
MOVLW D'25'
MOVWF SPBRG
BCF TXSTA, BRGH
BCF TXSTA, SYNC
BCF STATUS, RP0
BCF STATUS, RP1
BCF RCSTA, SPEN
BCF STATUS, RP0

BCF
BCF
BCF
BSF

STATUS, RP0
STATUS, RP1
RCSTA, RX9
RCSTA, CREN

_ESPERARX
BTFSS PIR1, RCIF
GOTO _ESPERARX
MOVF RCREG, W
MOVWF PORTB
MOVWF TXREG
_ESPERATX
BTFSS PIR1, TXIF
GOTO _ESPERATX
GOTO _ESPERARX
END

Nota: hacer las modificaciones necesarias para trabajar con el PIC16F887.

2. Ensamblar, depurar y simular el funcionamiento paso a paso de este programa.


3. Analizar el programa de esta prctica y contestar las siguientes preguntas:
a.
Qu funcin cumplen las instrucciones, explique brevemente para que sirven
y porque se asignan estos valores a los registros empleados.

BCF TRISC, 6
BSF TRISC, 7
MOVLW D'25'
MOVWF SPBRG
BCF TXSTA, BRGH
BCF TXSTA, SYNC
BCF STATUS, RP0
BCF STATUS, RP1
BCF RCSTA, SPEN
BCF STATUS, RP0

b.

BCF STATUS, RP1


BCF TXSTA, TX9
BSF TXSTA, TXEN
BCF
BCF
BCF
BSF

STATUS, RP0
STATUS, RP1
RCSTA, RX9
RCSTA, CREN

Qu funcin cumplen las instrucciones:


_ESPERARX
BTFSS PIR1, RCIF
GOTO _ESPERARX

c.

Qu funcin cumplen las instrucciones:


MOVF RCREG, W
MOVWF PORTC
MOVWF TXREG

d.

Qu funcin cumplen las instrucciones:

_ESPERATX
BTFSS PIR1, TXIF
GOTO _ESPERATX

4. En general describir el funcionamiento del programa.


5. Grabar el programa en un Microcontrolador.
6. Armar el circuito de prueba que se muestra a continuacin.
NOTA:
El ejercicio considera que se tiene un cable de comunicacin serial que ser conectado
al puerto de la Computadora y a la terminal del circuito de esta prctica.
De no ser as, se recomienda checar las conexiones del puerto de comunicaciones,
para establecer una comunicacin apropiada; la termina de TX (3) del equipo de
computo deber conectarse con la terminal de Recepcin del circuito y la terminal de
RX (2) del equipo de computo deber conectarse a la terminal de Transmisin del
circuito.

VC C
U 1

R 3

470

D 2

LED

12
31

G N D
G N D

VD D
VD D

2
3
4
5
6
7
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
14

R 4

470

D 3

LED

R 5

470

D 4

LED

R 6

470

D 5

LED

R 7

470

D 6

LED

R 8

470

D 7

LED

R 9

470

D 8

LED

R B2
R B3
R
R
R
R
R
R
R
R

B
B
B
B
B
B
B
B

0
1
2
3
4
5
6
7

R B4
R B5
R B6
R B7

TXD
R XD
VC C

U 3
16

R A0
R A1
R A2
R A3
R A 4 /T0 C L K
R A 5 /S S
R B 0 /IN T
R B1
R B2
R B3
R B4
R B5
R B6
R B7
R C 0 /T 1 O S I/T 1 C L K
R C 1 /T 1 O S O
R C 2 /C C P 1
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R C 5 /S D O
R C 6
R C 7
R D 0 /P S P 0
R D 1 /P S P 1
R D 2 /P S P 2
R D 3 /P S P 3
R D 4 /P S P 4
R D 5 /P S P 5
R D 6 /P S P 6
R D 7 /P S P 7
R E 0 /R D
R E 1 /W R
R E 2 /C S
O S C 2 /C L K O U T

M C L R /V P P
O S C 1 /C L K

O SC 2

R XD

R 18

330

TXD B 9

R 19

330

12
9
14
7

R 1O U T
R 2O U T
T1O U T
T2O U T

VC C

P IC 1 6 F 8 7 7

R 1
R 2
T1
T2

IN
IN
IN
IN
C +

2
1uF

V+

C 1C 2+

V-

C 2-

M A X232
13
8
11
10

R 20

330 R XD B 9

R 21

330 TXD

1
3
4
5

C 3
C 4

1uF
1uF

C 6
15

VC C
C 1

1uF

O SC 1

22pF

LED

R B1

C 5

C 2

D 1

VC C

1
13
11
32

22pF

470

G N D

M C LR
O SC 1

R 2
R B0

R 1
47k

Y 1
8 MH z

O SC 2

SW 1
S W P U S H B U TTO N

M C LR
TXD B 9
R XD B 9

5
9
4
8
3
7
2
6
1

P1

C O N N E C TO R D B 9

Figura 12. Diagrama esquemtico prctica 5.

7. Configurar Hyper terminal.


Abrir el programa hyper terminal. Ingresar a:
Inicio->Accesorios->Comunicaciones->Hyper terminal
Si el Hyper terminal no est instalado, ingrese a:
Inicio-> Configuracin panel de control -> Agregar quitar programas
Elija la pestaa Instalacin de Windows. Ahora seleccione Comunicaciones y habilite el
Hyper terminal.

Figura 13. Ventanas de activacin de Hyper Terminal

Una vez que se abra el hyper terminal observar una ventana como la que se muestra.
Elija el cono para crear una conexin. A continuacin le aparecer una ventana de
mensajes:
Necesita instalar un modem antes de poder hacer una conexin Desea hacerlo
ahora? Elija el botn No

Figura 14. Programa HyperTerminal.

Ahora elija un icono que identifique la conexin. Asigne como nombre:


demo

A continuacin aparece una ventana para seleccionar el puerto con el que operar la
conexin. Como el ICD est conectado al COM1 elegiremos en esta ventana el
COM2
Presione el botn Aceptar

Figura 15. Ventana de configuracin del puerto de comunicaciones de HyperTerminal.

Ahora proceda a configurar el puerto serial propiamente dicho.


Bits por segundo : 2400
Bits de datos : 8
Paridad : Ninguna
Bit de parada : 1
Control de flujo : ninguno
Presione el botn Aceptar.

Figura 16. Parmetros de configuracin puerto serial.

Si todo ha terminado sin novedad aparecer una ventana como la que se muestra en
este momento podr usted conectarse con algn dispositivo que tenga conectado al
COM2 y que transmita bajo parmetros establecidos (2400:8:0:1:Ninguna)

Figura 17. Ventana de trabajo de HyperTerminal

8. Probar el funcionamiento del circuito, tecleando algunos datos en la ventana de


Hyper Terminal.
9. Despus de probar el circuito, responda las siguientes preguntas:
a.
b.

Cul es el resultado observado?


El resultado obtenido es el mismo al resultado esperado? (lo que se observa
en la prctica coincide con la simulacin obtenida).

PRCTICA # 6.- MANEJO DE TEMPORIZADORES


OBJETIVOS:

El alumno aprender a disear algoritmos escritos en Lenguaje ensamblador, que le


permitan configurar y aprovechar los sistemas de temporizacin (Contadores) de un
circuito Microcontrolador.

INTRODUCCIN:
Un sistema temporizador est definido como Un sistema de control de tiempo que se
utiliza para abrir o cerrar un circuito en uno o ms momentos determinados, y que
conectado a un dispositivo lo pone en accin.
El Microcontrolador PIC16F877 cuenta con tres sistemas de temporizacin TMR0,
TMR1 y TMR2, los cuales consisten bsicamente en un registro contador el cual se
incrementa con una seal de reloj pre-escalada de la seal del oscilador externo,
cuando estos registros se desbordan en cierto tiempo se puede tomar una accin.
Algo muy importante de este sistema, es que depende directamente de la frecuencia
del oscilador externo. Por ejemplo, si se tiene un cristal de Xtal= 4 MHz, la frecuencia
de Oscilacin del Microcontrolador ser de una cuarta parte Fosc= 1MHz (Fosc
=Xtal/4), con lo que obtenemos el tiempo de incremento del Registro de Temporizacin
TMR0 (sin pre-escalacin) de T= 1/Fosc = 1 S, y si este registro tiene un tamao de 16
bits, tardar aproximadamente 65,535 S en desbordarse.

Figura 18. Diagrama a bloques del sistema de temporizacin.

MATERIAL Y EQUIPO EMPLEADO

Laboratorio equipado con computadoras.


Programador Universal
Software del Programador de Microcontroladores empleado (Chipmax, SuperPro,
ICPROG).
Fuente de Alimentacin.
Osciloscopio
Circuito de prueba armado en protoboard (ver diagramas esquemticos).

DESARROLLO
1. Abrir el programa MPLAB y copiar la siguiente secuencia de cdigo la cual se
guardar con el nombre de PRAC06.ASM. (Xtal= 4MHz).
LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG
0x3F39
CONTA EQU 0x20
ORG 0x00
NOP
NOP
_INICIO
BSF STATUS, RP0
BCF STATUS, RP1
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
MOVLW B'11000110'
MOVWF OPTION_REG
BCF STATUS, RP0
BCF STATUS, RP1
CLRF PORTC
_BUCLE
CALL _RETARDO
INCF PORTC, F

GOTO _BUCLE
_RETARDO
MOVLW D'64'
MOVWF CONTA
_ESPERA1
CLRF INTCON
MOVLW D'134'
MOVWF TMR0
_ESPERA
BTFSS INTCON, T0IF
GOTO _ESPERA
DECFSZ CONTA, F
GOTO _ESPERA1
RETURN
END

Nota:
hacer
las
modificaciones
necesarias para trabajar con el
PIC16F887.

2. Ensamblar, depurar y simular el funcionamiento paso a paso de este programa.


3. Analizar el programa de esta prctica y contestar las siguientes preguntas:
a.
Cul es la razn de guardar en el registro OPTION_REG el valor binario
B11000110?

b.

Cunto tiempo consume la rutina de Retardo?

c.

Por qu se inicializa la variable CONTA a un valor inicial de D64?

d.

Qu funcin cumplen las instrucciones:


CLRF INTCON

e.

Por qu se inicializa el registro TMR0 a un valor inicial de D134?

f.

Qu funcin cumplen las instrucciones:

_ESPERA
BTFSS INTCON, T0IF
GOTO _ESPERA

4. En general describir el funcionamiento del programa.


5. Grabar el programa en un Microcontrolador.
6. Armar el circuito de prueba que se muestra a continuacin.
7. Probar el funcionamiento del circuito.
8. Despus de probar el circuito, responda las siguientes preguntas:
a. Cul es el resultado observado?
b. El resultado obtenido es el mismo al resultado esperado? (lo que se observa
en la prctica coincide con la simulacin obtenida).
c. Cul es la diferencia entre usar una rutina de retardo con instrucciones
cclicas y usar una rutina de retardo usando el sistema de Temporizacin?

VC C
U 1
M C LR
O SC 1

1
13

VD D
VD D

12
31

G N D
G N D

11
32

R A0
R A1
R A2
R A3
R A 4 /T 0 C L K
R A 5 /S S
R B 0 /IN T
R B1
R B2
R B3
R B4
R B5
R B6
R B7
R C 0 /T 1 O S I/T 1 C L K
R C 1 /T 1 O S O
R C 2 /C C P 1
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R C 5 /S D O
R C 6
R C 7
R D 0 /P S P 0
R D 1 /P S P 1
R D 2 /P S P 2
R D 3 /P S P 3
R D 4 /P S P 4
R D 5 /P S P 5
R D 6 /P S P 6
R D 7 /P S P 7
R E 0 /R D
R E 1 /W R
R E 2 /C S
O S C 2 /C L K O U T

M C L R /V P P
O S C 1 /C L K

R 2

470

D 1

LED

R 3

470

D 2

LED

R 4

470

D 3

LED

R 5

470

D 4

LED

R 6

470

D 5

LED

R 7

470

D 6

LED

R 8

470

D 7

LED

R 9

470

D 8

LED

R C 0

2
3
4
5
6
7
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
14

R C 1
R A4
R B0

R C 2
R C 3
R C 4

R
R
R
R
R
R
R
R

C
C
C
C
C
C
C
C

0
1
2
3
4
5
6
7

R C 5
R C 6
R C 7

VC C

R 1
47k

O SC 2
SW 1

R B0

P IC 1 6 F 8 7 7
S W PU S H B U TTO N
VC C
VC C

C 1
O SC 1
22pF
C 2

22pF

R 1
47k

Y 1
8 M H z

O SC 2

SW 1

M C LR

SW PU SH BU TTO N

Figura 19. Diagrama esquemtico prctica 6.

R 1
47k
SW 1
SW PU SH BU TTO N

R A4

PRCTICA # 7.- MANEJO DE MDULOS CAPTURE/COMPARE/PWM


OBJETIVOS:

El alumno aprender a disear algoritmos escritos en Lenguaje ensamblador, que le


permitan configurar y aprovechar los Mdulos de Entradas por Captura, Salidas por
Comparacin y PWM de un circuito Microcontrolador.

INTRODUCCIN:
Algunos circuitos Microcontroladores cuentan con sistemas especiales que dependen
directamente de una seal externa o del sistema de temporizacin que les sirve como
evento de disparo. Los sistemas ms comunes asociados son: Entradas por Captura,
Salidas por Comparacin y generadores de seales PWM.
En el modo Capture, los registros CCPR1H:CCPR1L capturan el valor de 16-bits del
registro TMR1 cuando ocurre un evento en la terminal RC2/CCP1. Un evento se define
como:
Cada filo descendente
Cada filo ascendente
Cada 4 filos ascendentes
Cada 16 filos ascendentes

Figura 20. Diagrama a bloques del funcionamiento del sistema de Entradas por Captura

En el modo Compare, el valor del registro CCPR1 de 16-bits se compara


constantemente con el valor del registro TRM1. Cuando la comparacin se iguala, la
terminal del RC2/CCP1:
Cambia a un valor activo Alto
Cambia a un valor activo Bajo
Se mantiene sin cambio

Figura 21. Diagrama a bloques del funcionamiento del sistema de Salidas por
Comparacin

En el modo de Modulacin de Ancho de Pulso (PWM), la terminal CCPx produce una


salida PWM hasta con una resolucin de 10-bits.

Figura 22. Diagrama a bloques del funcionamiento del sistema PWM

La salida PWM tiene una base de tiempo (periodo) y un tiempo en el que la salida se
mantiene en alto (ciclo de operacin). La frecuencia de PWM es el inverso del periodo
(1/periodo).

Figura 23. Ciclo de trabajo de un periodo PWM

El periodo de PWM se especifica escribiendo en el registro PR2. El periodo de PWM


puede calcularse usando la formula siguiente:
Periodo PWM = [(PR2)+1]*4*Tosc*(Valor de pre-escalacin del TMR2).
La frecuencia del PWM est definida como 1/[Periodo PWM].
MATERIAL Y EQUIPO EMPLEADO

Laboratorio equipado con computadoras.


Programador Universal
Software del Programador de Microcontroladores empleado (Chipmax, SuperPro,
ICPROG).
Fuente de Alimentacin.
Osciloscopio
Circuito de prueba armado en protoboard (ver diagramas esquemticos).

DESARROLLO
1. Abrir el programa MPLAB y copiar la siguiente secuencia de cdigo la cual se
guardar con el nombre de PRAC07.ASM. (Xtal= 8MHz).
LIST
INCLUDE
__CONFIG
RB0
RB1
RB2
RB3
RB4
RB5
RB6
RB7

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

P=16F877A
"P16F877A.INC"
0x3F39
0X00
0X01
0X02
0X03
0X04
0X05
0X06
0X07

RC0
RC1
RC2
RC3
RC4
RC5
RC6
RC7

EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU

0X00
0X01
0X02
0X03
0X04
0X05
0X06
0X07

; *************************************************************************
ORG
0x00
REINICIO:
GOTO INICIO
; *************************************************************************
ORG
0x06
INICIO
CALL CONFIGURA_PUERTOS
CALL PWM1_15MS
CICLO:
BTFSS PORTB, RB0
GOTO GRADOS_90

; SI EL PUERTOB<0>

BTFSS PORTB, RB1


GOTO GRADOS_00

; SI EL PUERTOB<1>

BTFSS PORTB, RB2


GOTO GRADOS_180
GOTO CICLO

; SI EL PUERTOB<2>

GRADOS_00:
CALL
GOTO

PWM1_05MS_B
CICLO

GRADOS_90:
CALL
GOTO

PWM1_15MS_B
CICLO

GRADOS_180:
CALL PWM1_25MS_B
GOTO CICLO
; *************************************************************************
CONFIGURA_PUERTOS:
CALL BANCO_0
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE
CALL
MOVLW
MOVWF
MOVLW

BANCO_1
B'10000000'
TRISC
B'00001111'

MOVWF TRISB
CALL BANCO_0
RETURN
; *************************************************************************
PWM1_15MS:
;PASO1:
CALL
MOVLW
MOVWF
CALL

BANCO_1
0xF9
PR2
BANCO_0

;PASO2:
MOVLW 0X5D
MOVWF CCPR1L
BSF
BSF
;PASO3:
CALL
BCF
CALL

CCP1CON, 5
CCP1CON, 4

; PR2= 249 = 0XF9

;CCPR1L:CCP1CON=375=0X177=[0X5D:<11>]
;CCPR1L:CCP1CON=187.5=0XBB=[0X2E:<11>]

BANCO_1
TRISC, 2
BANCO_0

;PASO4:
MOVLW B'00000110'
MOVWF T2CON
CLRF TMR2
;PASO5:
BSF
BSF

CCP1CON, 2
CCP1CON,3

RETURN
; *************************************************************************
PWM1_05MS_B:
;PASO2:
MOVLW 0X1F
MOVWF CCPR1L
BSF
BCF

CCP1CON, 5
CCP1CON, 4

;CCPR1L:CCP1CON=62.5=0X3E=[0X0F:<10>]
;CCPR1L:CCP1CON=62.5=0X3E=[0X0F:<10>]

RETURN
; *************************************************************************
PWM1_15MS_B:
;PASO2:
MOVLW 0X5D
MOVWF CCPR1L
BSF

CCP1CON, 5

;CCPR1L:CCP1CON=187.5=0XBB=[0X2E:<11>]
;CCPR1L:CCP1CON=187.5=0XBB=[0X2E:<11>]

BSF

CCP1CON, 4

RETURN
; *************************************************************************
PWM1_25MS_B:
;PASO2:
MOVLW 0X9C
MOVWF CCPR1L
BCF
BCF

CCP1CON, 5
CCP1CON, 4

;CCPR1L:CCP1CON=312.5=0X138=[0X4E:<00>]
;CCPR1L:CCP1CON=312.5=0X138=[0X4E:<00>]

RETURN
; *************************************************************************
BANCO_0:
BCF
STATUS, RP0
BCF
STATUS, RP1
RETURN
BANCO_1:
BSF
BCF
RETURN

STATUS, RP0
STATUS, RP1

BANCO_2:
BCF
BSF
RETURN

STATUS, RP0
STATUS, RP1

BANCO_3:
BSF
BSF
RETURN

STATUS, RP0
STATUS, RP1

; *************************************************************************
; FIN DEL PROGRAMA
; *************************************************************************
END
Nota: hacer las modificaciones necesarias para trabajar con el PIC16F887.

2. Ensamblar, depurar y simular el funcionamiento paso a paso de este programa.


3. Analizar el programa de esta prctica y contestar las siguientes preguntas:
a.
Cul es la operacin de la subrutina CONFIGURA_PUERTOS?
b.
Cul es la operacin de las subrutinas BANCO_0, BANCO_1, BANCO_2 y
BANCO_3?
c.
Explica paso a paso la operacin de la subrutina PWM1_15MS?
d.
Qu cambios significativos provoca la subrutina PWM1_05MS_B?
e.
Qu cambios significativos provoca la subrutina PWM1_15MS_B?
f.
Qu cambios significativos provoca la subrutina PWM1_25MS_B?

4. En general describir el funcionamiento del programa.


5. Grabar el programa en un Microcontrolador.
6. Armar el circuito de prueba que se muestra a continuacin.
VD D

VC C

C 1
O SC 1

U 1

VD D
VD D

12
31

G N D
G N D

11
32

R A0
R A1
R A2
R A3
R A 4 /T 0 C L K
R A 5 /S S
R B 0 /IN T
R B1
R B2
R B3
R B4
R B5
R B6
R B7
R C 0 /T 1 O S I/T 1 C L K
R C 1 /T 1 O S O
R C 2/C C P 1
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R C 5 /S D O
R C 6
R C 7
R D 0 /P S P 0
R D 1 /P S P 1
R D 2 /P S P 2
R D 3 /P S P 3
R D 4 /P S P 4
R D 5 /P S P 5
R D 6 /P S P 6
R D 7 /P S P 7
R E 0 /R D
R E 1 /W R
R E 2 /C S
O S C 2 /C L K O U T

M C L R /V P P
O S C 1/C L K

2
3
4
5
6
7
3
3
3
3
3
3
3
4
1
1
1
1
2
2
2
2
1
2
2
2
2
2
2
3
8
9
1
1

R 2

C C P1

U 4

470
3
4
5
6
7
8
9
0
5
6
7
8
3
4
5
6
9
0
1
2
7
8
9
0

R
R
R
R

B
B
B
B

0
1
2
3

470

6
5

22pF
D S1

8 M H z

Y 1

C 2

O SC 2

22pF
LAM P

4N 25A

VC C
VC C
C C P1

R 1
47k
R 4
47k

R 5
47k

R 6
47k

R 7
47k

SW 1

M C LR

R ESET
R
R
R
R

B
B
B
B

0
1
2
3
8
7
6
5

1
13

0
4

SW 18
S W D IP -4

O SC 2

P IC 1 6 F 8 7 7

1
2
3
4

M C LR
O SC 1

R 3

Figura 24. Diagrama esquemtico prctica 7.

7. Probar el funcionamiento del circuito.


8. Despus de probar el circuito, responda las siguientes preguntas:
a.
Cul es el resultado observado?
b.

Conectar un osciloscopio a la terminal RC2 (CCP1, terminal 17). Cul es la


frecuencia de operacin de la salida PWM?, Cul es el tiempo del ciclo activo?

c.

Modifique los microswitch para observar la salida en el osciloscopio, anote los


resultados obtenidos. Cambio la frecuencia de operacin de la salida PWM?
Cul es el tiempo activo de la seal?

d.

El resultado obtenido es el mismo al resultado esperado? (lo que se observa


en la prctica coincide con la simulacin obtenida).

PRCTICA # 8.- MANEJO DE INTERRUPCIONES


OBJETIVOS:

El alumno aprender a disear algoritmos escritos en Lenguaje ensamblador, que le


permitan configurar y aprovechar las ventajas que ofrece el manejo de
Interrupciones de un circuito Microcontrolador.

INTRODUCCIN:
La familia Pic16F87x tiene 13 fuentes de interrupciones los de 28 pines y 14 los de 40
pines. Al aceptarse una interrupcin se salva el valor del PC (contador de programa) en
la pila y se carga aquel con el valor 0004h, que es el Vector de Interrupcin. La mayora
de los recursos o perifricos de que disponen los Pic16F87x son capaces de ocasionar
una interrupcin, si se programan adecuadamente los bits de los registros que pasamos
a describir a continuacin.
1. Desbordamiento del TMR0
2. Activacin de la patita de interrupcin RB0/INT
3. Cambio de estado de una de las cuatro patitas de ms peso del puerto B
4. Finalizacin de la escritura de un byte en la EEPROM
Hasta aqu se tienen las mismas causas de interrupcin del Pic16F84
5. Desbordamiento del Timer1
6. Desbordamiento del Timer2
7. Captura o comparacin en el mdulo CCP1
8. Captura o comparacin en el mdulo CCP2
9. Transferencia en la puerta serie Sncrona
10. Colisin de bus en la puerta serie Sncrona
11. Fin de la transmisin en el USART
12. Fin de la recepcin en el USART
13. Fin de la conversin en el convertidor A/D
14. Transferencia en la puerta paralela esclava (Esta causa de interrupcin no est
disponible en los Pic16F87x de 28 patitas)
MATERIAL Y EQUIPO EMPLEADO

Laboratorio equipado con computadoras.


Programador Universal
Software del Programador de Microcontroladores empleado (Chipmax, SuperPro,
ICPROG).
Fuente de Alimentacin.
Osciloscopio
Circuito de prueba armado en protoboard (ver diagramas esquemticos).

DESARROLLO
1. Abrir el programa MPLAB y escribir la siguiente secuencia de cdigo la cual se
guardar con el nombre de PRAC08.ASM. (Xtal= 4MHz).
LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG
0x3F39
_INT_SAVE_W
_INT_SAVE_STATUS
_INT_SAVE_FSR
_INT_SAVE_PCLATH
_INT_SAVE_OPTION_REG
ORG 0x00
NOP
GOTO _INICIO
ORG
MOVWF
SWAPF
MOVWF
SWAPF
MOVWF
SWAPF
MOVWF
SWAPF
MOVWF

0x20
0x21
0x22
0x23
0x24

_INICIO
BCF STATUS, RP0
BCF STATUS, RP1
MOVLW b'01000001'
MOVWF ADCON0
BSF STATUS, RP0
BCF STATUS, RP1
TRISA
TRISB
TRISC
TRISD
TRISE

;Var
;Var
;Var
;Var
;Var

para
para
para
para
para

guardar
guardar
guardar
guardar
guardar

W
STATUS
FSR
PCLATH
OPTION_REG

;Inicio del programa en la posicin cero de memoria


;Libre (uso del debugger)
;Ir _inicio

0x04
_INT_SAVE_W
STATUS, W
_INT_SAVE_STATUS
FSR, W
_INT_SAVE_FSR
PCLATH, W
_INT_SAVE_PCLATH
OPTION_REG, W
_INT_SAVE_OPTION_REG

GOTO _INTERRUPCION

CLRF
CLRF
CLRF
CLRF
CLRF

EQU
EQU
EQU
EQU
EQU

;Comando que indica el Pic usado


;Etiquetas genricas para el Pic16F877

;
;
;
;
;
;
;Ir rutina de interrupcion
;Ir banco 0
;A/D conversion Fosc/8
;Ir banco 1
;PORTA
;PORTB
;PORTC
;PORTD
;PORTE

salida
salida
salida
salida
salida

BCF TRISC, 6
BSF TRISC, 7
MOVLW D'25'
MOVWF SPBRG
BCF TXSTA, BRGH
BCF TXSTA, SYNC

;RC6/TX salida, pin de transmisin


;RC7/Rx entrada, pin de recepcin
;2400 baud rate Xtal=4Mhz

MOVLW B'00001110'
MOVWF ADCON1

;A/D Port AN0/RA0

;Seleccin de baja velocidad


;Modo asncrono

BSF TRISA, 0
CLRF INTCON
CLRF PIE1
CLRF PIE2
BSF PIE1, RCIE
BSF INTCON, PEIE
BSF INTCON, GIE

;RA0 linea de entrada para el ADC


;Deshabilitar interrupciones

BCF
BCF
BSF
BSF
BCF

;Ir banco 0

;Habilita INTR Recepcion Serial


;Habilita INTR perifericos
;Habilitador general de interrupciones

STATUS, RP0
STATUS, RP1
RCSTA, SPEN
STATUS, RP0
STATUS, RP1

;habilita el puerto serie


;Ir banco 1

BCF TXSTA, TX9


BSF TXSTA, TXEN
BCF STATUS, RP0
BCF STATUS, RP1
BCF RCSTA, RX9
BSF RCSTA, CREN
CLRF PORTC

;8 bits de datos a transmitir


;Activa la transmisin serial, TXIF = 1
;Ir banco 0
;8 Bits de datos
;Para Rx Continuo
;PORTC=0

_BUCLE
BSF ADCON0, GO
_ESPERA
BTFSC ADCON0, GO
GOTO _espera
MOVF ADRESH, W
MOVWF PORTC
GOTO _BUCLE

;Start A/D conversion


;ADCON0 es 0? (la conversion esta completa?)
;No, ir _espera
;Si, W=ADRESH
;Muestra el resultado en PORTC
;Ir bucle

_INTERRUPCION
BCF INTCON, PEIE
MOVF ADRESH, W
MOVWF TXREG
_ESPERATX
BTFSS PIR1, TXIF
GOTO _ESPERATX
MOVF RCREG, W
BSF INTCON, PEIE
SWAPF _INT_SAVE_OPTION_REG, W
MOVWF OPTION_REG
SWAPF _INT_SAVE_PCLATH, W
MOVWF PCLATH
SWAPF _INT_SAVE_FSR, W
MOVWF FSR
SWAPF _INT_SAVE_STATUS, W
MOVWF STATUS
SWAPF _INT_SAVE_W, W
RETFIE

;Rutina de interrupcion
;Deshabilita INTR perifericos
;W= ADC
;Transmitir dato, TXREG = W
;Espera hasta que transmisin culmin
;No, ir _esperatx
;Limpia el flag de interrupcion RCIF =0
;Habilita INTR perifericos
;Restaurar valor de OPTIO_REG
;Restaurar valor de PCLATH
;Restaurar valor de FSR
;Restaurar valor de STATUS

END

2. Ensamblar, depurar y simular el funcionamiento paso a paso de este programa.

3. Analizar el programa de esta prctica y contestar las siguientes preguntas:


a.
Cul es la razn por la que se utiliza la directiva ORG 0x04? Qu indica
esta direccin de memoria?
b.

Qu funcin cumplen las instrucciones:


ORG 0x04
MOVWF _INT_SAVE_W
SWAPF STATUS, W
MOVWF _INT_SAVE_STATUS
SWAPF FSR, W
MOVWF _INT_SAVE_FSR
SWAPF PCLATH, W
MOVWF _INT_SAVE_PCLATH
SWAPF OPTION_REG, W
MOVWF _INT_SAVE_OPTION_REG

;
;
;
;
;
;

c.

En qu direccin de memoria esta la etiqueta de _INICIO del programa?

d.

En qu momento el programa entra al Vector de Interrupciones y ejecuta el


cdigo que inicia en la etiqueta _INTERRUPCION?

4. En general describir el funcionamiento del programa.


5. Grabar el programa en un Microcontrolador.
6. Armar el circuito de prueba que se muestra a continuacin.
7. Probar el funcionamiento del circuito.
8. Despus de probar el circuito, responda las siguientes preguntas:
a.
Cul es el resultado observado?
b.

El resultado obtenido es el mismo al resultado esperado? (lo que se observa


en la prctica coincide con la simulacin obtenida).

c.

Cul es la diferencia entre un programa que usa Interrupciones y otro que


no las use?

d.

En tu opinin personal que es mejor?

VC C
U 1

R 3

470

D 2

LED

R A0

R 4

470

D 3

LED

R 5

470

D 4

LED

R 6

470

D 5

LED

R 7

470

D 6

LED

R 8

470

D 7

LED

R 9

470

D 8

LED

R B2
R B3

R
R
R
R
R
R
R
R

B
B
B
B
B
B
B
B

0
1
2
3
4
5
6
7

R B4
R B5
R B6
R B7

TXD
R XD
VC C

U 3

O SC 2

R XD

R 18

330

TXD B 9

R 19

330

P IC 1 6 F 8 7 7

1uF

V+
V-

C 1C 2+
C 2-

M A X232
13
8
11
10

R 20

330 R XD B 9

R 21

330 TXD

1
3
4

C 3

C 4

1uF
1uF

C 6
15
1uF

R 1
47k
SW 1
S W P U S H B U TTO N

M C LR

TXD B 9
R XD B 9

VC C

5
9
4
8
3
7
2
6
1

P1
3

Y 1

R 1 IN
R 2 IN
T 1 IN
T 2 IN
C +

VC C

O SC 2

R 1O U T
R 2O U T
T1O U T
T2O U T

VC C

O SC 1

8 M H z

12
9
14
7

R 17

R 16
R A0

10K

2
470
1

12
31

G N D
G N D

VD D
VD D

2
3
4
5
6
7
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
14

16

R A0
R A1
R A2
R A3
R A 4 /T 0 C L K
R A 5 /S S
R B 0 /IN T
R B1
R B2
R B3
R B4
R B5
R B6
R B7
R C 0 /T 1 O S I/T 1 C L K
R C 1 /T1 O S O
R C 2 /C C P 1
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R C 5 /S D O
R C 6
R C 7
R D 0 /P S P 0
R D 1 /P S P 1
R D 2 /P S P 2
R D 3 /P S P 3
R D 4 /P S P 4
R D 5 /P S P 5
R D 6 /P S P 6
R D 7 /P S P 7
R E 0 /R D
R E 1 /W R
R E 2 /C S
O S C 2 /C L K O U T

M C L R /V P P
O S C 1 /C L K

C 1

22pF

LED

R B1

C 5

C 2

D 1

VC C

1
13
11
32

22pF

470

G N D

M C LR
O SC 1

R 2
R B0

C O N N EC TO R D B9

Figura 25. Diagrama esquemtico prctica 8.

PRCTICA # 9.- PROGRAMACIN DE MEMORIA EEPROM


OBJETIVOS:

El alumno aprender a disear algoritmos escritos en Lenguaje ensamblador, que le


permitan configurar y aprovechar las ventajas que ofrece el almacenamiento de
informacin en memorias EEPROM de un circuito Microcontrolador.

INTRODUCCIN:
La memoria EEPROM (llamada de datos) y la memoria FLASH (memoria de programa)
pueden ser ledas y escritas durante la ejecucin de un programa. Trabajan con el
voltaje de alimentacin del microcontrolador (VDD).
La memoria de datos (EEPROM) tiene una palabra de 8 bits. Cuando accedemos a
este bloque de memoria el registro EEDATA contiene los 8 bits de datos y el registro
EEADR contiene la direccin que deseamos trabajar. El PIC16F877 tiene 256
posiciones de memoria de datos (EEPROM) numeradas de 0x00 a 0xFF (de 0 a 255).
La memoria de datos (EEPROM) es una memoria no voltil que se graba
elctricamente, es til porque nos permite almacenar valores o parmetros que sean
persistentes en la ejecucin de la aplicacin. Esto es, que no se borren frente a la
prdida de energa o reset.
En la memoria FLASH (programa) podemos leer o escribir palabras. El acceso a la
memoria de programa se hace para el clculo del checksum y la calibracin de tablas
de almacenamiento. La escritura de un byte o de una palabra borra automticamente la
localizacin seleccionada y coloca en ella el dato elegido. La escritura de la memoria de
programa cesa todas las operaciones hasta que es completada. La memoria de
programa no puede ser accedida durante un ciclo de escritura por tanto ninguna
instruccin puede ser ejecutada. Durante la operacin de escritura el oscilador contina
trabajando los dems mdulos. Si se presenta una interrupcin, est queda en espera
(en una suerte de cola) hasta que el ciclo de escritura de la memoria de programa haya
terminado. Terminado el ciclo, ejecuta una instruccin ms (que se carg antes de que
empiece la grabacin) y luego salta al vector de interrupcin.
MATERIAL Y EQUIPO EMPLEADO

Laboratorio equipado con computadoras.


Programador Universal
Software del Programador de Microcontroladores empleado (Chipmax, SuperPro,
ICPROG).
Fuente de Alimentacin.
Osciloscopio
Circuito de prueba armado en protoboard (ver diagramas esquemticos).

DESARROLLO
1. Abrir el programa MPLAB y escribir la siguiente secuencia de cdigo la cual se
guardar con el nombre de PRAC09.ASM. (Xtal= 4MHz).
LIST P=16F877A
INCLUDE "P16F877A.INC"
__CONFIG
0x3F39
ADDR_L EQU 0x20
DATA_L EQU 0x21
ORG 0x00
NOP
NOP
NOP

;Inicio del programa en la posicin cero de memoria


;Libre (uso del debugger)

_INICIO
BSF STATUS, RP0
BCF STATUS, RP1
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
BCF STATUS, RP0
BCF STATUS, RP1
CLRF PORTC
CLRF ADDR_L
CALL LEER_EEPROM
MOVF DATA_L, W
MOVWF PORTC
INCF DATA_L, F
CALL ESCRIBIR_EEPROM
_BUCLE
GOTO _BUCLE
ESCRIBIR_EEPROM:
BCF STATUS, RP0
BCF STATUS, RP1
MOVF ADDR_L, W
BCF STATUS, RP0
BSF STATUS, RP1
MOVWF EEADR
BCF STATUS, RP0
BCF STATUS, RP1
MOVF DATA_L, W
BCF STATUS, RP0
BSF STATUS, RP1
MOVWF EEDATA
BSF STATUS, RP0
BSF STATUS, RP1
BCF EECON1, EEPGD
BSF EECON1, WREN

;Comando que indica el Pic usado


;Etiquetas genricas para el Pic16F877

;Ir banco 1
;PORTA
;PORTB
;PORTC
;PORTD

salida
salida
salida
salida

;Ir banco 0
;Limpiar PORTC
;ADDR_L = 0x00 (Variables en banco2)
;Llamar rutina de lectura
;W = DATA_L
;PORTC = W
;incremento del dato ledo de la EEPROM
;Llamar rutina de grabacin
;Ir _bucle

;Ir banco 0
;EEADR = ADDR_L
;Ir banco 2
;Ir banco 0
;EEDATA = DATA_L
;Ir banco 2
;Ir banco 3
;Apuntar a la memoria EEPROM
;Habilitar escritura

BCF INTCON, GIE


MOVLW 55h
MOVWF EECON2
MOVLW 0xAA
MOVWF EECON2
BSF EECON1, WR
; BSF INTCON, GIE
_BUCLE1
BTFSC EECON1, WR
GOTO _BUCLE1
BCF PIR2, EEIF
BCF EECON1, WREN
BCF STATUS, RP0
BCF STATUS, RP1
RETURN
LEER_EEPROM:
BCF STATUS, RP0
BCF STATUS, RP1
MOVF ADDR_L, W
BCF STATUS, RP0
BSF STATUS, RP1
MOVWF EEADR
BSF STATUS, RP0
BSF STATUS, RP1
BCF EECON1, EEPGD
BSF EECON1, RD
BCF STATUS, RP0
BSF STATUS, RP1
MOVF EEDATA, W
BCF STATUS, RP0
BCF STATUS, RP1
MOVWF DATA_L
RETURN

;Deshabilita interrupciones
;Escribe 55 hexadecimal
;Escribe AA hexadecimal
;Habilita el bit de escritura
;Habilita interrupciones
;Espera el final de grabacin
;Si no termina la grabacin: Ir _bucle
;Si termina Borra bandera interrupcin
;Deshabilitar escritura
;Ir banco 0
;Retorno
;Ir banco 0
;Cargar direccin a leer
;Ir banco 2
;Ir banco 3
;Apunta a la memoria EEPROM
;Habilita ciclo de lectura
;Ir banco 2
;W = EEDATA (leer dato de EEPROM)
;Ir banco 0
;DATA_L = W (almacena dato de EEPROM)
;Retorno

END

2. Ensamblar, depurar y simular el funcionamiento paso a paso de este programa.


3. Analizar el programa de esta prctica y contestar las siguientes preguntas:
a.
Cunto tiempo consume la rutina de Lectura de la EEPROM?
b.

Cunto tiempo consume la rutina de Escritura de la EEPROM?

4. En general describir el funcionamiento del programa.


5. Grabar el programa en un Microcontrolador.
6. Armar el circuito de prueba que se muestra a continuacin.

VC C
U 1
1
13

R A0
M C L R /V P P
R A1
O S C 1 /C L K
R A2
R A3
VD D
R A 4 /T 0 C L K
VD D
R A 5 /S S
R B 0 /IN T
R B1
R B2
R B3
R B4
R B5
R B6
R B7
R C 0 /T 1 O S I/T 1 C L K
R C 1 /T 1 O S O
R C 2 /C C P 1
R C 3 /S C K /S C L
R C 4 /S D I/S D A
R C 5 /S D O
R C 6
R C 7
R D 0 /P S P 0
R D 1 /P S P 1
R D 2 /P S P 2
R D 3 /P S P 3
R D 4 /P S P 4
R D 5 /P S P 5
R D 6 /P S P 6
R D 7 /P S P 7
R E 0 /R D
R E 1 /W R
R E 2 /C S
O S C 2 /C L K O U T
G N D
G N D

11
32

470

D 1

LED

2
3
4
5
6
7
33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30
8
9
10
14

R A0

R 3

470

D 2

LED

R 4

470

D 3

LED

R 5

470

D 4

LED

R 6

470

D 5

LED

R 7

470

D 6

LED

R 8

470

D 7

LED

R 9

470

D 8

LED

R C 1
R C 2
R C 3
R C 4
R C 5

R
R
R
R
R
R
R
R

C
C
C
C
C
C
C
C

0
1
2
3
4
5
6
7

R C 6
R C 7

VC C

MC LR
O SC 1

R 2
R C 0

R 17

R 16
R A0

O SC 2

10K

VC C

12
31

470
P IC 1 6 F 8 7 7

R 1
47k

C 1
O SC 1
SW 1
22pF
C 2

Y 1
8 MH z

MC LR

S W P U S H B U TTO N
O SC 2

22pF

Figura 26. Diagrama esquemtico prctica 9.

7. Probar el funcionamiento del circuito.


8. Despus de probar el circuito, responda las siguientes preguntas:
a.
Cul es el resultado observado?
b.

Qu valor se despliega en el puerto C?

c.

Reinicia el sistema. Qu valor se despliega en el puerto C?

d.

El resultado obtenido es el mismo al resultado esperado? (lo que se observa


en la prctica coincide con la simulacin obtenida).

You might also like