Está en la página 1de 82

INSTITUTO TECNOLGICO DE DEPTO.

DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

MANUAL DE PRCTICAS DE
LA MATERIA DE
MICROCONTROLADORES
Diseo, programacin y
desarrollo de aplicaciones con
Microcontroladores PIC de
MICROCHIP. Se Utiliza MPLAB-
lenguaje Ensamblador y lenguaje
DEPTO. DE INGENIERA C en CCS.
ELCTRICA Y ELECTRNICA Elaborado por: M.C Franco G. Caballero Julin

Academia de Ing. Electrnica.


Ao 2015
Plan de estudios 2010
INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Elaborado por:

M.C. Franco G. Caballero Julin.

Colaboradores:

Ing. Pablo Martnez Jurez

Ing. Miguel A. Prez Solano

Presidente de Academia:

M.C. Isaas Velsquez Cruz

Jefe de Laboratorio:

M. E. Eduardo Bernab Daz

Jefe de Departamento:

M.E. Enrique Rodrguez Calvo

Diciembre del 2015

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 1


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

CONTENIDO

Contenido
PRCTICA #1 EL ENTORNO DE DESARROLLO DE MPLAB .................................................................... 4
PRCTICA #2 MANEJO DE PUERTAS DE ENTRADA Y SALIDA EN ENSAMBLADOR PARA EL PIC16F84
........................................................................................................................................................... 14
PRCTICA #4 PROGRAMACIN DE TMR0 EN ENSAMBLADOR PARA EL PIC16F84 ........................... 24
PRCTICA #5 MANEJO DE INTERRUPCIONES EN ENSAMBLADOR PARA EL PIC16F84 ...................... 29
PRCTICA #6 MANEJO DE TECLADO Y DISPLAY EN ENSAMBLADOR PARA EL PIC16F84 .................. 34
PRCTICA #7 GESTION DE PUERTOS EN LENGUAJE C PARA EL PIC 16F87X ...................................... 37
PRCTICA #8 ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C PARA EL PIC 16F87X .................. 42
PRCTICA #9 GESTION DEL TECLADO, MEMORIA EEPROM Y DISPLAY EN LENGUAJE C PARA EL PIC
16F87X ............................................................................................................................................... 49
PRCTICA #10 MANEJO DE INTERRUPCIONES EN LENGUAJE C PARA EL PIC 16F877X..................... 53
PRCTICA #11 TEMPORIZADORES .................................................................................................... 57
PRCTICA #12 CONVERTIDOR ANALOGICO-DIGITAL ........................................................................ 61
PRCTICA #13 MODULO CCP-COMPARADOR, CAPTURA Y PWM ..................................................... 65
PRCTICA #14 COMUNICACIN SERIAL RS232 ................................................................................. 72

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 2


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 3


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #1 EL ENTORNO DE DESARROLLO DE MPLAB


OBJETIVO
Que el estudiante instale MPLAB y desarrolle sus primeras aplicaciones en el
entorno de desarrollo integrado (IDE).
FUNDAMENTO TERICO
El entorno de desarrollo integrado MPLAB (MPLAB IDE) es un programa de
software que corre en una PC para desarrollar aplicaciones para Microcontroladores
de MICROCHIP. Se le llama entorno de desarrollo integrado porque provee un
ambiente integrado nico para desarrollar cdigo para microcontroladores
embebidos. Un sistema embebido es tpicamente un Microcontrolador con una
unidad de Microprocesador con algunos circuitos adicionales llamados perifricos,
ms otros circuitos adicionales en un mismo chip para hacer un pequeo mdulo de
control que requiere unos pocos dispositivos externos. Este pequeo dispositivo
ahora se puede embeber en un dispositivo electrnico o mecnico para su control
digital de bajo costo.

Figura 1.1.- Diagrama a bloques de un Microcontrolador.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 4


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

El ciclo de desarrollo

El proceso de escribir una aplicacin se entiende como el ciclo de desarrollo.


Frecuentemente se escribe el cdigo, se prueba y se modifica hasta que funciona
correctamente. Usando MPLAB IDE todas las funciones se integran permitiendo al
ingeniero concentrarse en terminar la aplicacin sin interrupciones por herramientas
separadas y diferentes modos de operacin.

Figura 1.2.- El ciclo de desarrollo.

Project Manager

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 5


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Caractersticas de MPLAB y su instalacin MPLAB IDE provee los siguientes


recursos:
-Crear y editar cdigo fuente usando su editor.
-Ensamblar, compilar y linkear cdigo fuente.
-Depurar la lgica ejecutable.
-Hacer mediciones en tiempo con el simulador o emulador.
-Programar los dispositivos.

METODOLOGA
La programacin se hace en Ensamblador, y el ejemplo se prueba en el modo de
simulacin en Proteus.

MATERIAL, EQUIPO Y RECURSOS


MPLAB
PROTEUS
Un programa bsico en Ensamblador.

DESARROLLO
1)Instalacin de MPLAB.

- Descargar MPLAB IDE del sitio web de Microchip (www.microchip.com),


localice la ltima versin .zip. seleccione el archivo, gurdelo en su PC,
desempquelo e instlelo.
2) Iniciar MPLAB IDE

Dar doble click en el cono de MPLAB que se instal, vaya a


Start>programs>Microchip>MPLAB_IDE>MPLABIDE

As se ver su IDE

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 6


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

3) Pasos para crear un proyecto


Seleccionar un dispositivo. Este paso se ejecuta antes de seleccionar un
proyecto. Seleccione Configure>Select Device

3.1 Crear un Proyecto. Elija Project Wizard. Seleccionar un dispositivo.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 7


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

3.2 Seleccione las herramientas del lenguaje. Seleccione built in assembler y


linker.

3.3 Crear un Nuevo Proyecto o reconfigurar el Proyecto activo.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 8


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

3.4 Ponga los archivos en el proyecto.

Elegir un archivo y usando Add agregarlos al men a la derecha. Presionar siguiente


para salir del Men.
3.5 Crear el cdigo.
3.6 Construir el proyecto.
Elija del Men la opcin Build All para crear el archivo .hex.
ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 9
INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

En un programa sin errores la ventana OUTPUT se ve as:

4 Probar el cdigo con el simulador.

4.1 Crear en Proteus el siguiente circuito con el Microprocesador PIC 16F84A

4.2 Copiar el siguiente programa, guardarlo en un archivo con extensin asm.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 10


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

;*****************************************************************
;
; ENCENDIDO Y APAGADO DE UN LED
;
;*****************************************************************

list p=16f84A ;
include "c:\mplab\p16f84A.inc";
__config _XT_OSC & _WDT_OFF & _PWRTE_ON ;

;********************************************************
;
; BLOQUE DE VARIABLES EN MEMORIA RAM
;***********************************************************
cblock 0x0c
reg1,reg2,reg3
endc

;************************************************************
; VECTOR DE INICIO
;************************************************************

org 0x00

;************************************************************
; INICIO DE PROGRAMA PRINCIPAL
;*************************************************************

inicio bsf STATUS,RP0 ;cambio a banco 1


movlw 0x00 ;W=00
movwf TRISA ;Puerta A como salidas
bcf STATUS,RP0 ;cambio a banco 0

led bsf PORTA,0 ;RA0 = 1,led on


call retardo ;Retardo de 500 ms
bcf PORTA,0 ;RA0 = 0,led off
call retardo ;retardo de 500 ms
goto led ;repite el cico

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 11


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

;***********************************************************
; RUTIMA DE RETARDO DE 500mS.
;***********************************************************

retardo movlw .45 ;W = 45


movwf reg1 ;W = reg1 = 45
t3 movlw .60 ;W = 60
movwf reg2 ;W = reg2 = 60
t2 movlw .60 ;W = 60
movwf reg3 ;W = reg3 = 60
t1 decfsz reg3,1 ;Decrementa reg3,salta si es cero
goto t1 ;va a t1
decfsz reg2,1 ;Decrementa reg2,salta si es cero
goto t2 ;va a t2
decfsz reg1,1 ;Decrementa reg1,salta si es cero
goto t3 ;va a t3
return ;Retorno de rutina de retardo
end

c) Ensamble su programa y el archivo .hex obtenido, crguelo en el PIC en


PROTEUS. Pruebe la simulacin.

d) Modificar su programa para que puedan prender los dos leds en forma alternada.

e) Modificar el programa para que ahora se puedan controlar dos leds en el Puerto
B.

CUESTIONARIO
1) Cules son las lneas de alimentacin del PIC 16F84A?
2) Cmo funciona el Reset?
3) Cuantas lneas tiene cada puerto en el PIC 16F84?
4) Cmo se pueden programar las lneas para entradas o salidas?
5) Haga un diagrama de flujo de su programa.
6) Describa el funcionamiento de su programa.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 12


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

EVALUACIN
La que se indica en su instrumentacin didctica.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Presente sus conclusiones.

BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.

[2] PIC16F84A Data Sheet, 18-pin Enhanced FLASH/EEPROM 8 bit Microcontroller.

[3] MPLAB IDE Users Guide. MICROCHIP.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 13


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #2 MANEJO DE PUERTAS DE ENTRADA Y SALIDA EN


ENSAMBLADOR PARA EL PIC16F84

OBJETIVO
Que el estudiante pruebe los recursos bsicos de Entrada/Salida del PIC 16F84A
por medio de la programacin de las puertas A y B, utilizando un programa que
permite visualizar distintas secuencias en leds, en funcin de la combinacin de
seales de entrada.

FUNDAMENTO TERICO
Un microcontrolador, es un circuito integrado programable que contiene los
elementos necesarios para controlar un sistema.

PIC significa Peripheral Interface Controler es decir un controlador de perifricos.


Cuando hablamos de un circuito integrado programable que controla perifricos,
estamos hablando de un sistema que contiene entre otras cosas una unidad
arimtico-lgica, unas memorias de datos y programas, unos puertos de entrada y
salida, es decir estamos hablando de un pequeo ordenador diseado para realizar
unas funciones especficas. Podemos encontrar microcontroladores en lavadoras,
teclados, telfonos mviles, ratones etc. Hay multitud de microcontroladores con
ms memoria, entradas y salidas, frecuencia de trabajo, coste, subsistemas
integrados y un largo etc. dependiendo de cada tipo de microcontrolador.

Disposicin de patillas para encapsulado DIL 18:

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 14


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Nombre N Tipo Descripcin

Entrada del oscilador a cristal/Entrada de la fuente de


OSC1/CLKIN 16 I
reloj externa

Salida del oscilador a cristal. En el modo RC, es una


OSC2/CLKOUT 15 O
salida con una frecuencia de OSC1

MCLR 4 I/P Reset/Entrada del voltaje de programacin.

RA0 17 I/O Puerto A bidireccional, bit 0

RA1 18 I/O Puerto A bidireccional, bit 1

RA2 1 I/O Puerto A bidireccional, bit 2

RA3 2 I/O Puerto A bidireccional, bit 3

RA4/T0CKI 3 I/O Tambin se utiliza para la entra de reloj para el TMR0

Puerto B bidireccional, bit 0


RB0/INT 6 I/O Puede seleccionarse para entrada de interrupcin
externa

RB1 7 I/O Puerto B bidireccional, bit 1

RB2 8 I/O Puerto B bidireccional, bit 2

RB3 9 I/O Puerto B bidireccional, bit 3

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 15


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Puerto B bidireccional, bit 4


RB4 10 I/O
Interrupcin por cambio de estado

Puerto B bidireccional, bit 5


RB5 11 I/O
Interrupcin por cambio de estado

Puerto B bidireccional, bit 6


RB6 12 I/O
Interrupcin por cambio de estado

Puerto B bidireccional, bit 7


RB7 13 I/O
Interrupcin por cambio de estado

Vss 5 P Tierra de referencia

Vdd 14 P Alimentacin

Estructura

Se trata de uno de los microcontroladores ms populares del mercado actual, ideal


para principiantes, debido a su arquitectura de 8 bits, 18 pines, y un conjunto de
instrucciones RISC muy amigable para memorizar y fcil de entender, internamente
consta de:

Memoria Flash de programa (1K x 14 bits).


Memoria EEPROM de datos (64 x 8 bits).
Memoria RAM (68 registros x 8 bits).
Un temporizador/contador (timer de 8 bits).
Un divisor de frecuencia.
Varios puertos de entrada-salida (13 pines en dos puertos, 5 pines el puerto A y 8
pines el puerto B).
Manejo de interrupciones (de 4 fuentes).
Perro guardin (watchdog).
Bajo consumo.
Frecuencia de reloj externa mxima 10MHz. (Hasta 20MHz en nuevas versiones).
La frecuencia de reloj interna es un cuarto de la externa, lo que significa que con un
reloj de 20Mhz, el reloj interno sera de 5Mhz y as pues se ejecutan 5 Millones de
Instrucciones por Segundo (5 MIPS)
No posee conversores analgicos-digital ni digital-analgicos.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 16


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Pipe-line de 2 etapas, 1 para bsqueda de instruccin y otra para la ejecucin de la


instruccin (los saltos ocupan un ciclo ms).
Repertorio de instrucciones reducido (RISC), con tan solo 30 instrucciones
distintas.
4 tipos distintos de instrucciones, orientadas a byte, orientadas a bit, operacin entre
registros, de salto.

METODOLOGA
La programacin se hace en Ensamblador, y el ejemplo se prueba en el modo de
simulacin en Proteus.

MATERIAL, EQUIPO Y RECURSOS


MPLAB
PROTEUS
Un programa bsico en Ensamblador.
DESARROLLO
1 Probar el programa de un circuito secuenciador que se le proporciona.

a) Crear en Proteus el siguiente circuito con el Microprocesador PIC 16F84A

b) Copiar el siguiente programa, guardarlo en un archivo con extensin asm.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 17


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

El archivo se llama practica2_uP.asm, y est en la carpeta Practicas_uP que se le


proporciona.

c) Ensamble su programa y el archivo .hex obtenido, crguelo en el PIC en


PROTEUS. Pruebe la simulacin.

CUESTIONARIO
1) Hacer un diagrama de flujo del programa.
2) Describir las instrucciones que se utilizan para programar las diferentes
lneas de E/S.
3) Describir el funcionamiento del programa.
EVALUACIN
La que se indica en su instrumentacin didctica.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Presente sus conclusiones.

BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.

[2] PIC16F84A Data Sheet, 18-pin Enhanced FLASH/EEPROM 8 bit Microcontroller.

[3] MPLAB IDE Users Guide. MICROCHIP.

[4] Angulo, J. y Angulo, I. (2003) PIC Diseo prctico de aplicaciones primera parte.
Tercera edicin. McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 18


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #3 MANEJO DE SALTOS CONDICIONALES EN ENSAMBLADOR


PARA EL PIC16F84

OBJETIVO
Que el estudiante conozca el set de instrucciones en Lenguaje Ensamblador.

FUNDAMENTO TERICO
Conjunto de instrucciones El conjunto de instrucciones de los microprocesadores
PIC 16C5X consiste en un pequeo repertorio de solo 33 instrucciones de 12 bits,
que pueden ser agrupadas para su estudio en tres a cinco grupos. En este curso se
ha optado por clasificarlas, desde el punto de vista del programador, en cinco
categoras bien definidas de acuerdo con la funcin y el tipo de operandos
involucrados. En primer lugar se agrupan las instrucciones que operan con bytes y
que involucran algn registro de la memoria interna. En segundo lugar se analizaran
las instrucciones que operan solo sobre el registro W y que permiten cargarle una
constante implcita o incluida literalmente en la instruccin (literales). En tercer lugar
se agrupan las instrucciones que operan sobre bits individuales de los registros de
la memoria interna. En cuarto lugar se clasifican las instrucciones de control de flujo
del programa, es decir las que permiten alterar la secuencia lineal de ejecucin de
las instrucciones. Por ltimo se agrupan unas pocas instrucciones que llamaremos
especiales, cuyas funciones o tipos de operandos son muy especficos y no encajan
en ninguna de las clasificaciones anteriores.

Las dos nicas instrucciones de salto (skip) condicional.


Estas instrucciones son los nicos medios para implementar bifurcaciones
condicionales en un programa. Son muy generales y muy poderosas ya que
permiten al programa tomar decisiones en funcin de cualquier bit de cualquier
posicin de la memoria interna de datos, y eso incluye a los registros de perifricos,
los puertos de entrada/salida e incluso la palabra de estado del procesador. Estas
dos instrucciones reemplazan y superan a todo el conjunto de instrucciones de salto
condicional que poseen los microprocesadores sencillos convencionales (salto por
cero, por no cero, por carry, etc.).

BTFSC f,b ;salto si bit = 0, bit = f(0) _ salto


BTFSS f,b ;salto si bit = 1, bit = f(1) _ salto

A continuacin, el conjunto de instrucciones en lenguaje ensamblador


para el PIC 16F84A.
ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 19
INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Instrucciones orientadas a byte

Instrucciones orientadas a bit

Instrucciones orientadas a literal y control

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 20


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

METODOLOGA
La programacin se hace en Ensamblador, y el ejemplo se prueba en el modo de
simulacin en Proteus.

MATERIAL, EQUIPO Y RECURSOS


MPLAB
PROTEUS
Un programa bsico en Ensamblador.

DESARROLLO
Probar el programa de u circuito secuenciador que se le proporciona.

a) Se desea confeccionar un programa para el PIC16F84A funcionando a 4


MHz. Que comience poniendo a cero el contador CONTA. Despus se
incrementa de unidad hasta alcanzar =x5F h, momento en el que se detiene
en un bucle infinito no operativo. El valor del contador en binario se visualiza
con 8 diodos led conectados a las lneas de la puerta B. Crear en Proteus el
siguiente circuito con el Microprocesador PIC 16F84A

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 21


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

b) Copiar el siguiente programa, guardarlo en un archivo con extensin asm.

List P=16F84A
Include <P16F84A.INC>
RADIX HEX
__config _XT_OSC & _WDT_OFF & _PWRTE_ON
; COMIENZO DEL CAMPO DE ETIQUETAS
W EQU 0x00
F EQU 0x01
PUERTAB EQU 0x06
ESTADO EQU 0x03
CONTA EQU 0x0C
OR 0
goto inicio
ORG 5
; DECLARACION DE PUESTA B COMO SALIDAS

INICIO bsf ESTADO, 5


movlw 0x00
movwf PUERTAB
bcf ESTADO,5
clrd CONTA
bucle1 incf CONTA,F
movf CONTA, W
movwf PUERTAB
movlw 0x5f
subwf CONTA, W
btfss ESTADO, 2
goto bucle1
bucle2 goto bucle2
end

c) Ensamble su programa y el archivo .hex obtenido, crguelo en el PIC en


PROTEUS. Pruebe la simulacin.

CUESTIONARIO
1) Hacer un diagrama de flujo del programa.
2) Describir el funcionamiento de las instrucciones de salto en lenguaje
Ensamblador.
3) Describir el funcionamiento del programa.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 22


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

EVALUACIN
La que se indica en su instrumentacin didctica.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Presente sus conclusiones.

BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.

[2] PIC16F84A Data Sheet, 18-pin Enhanced FLASH/EEPROM 8 bit Microcontroller.

[3] Angulo, J. y Angulo, I. (2003) PIC Diseo prctico de aplicaciones primera


parte. Tercera edicin. McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 23


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #4 PROGRAMACIN DE TMR0 EN ENSAMBLADOR PARA EL


PIC16F84

OBJETIVO
Utilizar el temporizador TMR0 para controlar aplicaciones de duracin relativamente
largas.

FUNDAMENTO TERICO
Temporizador/Contador (RTCC) Este dispositivo, llamado Real Time Clock
/Counter, es bsicamente un contador de 8 bits, constituido por el registro
operacional RTCC que se encuentra en la posicin 01 de la memoria de datos. Este
registro puede usarse para contar eventos externos por medio de un pin de entrada
especial (modo contador) o para contar pulsos internos de reloj de frecuencia
constante (modo timer).
Adems, en cualquiera de los dos modos, se puede insertar un prescaler, es decir
un divisor de frecuencia programable que puede dividir por 2, 4, 8, 16, 32, 64, 128
o 256. Este divisor puede ser utilizado alternativamente como prescaler del RTCC
o como postscaler del Watch Dog Timer, segn se lo programe.

Para su programacin se dispone de dos registros: el RTCC ya mencionado y el


registro OPTION. Este ltimo no es accesible como memoria de datos, no se lo
puede leer de ninguna manera, y solo se lo puede escribir con la instruccin especial
OPTION (familia PIC16C5X). Este registro contiene los bits necesarios para
seleccionar modo contador o modo timer, flanco de conteo en modo contador,
prescaler para RTCC o para WDT y constante de divisin del prescaler, segn el
siguiente esquema:

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 24


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

A continuacin se muestra un circuito equivalente del RTCC (TMR0) y el prescaler.

En el esquema se puede observar claramente como operan los bits de configuracin


T0SE, T0CS y PSA, en cualquiera de sus combinaciones. Se observa adems que
en la entrada del contador RTCC hay un circuito de sincronizacin que introduce
una demora de dos ciclos del clock de instrucciones (Fosc. / 4). Al escribir sobre el
RTCC automticamente se resetea este circuito, por lo tanto solo se incrementara
dos ciclos despus. El prescaler es un contador asincrnico de 8 bits ms un
multiplexor 8 a 1 comandado por los bits PS0 a PS2, que permite seleccionar como
salida a cualquiera de los bits del contador. Al escribir sobre el RTCC, si este est
programado para operar con prescaler (PSA=0), se borra automticamente el
prescaler. Las instrucciones CLRWDT y SLEEP borran el prescaler, si este est
programado para operar como postscaler del watch dog timer (PSA=1).

METODOLOGA
La programacin se hace en Ensamblador, el ejemplo se prueba en el modo de
simulacin en Proteus, se arma el circuito y se prueba su funcionamiento fsico.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 25


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

MATERIAL, EQUIPO Y RECURSOS


MPLAB
PROTEUS
Un programa bsico en Ensamblador.
PIC16F84A
Programador
DESARROLLO
Probar el programa de u circuito secuenciador que se le proporciona.

a) Se desea confeccionar un programa para el PIC16F84A funcionando a 1


MHz., que haga parpadear un led cada 8.2 mS.
Para medir los 8.2 mS, se emplea el TMR0, al cual se le hacen contar 16
impulsos de reloj interno divididos por 128 mediante el divisor de
frecuencia. La frmula que indica el tiempo de la temporizacin es:

Temporizacin = 4 x Tosc x (256 valor cargado en TMR0) x Rango


Divisor.
Temporizacin = 4 x 1 uS x 16 x 128 = 8, 192 mS.

b) Copiar el siguiente programa, guardarlo en un archivo con extensin asm.


ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 26
INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

list P=16F84A
include <P16F84A.INC>
RADIX HEX
__config _XT_OSC & _WDT_OFF & _PWRTE_ON
PUERTAB EQU 0x06
OPCION EQU 0x01
ESTADO EQU 0x03
TMR0 EQU 0x01
ORG 0 ; Inicio del programa en direccion 0
bsf ESTADO,5 ; BANCO 1
movlw b'11010110' ; valor a cargar en OPTION
movwf OPCION
movlw 0x00
movwf PUERTAB ; la Puerta B salida
bcf ESTADO,5 ; Banco 0
clrf PUERTAB ; Las lineas de salida de PB a 0
parpa bsf PUERTAB,7 ; Enciende el LED RB7=1
call retardo ; Llamada a subrutina de RETARDO
bcf PUERTAB,7 ; Apaga el LED, RB7=0
call retardo
goto parpa
retardo clrf TMR0 ; TMR0 = 0 y empieza su incremento
explora btfss TMR0,4 ; TMR0<4> =1?
goto explora ; No ha llegado TMR0 al valor 16
return ; Ha llegado TMR0 al valor 16
; Y retorna al programa principal

END

c) Ensamble su programa y el archivo .hex obtenido, crguelo en el PIC en


PROTEUS. Pruebe la simulacin.
d) Armar su circuito en el Protoboard y probar su funcionamiento.

CUESTIONARIO
4) Hacer un diagrama de flujo del programa.
5) Describir el funcionamiento del temporizador TMR0.
6) Describir el funcionamiento del programa.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 27


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

EVALUACIN
La que se indica en su instrumentacin didctica.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Presente sus conclusiones.

BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.

[2] PIC16F84A Data Sheet, 18-pin Enhanced FLASH/EEPROM 8 bit Microcontroller.

[3] Angulo, J. y Angulo, I. (2003) PIC Diseo prctico de aplicaciones primera parte.
Tercera edicin. McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 28


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #5 MANEJO DE INTERRUPCIONES EN ENSAMBLADOR PARA EL


PIC16F84

OBJETIVO
Probar los diferentes modos de atencin a interrupciones en el Microcontrolador
PIC16F84.

FUNDAMENTO TERICO
Interrupciones Los 16FXX agregan la posibilidad de contar con sistema de
interrupciones. Este sistema consiste en un mecanismo por el cual un evento interno
o externo, asincrnico respecto del programa, puede interrumpir la ejecucin de ste
produciendo automticamente un salto a una subrutina de atencin, de manera que
pueda atender inmediatamente el evento, y retomar luego la ejecucin del programa
exactamente en donde estaba al momento de ser interrumpido. Este mecanismo es
muy til por ejemplo para el manejo de timers o rutinas que deben repetirse
peridicamente (refresh de display, antirebote de teclado, etc.), deteccin de pulsos
externos, recepcin de datos, etc.
En los 16FXX las interrupciones se comportan casi exactamente igual que las
subrutinas.
Desde el punto de vista del control del programa, al producirse una interrupcin se
produce el mismo efecto que ocurrira si el programa tuviese un CALL 0004h en el
punto en que se produjo la interrupcin. En uno de los registros de control del
sistema de interrupciones existe un bit de habilitacin general de interrupciones GIE,
que debe ser programado en 1 para que las interrupciones puedan actuar. Al
producirse una interrupcin, este bit se borra automticamente para evitar nuevas
interrupciones. La instruccin RETFIE que se utiliza al final de la rutina de
interrupcin, es idntica a un retorno de subrutina, salvo que adems coloca en uno
automticamente el bit GIE volviendo a habilitar las interrupciones. Dentro de la
rutina de interrupcin, el programa deber probar el estado de los flags de
interrupcin de cada una de las fuentes habilitadas, para detectar cual fue la que
causo la interrupcin y as decidir que accin tomar.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 29


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Lgica de interrupciones para los controladores PIC16F8X


Fuentes
La seal que produce la interrupcin es en realidad una sola, que resulta de la
combinacin de todas las fuentes posibles y de los bits de habilitacin. Existen dos
grupos de fuentes, unas que se habilitan con solo colocar en uno el bit GIE, y otras
que adems necesitan que este puesto a uno el bit PEIE. En algunas versiones de
los 16CXX solo existe el primer grupo. Adems, cada fuente de interrupciones tiene
su respectivo bit de habilitacin individual.
Las fuentes de interrupcin varan con cada versin, y pueden ser por ejemplo:

Interrupcin externa por pin RB0/INT


Desborde del Timer 0 o RTCC
Cambio en el estado de los bits 4 a 7 del puerto B
Desborde del timer 1
Desborde del timer 2
Interrupcin del capture/compare 1
Interrupcin del capture/compare 2
transmisin o recepcin de un caracter por la interface serie sincrnica
transmisin o recepcin de un caracter por la interface serie asincrnica
Fin de conversin A/D
Lectura/escritura del puerto paralelo de comunicacin con otros
microprocesadores
Escritura de EEPROM finalizada

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 30


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

METODOLOGA
La programacin se hace en Ensamblador, el ejemplo se prueba en el modo de
simulacin en Proteus, se arma el circuito y se prueba su funcionamiento fsico.
MATERIAL, EQUIPO Y RECURSOS
MPLAB
PROTEUS
Un programa bsico en Ensamblador.
PIC16F84A
Programador
DESARROLLO
Probar el programa de un circuito secuenciador que se le
proporciona.

a) Se desea confeccionar un programa para el PIC16F84A cuyo


oscilador interno se halla controlado por un cristal de cuarzo
funcionando a 4 MHz. Conectados a las lneas RA0 y RA1 de la puerta
A existen dos interruptores, A y B, los cuales tienen que ser explorados
continuamente y reflejar su estado (abiertos o cerrados) sobre dos
diodos led conectados a las lneas RB=0 y RB1 de la puerta B.
Adems existe otro diodo Led en la lnea RB7 que est parpadeando
continuamente, pasando cada segundo por los estados de encendido
y apagado.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 31


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

b) Copiar el siguiente programa, guardarlo en un archivo con extensin


asm.
El archivo se llama practica2_uP.asm, y est en la carpeta
Practicas_uP que se le proporciona.
c) Ensamble su programa y el archivo .hex obtenido, crguelo en el PIC
en PROTEUS. Pruebe la simulacin.
d) Armar su circuito en el Protoboard y probar su funcionamiento.
e) Pruebe el circuito por interrupcin en RB0/INT.

CUESTIONARIO
1) Hacer un diagrama de flujo del programa.
2) Describir el funcionamiento del temporizador TMR0.
3) Describir el funcionamiento del programa.
4) Pruebe un ejemplo de interrupcin por RB0/INT

EVALUACIN
La que se indica en su instrumentacin didctica.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 32


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Presente sus conclusiones.

BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.

[2] PIC16F84A Data Sheet, 18-pin Enhanced FLASH/EEPROM 8 bit Microcontroller.

[3] Angulo, J. y Angulo, I. (2003) PIC Diseo prctico de aplicaciones primera parte.
Tercera edicin. McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 33


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #6 MANEJO DE TECLADO Y DISPLAY EN ENSAMBLADOR PARA


EL PIC16F84
OBJETIVO
Programar en lenguaje Ensamblador el manejo del teclado y display con un PIC
16F84A.

FUNDAMENTO TERICO
Para la lectura del teclado debemos tener en cuenta la disposicin de las filas y las
columnas. como se observa en la figura 6.1, con la cual realizando la operacin all
descrita se debe obtener un nmero consecutivo de las teclas en la organizacin
aqu mostrada. Luego, mediante el acceso a una tabla se decodifica la tecla leda
para obtener el patrn final observado en el diagrama del hardware FIG. 6.2. Ej. S
se oprime la tecla C del teclado (figura 6.1), el cdigo de exploracin
correspondiente a esta es el 13d (figura 6.2) que debe ser representado como el
1100b.

Figura 6.1.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 34


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Figura 6.2.
METODOLOGA
La programacin se hace en Ensamblador, el ejemplo se prueba en el modo de
simulacin en Proteus, se arma el circuito y se prueba su funcionamiento fsico.

MATERIAL, EQUIPO Y RECURSOS


MPLAB
PROTEUS
Un programa bsico en Ensamblador.
PIC16F84A
Programador

DESARROLLO
1) Investigar un circuito con PIC16F84A que tenga teclado y display. Obtener
su cdigo.
ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 35
INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

2) Pruebe su ejercicio en Proteus.


3) Armar el circuito en Protoboard y comprobar su funcionamiento.
CUESTIONARIO
1) Hacer un diagrama de flujo del programa.
2) Describir el funcionamiento del programa.
3) Dar tres ejemplos prcticos de aplicacin.
EVALUACIN
La que se indica en su instrumentacin didctica.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Presente sus conclusiones.

BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.

[2] PIC16F84A Data Sheet, 18-pin Enhanced FLASH/EEPROM 8 bit Microcontroller.

[3] Angulo, J. y Angulo, I. (2003) PIC Diseo prctico de aplicaciones primera parte.
Tercera edicin. McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 36


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #7 GESTION DE PUERTOS EN LENGUAJE C PARA EL PIC 16F87X


OBJETIVO
Probar el circuito que mediante tcnicas de programacin en lenguaje C le permita
habilitar los diferentes puertos del microcontrolador 16F87X como entradas, salidas
y entradas-salidas; utilizando interruptores como entradas y leds como salidas.

FUNDAMENTO TERICO
Gestin de puertos en C.
En lenguaje C, se pueden gestionar los puertos de dos formas:
a) Se declaran los registros TRISX y PORTX definiendo su posicin en la
memoria RAM como variables de C.
b) Utilizando las directivas especficas del compilador (#USE FAST_IO, #USE
FIXED_IO, #USE STANDARD_IO).
A travs de la RAM
La directiva utilizada de C es #BYTE:
#BYTE variable = constante;
#BYTE TRISA=0X85; Variable TRISA en 85h.
#BYTE PORTA=0X05; Variable PORTA en 05h.
#BYTE TRISB=0X86; Variable TRISB en 86h.
Existen unas funciones en C que permiten trabajar bit a bit con los registros de
variables definidas previamente. Estas funciones son las siguientes:
bit_clear(var,bit) //Pone a 0 el bit especificado (0 a 7) de la variable.
bit_set(var,bit) //Pone a 1 el bit especificado (0 a 7) de la variable.
bit_test(var,bit) //Muestra el bit especificado (0 a 7) de la variable.
swap(var) //Intercambia los 4 bits de ms peso con los de menos peso.
Se puede declarar un bit de un registro con una variable mediante la directiva #BIT,
lo que permite trabajar directamente con el terminal:

#BIT nombre =posicin.bit

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 37


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

#BIT RB4 = 0x06.4 //PORTA = 0x06

RB4 = 0;

A travs de las directivas

El compilador ofrece funciones predefinidas para trabajar con los puertos. Estas
funciones son:

output_X(valor);
input_X();
set_trisX(valor);
port_b_pullups(valor);
get_trisX();
Donde X es la inicial del puerto correspondiente(A,B,C,)

Existen una serie de funciones asociadas a un terminal o pin.

output_low(PIN);
output_high(PIN);
output_bit(PIN, valor);
output_toggle(PIN);
output_float(PIN);
input_state(PIN);
input(PIN);

Por ejemplo:
output_low(PIN_B1);
output_high(PIN_B1);

METODOLOGA
Para este ejercicio, la metodologa consiste en escribir el programa en lenguaje C,
y compilarlo en CCS para obtener el archivo .hex. Dibujar el circuito que se propone
en Proteus y en el microcontrolador cargar el archivo que genera CCS para simular
su comportamiento.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 38


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

MATERIAL, EQUIPO Y RECURSOS


Una computadora por dos estudiantes, con software Proteus y CCS.
Un Microcontrolador PIC16F877
8 Resistencias
8 Leds
1 interruptor

DESARROLLO
1) Dibuje en Proteus el circuito que se presenta a continuacin.

2) Se configuran las terminales RB0 como entrada, y RB1,RB2,RB3,RB4 como


salidas con resistencia de pull-up.

3) Transcriba e interprete el siguiente programa en CCS. Obtenga el archivo


.hex y carguelo en su herramienta de simulacin.

CDIGO DE LA PRACTICA:
#include <16F877.h>
#fuses XT,NOWDT
#use delay( clock = 4000000 ) // Reloj de 4 MHz

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 39


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

#BYTE TRISB = 0x86 // TRISB en 86h.


#BYTE PORTB = 0x06 // PORTB en 06h.
#BYTE OPTION_REG = 0x81 //OPTION_REG en 81h.

void main() {
bit_clear(OPTION_REG,7); // Habilitacin Pull-up
bit_set(TRISB,0); //B0 como entrada
bit_clear(TRISB,1); // B1 como salida
bit_clear(TRISB,2);
bit_clear(TRISB,3);
bit_clear(TRISB,4);
bit_clear(PORTB,1); // apaga LED
bit_clear(PORTB,2);
bit_clear(PORTB,3);
bit_clear(PORTB,4);
while (1) {
if (bit_test(portb,0) == 1 ) //Si RB0 es 1 apaga el LED
{
bit_set(portb,1);
bit_set(portb,2);
bit_set(portb,3);
bit_set(portb,4);
}
else{
bit_clear(portb,1); //Si RB0=0 enciende el LED
bit_clear(portb,2);
bit_clear(portb,3);
bit_clear(portb,4);
}
}
}

4) Haga las modificaciones necesarias para que pueda colocar otros cuatro
leds en el puerto A, tal que mientras un estn apagados los leds de un puerto
se prendan los del otro puerto y viceversa.
5) Para el circuito obtenido en el paso 4, modifique el programa para hacerlo
ms compacto.
6) Calcular el valor de las resistencias limitadoras de corriente, armar el circuito
fsicamente en protoboard, programar el Microcontrolador y probar su
funcionamiento con el programa creado en el paso 5.

CUESTIONARIO
Llenar la siguiente tabla.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 40


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Caractersticas Gama PIC16F873 PIC16F874 PIC16F876 PIC16F877


media
Frecuencia de trabajo DC-20MHz
Reset POR, BOR
(PWRT, OST)
Memoria de programa 8K
FLASH(14 bits)
Memoria de 192
datos(Bytes)
Memoria de 256
datos(EEPROM)
Interrupciones 13
Puertos E/S A,B,C,D,E
Temporizadores 3
Mdulos CCP 2
Comunicaciones serie
Comunicaciones PSP
paralelo
Modulo AD de 10 bits 5 canales
Nmero de instrucciones 35

EVALUACIN
La que se indica en su gua de aprendizaje.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Escriba sus conclusiones.

BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.

[2] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.


parte . McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 41


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #8 ESTRUCTURA DE UN PROGRAMA EN LENGUAJE C PARA EL


PIC 16F87X

OBJETIVO
Realizar algunos ejemplosque permitan entender la estructura de programa en
lenguaje C para el PIC 16F87X.

FUNDAMENTO TERICO
VENTAJAS DE LENGUAJES DE PROGRAMACIN DE ALTO NIVEL

A pesar de todos los lados buenos, el lenguaje ensamblador tiene algunas


desventajas. Incluso una sola operacin en el programa escrito en ensamblador
consiste en muchas instrucciones, hacindolo muy largo y difcil de manejar.

Cada tipo de microcontrolador tiene su propio conjunto de instrucciones que un


programador tiene que conocer para escribir un programa; Un programador tiene
que conocer el hardware del microcontrolador para escribir un programa

Programa escrito en C (El mismo programa compilado al cdigo ensamblador):

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 42


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Los lenguajes de programacin de alto nivel (Basic, Pascal, C etc.) fueron creados
con el propsito de superar las desventajas del ensamblador. En lenguajes de
programacin de alto nivel varias instrucciones en ensamblador se sustituyen por
una sentencia. El programador ya no tiene que conocer el conjunto de instrucciones
o caractersticas del hardware del microcontrolador utilizado.

Ya no es posible conocer exactamente cmo se ejecuta cada sentencia, de todas


formas ya no importa. Aunque siempre se puede insertar en el programa una
secuencia escrita en ensamblador.

Si alguna vez ha escrito un programa para un microcontrolador PIC en lenguaje


ensamblador, probablemente sepa que la arquitectura RISC carece de algunas
instrucciones. Por ejemplo, no hay instruccin apropiada para multiplicar dos
nmeros.

Por supuesto, para cada problema hay una solucin y ste no es una excepcin
gracias a la aritmtica que permite realizar las operaciones complejas al
descomponerlas en un gran nmero operaciones ms simples. En este caso, la
multiplicacin se puede sustituir con facilidad por adicin sucesiva (a x b = a + a +
a + ... + a).

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 43


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Ya estamos en el comienzo de una historia muy larga... No hay que preocuparse al


utilizar uno de estos lenguajes de programacin de alto nivel como es C, porque el
compilador encontrar automticamente la solucin a ste problema y otros
similares. Para multiplicar los nmeros a y b, basta con escribir a*b.

LENGUAJE C

El lenguaje C dispone de todas las ventajas de un lenguaje de programacin de alto


nivel (anteriormente descritas) y le permite realizar algunas operaciones tanto sobre
los bytes como sobre los bits (operaciones lgicas, desplazamiento etc.). Las
caractersticas de C pueden ser muy tiles al programar los microcontroladores.
Adems, C est estandarizado (el estndar ANSI), es muy portable, as que el
mismo cdigo se puede utilizar muchas veces en diferentes proyectos. Lo que lo
hace accesible para cualquiera que conozca este lenguaje sin reparar en el
propsito de uso del microcontrolador. C es un lenguaje compilado, lo que significa
que los archivos fuentes que contienen el cdigo C se traducen a lenguaje mquina
por el compilador. Todas estas caractersticas hicieron al C uno de los lenguajes de
programacin ms populares.

ESTRUCTURA DE PROGRAMA

La idea principal de escribir un programa en C es de romper un problema mayor


en varios trozos ms pequeos. Supongamos que es necesario escribir un
programa para el microcontrolador para medir la temperatura y visualizar los
resultados en un LCD. El proceso de medicin se realiza por un sensor que
convierte temperatura en voltaje.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 44


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

El microcontrolador utiliza el convertidor A/D para convertir este voltaje (valor


analgico) en un nmero (valor digital) que luego se enva al LCD por medio de
varios conductores. En consecuencia, el programa se divide en cuatro partes, de
las que cada una corresponde a una accin especfica:

Activar y configurar el convertidor A/D incorporado;

Medir el valor analgico;

Calcular temperatura; y

Enviar los datos en el formato apropiado al LCD;

Los lenguajes de programacin de alto nivel como es C le permiten


solucionar este problema con facilidad al escribir cuatro funciones que se
ejecutarn cclicamente sin parar.

La idea general es de dividir el problema en varios trozos, de los que cada


uno se puede escribir como una sola funcin. Todos los programas escritos
en mikroC contienen por lo menos una funcin llamada main() que encierra
entre llaves {} las sentencias a ser ejecutadas.

Esto es la primera funcin a ser ejecutada al iniciarse la ejecucin de


programa. Las otras funciones se pueden llamar dentro de la funcin main.
En otras palabras, podemos decir que la funcin main() es obligatoria,
mientras que las dems son opcionales. Si todava no ha escrito un programa
en C, es probable que todo le resulte confuso. No se preocupe, acptelo tal
como es por el momento y ms tarde entender la sintaxis

La figura siguiente muestra la estructura de programa, sealando las partes en las


que consiste.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 45


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

METODOLOGA
Para este ejercicio, la metodologa consiste en escribir el programa en lenguaje C,
y compilarlo en CCS para obtener el archivo .hex. Dibujar el circuito que se propone
en Proteus y en el microcontrolador cargar el archivo que genera CCS para simular
su comportamiento. Armar el circuito para comprobar su funcionamiento.

MATERIAL, EQUIPO Y RECURSOS


Una computadora por dos estudiantes, con software Proteus y CCS.
Un Microcontrolador PIC16F877

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 46


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

DESARROLLO
1) Pruebe los ejemplos T4_E2 y T4_E6 de las carpetas del mismo nombre
contenidas en Ejemplos.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 47


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

2) Modifique los programas para que se puedan probar para un


Microcontrolador 16F877.
3) Programar su Microcontrolador y armar el circuito en Protoboard para
comprobar su funcionamiento.

CUESTIONARIO

EVALUACIN
La que se indica en su gua de aprendizaje.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Escriba sus conclusiones.

BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.

[2] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.


parte . McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 48


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #9 GESTION DEL TECLADO, MEMORIA EEPROM Y DISPLAY EN


LENGUAJE C PARA EL PIC 16F87X

OBJETIVO
Realizar un programa que permita controlar el teclado, memoria EEPROM y display
en Lenguaje C para el PIC 16F87X

FUNDAMENTO TERICO
LCD grfico:

El compilador C suministra varios drivers para este tipo de LCD grficos, el GLCD.C,
GRAPHICS.C, o el ms especfico HDM64GS12.C.

Algunas de las funciones definidas son:

gcd_init(mode)
Debe ser la primera funcin en invocarse. Enciende el LCD.

glcd_pixel(x,y,color)
Establece el color del pixel. Puede activarse o desactivarse.

glcd_fillScreen(color)
Rellena el LCD de un color determinado. Puede activarse o desactivarse.

gcd_update()
Escribe en la RAM del LCD.

glcd_line(x1,y1,x2,y2,color)
Dibuja una lnea desde el primer punto al segundo asignando color, el cual asu
vez puede activarse o desactivarse.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 49


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Teclado (Keypad 3 x 4)
Las entradas a travs de un pulsador son muy habituales en los sistemas de
microcontroladores para trabajar con una mayor informacin o informacin
alfanumrica. Por ejemplo se utilizan los teclados matriciales de 1x4, 3x4, o 4x4.
El compilador de C incluye el driver KBD.C para manejar el teclado 3x4. Las
funciones que se incorporan son las siguientes.

kbd_init()
Inicializa el sistema, debe ser la primera funcin en el programa.

kbd_getc()
Devuelve el valor de la tecla pulsada en funcin de la tabla que tiene programada.
A travs de las modificaciones de esa tabla podemos adecuar el resultado del
programa a las distintas cartulas del teclado.

El archivo KBD.C est pensado para trabajar con el PORTB o el PORTD.

Se puede trabajar con el LCD y el teclado a travs de puertos separados o


compartiendo el mismo puerto. Compartir puerto suele conllevar problemas si se
quiere trabajar con el teclado y las interrupciones RB4/RB7.

METODOLOGA
Para este ejercicio, la metodologa consiste en escribir el programa en lenguaje C,
y compilarlo en CCS para obtener el archivo .hex. Dibujar el circuito que se propone
en Proteus y en el microcontrolador cargar el archivo que genera CCS para simular
su comportamiento. Armar el circuito para comprobar su funcionamiento.

MATERIAL, EQUIPO Y RECURSOS


Una computadora por dos estudiantes, con software Proteus y CCS.
Un Microcontrolador PIC16F877

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 50


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

DESARROLLO
4) Disear un sistema bsico para el control de accesos; a travs de un teclado
de 3x4 introducir una clave de tres dgitos que cuando sea correcta abra una
puerta (con un pulso a un rel) y lo indique en una pantalla de LCD. Guardar
la clave de acceso en la memoria EEPROM.

5) Transcriba e interprete el siguiente programa en CCS. Obtenga el archivo


.hex y carguelo en su herramienta de simulacin.

Obtener el cdigo del archivo T3_E6 de la carpeta del mismo nombre contenida en
la carpeta Ejemplos. Ah mismo est el esquemtico para Proteus.

6) Haga las modificaciones necesarias para que en lugar de slo una clave de
acceso, sean tres claves diferentes.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 51


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

7) Programar su Microcontrolador y armar el circuito en Protoboard para


comprobar su funcionamiento.

CUESTIONARIO

EVALUACIN
La que se indica en su gua de aprendizaje.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Escriba sus conclusiones.

BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.

[2] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.


parte . McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 52


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #10 MANEJO DE INTERRUPCIONES EN LENGUAJE C PARA EL


PIC 16F877X
OBJETIVO
Simular en Proteus el circuito que mediante tcnicas de programacin en lenguaje
C le permita implementar rutinas de atencin a la solicitud de interrupcin por RB0.

FUNDAMENTO TERICO
Al producirse una interrupcin, el PIC salta automticamente a la direccin del
vector de interrupcin de la memoria de programa y ejecuta la porcin de programa
correspondiente a la atencin de la interrupcin, hasta encontrar la instruccin
RETFIE. Al encontrar dicha instruccin, abandona la interrupcin y retorna a la
posicin de memoria del programa principal desde la que salt al producirse la
interrupcin.

METODOLOGA
Para este ejercicio, la metodologa consiste en escribir el programa en lenguaje C,
y compilarlo en CCS para obtener el archivo .hex. Dibujar el circuito que se propone
en Proteus y en el microcontrolador cargar el archivo que genera CCS para simular
su comportamiento.

MATERIAL, EQUIPO Y RECURSOS


Una computadora por dos estudiantes, con software Proteus y CCS.
Un Microcontrolador PIC16F877

DESARROLLO
1) Dibujar y armar el circuito que se presenta a continuacin.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 53


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

2) Se configuran las terminales RB0/INT como entrada de atencin a la solicitud


de interrupcin, y RB1,RB2,RB3,RB7 como salidas con resistencia de pull-
up.

3) Transcriba e interprete el siguiente programa.

CDIGO DE LA PRACTICA:

#include <16F877.h>
#fuses XT,NOWDT,PUT,NOWRT
#use delay(clock= 4000000)
#use fast_io(B)
#BYTE PORTB = 0x06
//int1 cambio=0; //Variable de cambio
#INT_EXT //Atencin a interrupcin por cambio en RB0
void ext_isr(){ //Funcin de interrupcin
//output_toggle(pin_B7);
bit_set(portb,7);
delay_ms(100);
bit_set(portb,6);
delay_ms(100);
bit_set(portb,5);
delay_ms(100);
bit_set(portb,4);
delay_ms(100);
bit_set(portb,3);

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 54


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

delay_ms(100);
bit_set(portb,2);
delay_ms(100);
bit_set(portb,1);
delay_ms(100);
bit_clear(portb,7);
delay_ms(100);
bit_clear(portb,6);
delay_ms(100);
bit_clear(portb,5);
delay_ms(100);
bit_clear(portb,4);
delay_ms(100);
bit_clear(portb,3);
delay_ms(100);
bit_clear(portb,2);
delay_ms(100);
bit_clear(portb,1);
delay_ms(100);

void main() {
set_tris_B(0x01); // B0 como entrada, B7 como salida
//output_low(PIN_B7); //Apaga LED
port_b_pullups(TRUE); //Pull-up para RB0
bit_clear(portb,7);
bit_clear(portb,6);
bit_clear(portb,5);
bit_clear(portb,4);
bit_clear(portb,3);
bit_clear(portb,2);
bit_clear(portb,1);
enable_interrupts(int_ext); //Habilita int. RB0
ext_int_edge(L_TO_H); //por flanco de subida
enable_interrupts(GLOBAL); //Habilita int. general
while (1){ //Bucle infinito de espera

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 55


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

CUESTIONARIO

EVALUACIN
La que se indica en su gua de aprendizaje.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Escriba sus conclusiones.

BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.

[2] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.


parte . McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 56


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #11 TEMPORIZADORES


OBJETIVO
Simular en Proteus el circuito que mediante tcnicas de programacin en lenguaje
C le permita implementar rutinas de temporizacin con el registro TMR0.

FUNDAMENTO TERICO
El Timer 0 es un modulo temporizador/contador de 8 bits que cuenta con un
preescalador programable tambin de 8 bits. Puede funcionar como temporizador o
como contador. Enmodo temporizador el valor del registro TMR0 se incrementa
con cada ciclo de instruccin (o cada X ciclos dependiendo del preescalador).
En modo contador el valor del registro TMR0 se incrementa en cada
flanco (ascendente o descendente) del pin RA4/T0CKI. En ambos casos al
desbordarse (pasar de 0xFF a 0x0) el registro TMR0 la bandera de interrupcin del
timer 0 (bit T0IF del registro INTCON) se pone a 1.

El modo temporizador se selecciona poniendo a cero el bit T0CS del


registro OPTION. Poniendo a uno ese bit el modulo trabaja en modo
contador, en este modo de operacin adems se debe seleccionar si el incremento
se producir en cada filo ascendente o descendente, al poner a cero el bit T0SE del
registro OPTION se selecciona el filo ascendente.

El preescalador es compartido por el Timer 0 y por el Watchdog. Se asigna a un


mdulo o a otro mediante el bit PSA del registro OPTION. Poniendo el bit a 1 el
preescalador se asigna al Watchdog y poniendo a 0 el preescalador se asigna
al Timer 0. El valor del preescalador se selecciona con los bits PS2:PS0.

En modo temporizador el Timer 0 incrementa su cuenta en cada ciclo de


instruccin. Este modo sirve para generar temporizaciones y bases de tiempo de la
misma forma que los retardos por software, sin embargo las temporizaciones con el
Timer 0 pueden ser ms exactas y adems se cuenta con la ventaja de que el
mdulo puede trabajar mediante interrupciones as que el programa puede ejecutar
otras instrucciones mientras se realiza la temporizacin.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 57


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

METODOLOGA
Para este ejercicio, la metodologa consiste en escribir el programa en lenguaje C,
y compilarlo en CCS para obtener el archivo .hex. Dibujar el circuito que se propone
en Proteus y en el microcontrolador cargar el archivo que genera CCS para simular
su comportamiento. Armar el circuito en el Protoboard.

MATERIAL, EQUIPO Y RECURSOS


Una computadora por dos estudiantes, con software Proteus y CCS.
Un Microcontrolador PIC16F877

DESARROLLO
1) Dibujar y armar el circuito que se presenta a continuacin.

2) Para generar una seal de 1 KHz se necesita un semiperiodo de 500uS.


Segn la ecuacin de desbordamiento del k utilizando un cristal de 4 MHz y
prescalar de 2 tenemos T=TCMxprescalar(256-Carga TMR0)

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 58


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

500 uS = (4/4000000)2(256-x)

3) Transcriba e interprete el siguiente programa.

CDIGO DE LA PRACTICA:

#INCLUDE <16F877.h>
#use delay(clock=4000000)
#fuses XT,NOWDT
#use standard_io(B)

#int_TIMER0
void TIMER0_isr(void) {
output_toggle(PIN_B0);
set_timer0 (0x1a); } //Se recarga el timer0

void main() {
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); //Configuracin timer0
set_timer0 (0x1a); //Carga del timer0
enable_interrupts(INT_TIMER0); //Habilita interrupcin timer0
enable_interrupts(global); //Habilita interrupcin general
while (1); //bucle infinito
}

4) Armar el circuito en su protoboard y comprobar su funcionamiento.

CUESTIONARIO

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 59


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

EVALUACIN
La que se indica en su gua de aprendizaje.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Escriba sus conclusiones.

BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.

[2] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.


parte . McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 60


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #12 CONVERTIDOR ANALOGICO-DIGITAL

OBJETIVO
Simular en Proteus el circuito que mediante tcnicas de programacin en lenguaje
C le permita implementar rutinas de adquisicin y tratamiento de seales
analgicas.

FUNDAMENTO TERICO
1) Los microcontroladores PIC pueden incorporar un mdulo de conversin de
seal analgica a seal digital. Los mdulos AD que utiliza Microchip hacen
un muestreo y retencin con un condensador y despus utiliza el mdulo de
conversin. El mdulo de conversin A/D es de tipo de aproximaciones
sucesivas.

El convertidor de aproximaciones sucesivas se utiliza en aplicaciones donde


se necesitan altas velocidades de conversin. Se basa en realizar sucesivas
comparaciones de forma ascendente o descendente hasta encontrar un valor
un valor digital que iguale la tensin entregada por el conversor D/A y la
tensin de entrada.
Durante la fase de muestreo el interruptor se cierra y el condensador se carga
a la tensin de entrada (el tiempo que el interruptor permanece cerrado es
fundamental para la correcta carga del condensador). Una vez abierto el
interruptor, el condensador mantendr (tericamente) la tensin de entrada
mientras el modulo A/D realiza la conversin.
El mdulo de conversin se caracteriza por parmetros como los siguientes:
Numero de bits
Resolucin
Tensin de fondo de escala
Tiempo de conversin.
ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 61
INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Error de conversin.
El modulo que utiliza los PIC de gama media tiene un numero de bits de 10,
por lo que su resolucin es

REGISTRO DE CONTROL ADCON0 (direccin RAM: 1Fh) [PIC16F87x]

METODOLOGA
Para este ejercicio, la metodologa consiste en escribir el programa en lenguaje C,
y compilarlo en CCS para obtener el archivo .hex. Dibujar el circuito que se propone
en Proteus y en el microcontrolador cargar el archivo que genera CCS para simular
su comportamiento. Armar su circuito en el Protoboard.

MATERIAL, EQUIPO Y RECURSOS


Una computadora por dos estudiantes, con software Proteus y CCS.
Un Microcontrolador PIC16F877

DESARROLLO
1) Dibujar y armar el circuito que se presenta a continuacin.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 62


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Los microcontroladores PIC pueden incorporar un mdulo de conversin de seal


analgica a seal digital.

2) Transcriba e interprete el siguiente programa.

CDIGO DE LA PRACTICA:

#include <16F876.h>
#device adc=10
#FUSES XT,NOWDT
#FUSES
#use delay(clock=4000000)
#include <LCD.C>

void main() {

int16 q;
float p;
setup_adc_ports(AN0); //Canal 0 analgico
setup_adc(ADC_CLOCK_INTERNAL); //Fuente de reloj RC
lcd_init();

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 63


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

for (;;) {
set_adc_channel(0); //Habilitacin canal0
delay_us(20);
q = read_adc(); //Lectura canal0
p = 5.0 * q / 1024.0; //Conversin a tensin
printf(lcd_putc, "\fADC = %4ld", q);
printf(lcd_putc, "\nVoltage = %01.2fV", p);
delay_ms(100);
}
}

3) Armar el circuito en Protoboard y comprobar su funcionamiento.

CUESTIONARIO

EVALUACIN
La que se indica en su gua de aprendizaje.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Escriba sus conclusiones.

BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.

[2] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.


parte . McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 64


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #13 MODULO CCP-COMPARADOR, CAPTURA Y PWM

OBJETIVO
Probar el funcionamiento de los mdulos de Comparacin, captura y PWM.

FUNDAMENTO TERICO
MDULOS CCP
El mdulo CCP (Captura/Comparacin/PWM) es un perifrico que le permite medir
y controlar diferentes eventos.
El modo de captura proporciona el acceso al estado actual de un registro que
cambia su valor constantemente. En este caso, es el registro del temporizador
Timer1.
El modo de comparacin compara constantemente valores de dos registros. Uno
de ellos es el registro del temporizador Timer1. Este circuito tambin le permite al
usuario activar un evento externo despus de que haya expirado una cantidad de
tiempo predeterminada.
PWM (Pulse Width Modulation - modulacin por ancho de pulsos) puede generar
seales de frecuencia y de ciclo de trabajo variados por uno o ms pines de
salida.
El microcontrolador PIC16F887 dispone de dos mdulos CCP - CCP1 y CCP2.
Ambos son idnticos en modo normal de funcionamiento, mientras que las
caractersticas del PWM mejorado estn disponibles slo en el modo CCP1. sta
es la razn por la que en este captulo se describe detalladamente el
funcionamiento del mdulo CCP1. Con respecto al CCP2, se presentarn slo las
caractersticas que lo distinguen del CCP1.

MDULO CCP1
Una parte central de este circuito es un registro CCPR1 de 16 bits que consiste en
registros CCPR1L y CCOR1H. Se utiliza para capturar y comparar sus valores con
los nmeros almacenados en el registro del temporizador Timer1 (TMR1H y
TMR1L).

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 65


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Si est habilitado por software, puede ocurrir el reinicio del temporizador Timer1 al
igualarse los valores en modo de Comparacin. Adems, el mdulo CCP1 puede
generar seales PWM de frecuencia y de ciclo de trabajo variados.
Los bits del registro CCP1CON estn en control del mdulo CCP1.

CCP1 EN MODO DE CAPTURA


En este modo, el registro del temporizador Timer1 (que consiste en los TMR1H y
TMR1L) se copia al registro CCP1 (que consiste en los CCPR1H y CCPR1L) en
las siguientes situaciones:
Cada flanco ascendente (1 -> 0) en el pin RC2/CCP;
Cada flanco descendente (0 -> 1) en el pin RC2/CCP1;
Cada cuarto flanco ascendente (0 -> 1) en el pin RC2/CCP1; y
Cada decimosexto flanco descendente (0 -> 1) en el pin RC2/CCP1.
Una combinacin de cuatro bits (CCP1M3 - CCP1M0) del registro de control
determina cul de estos eventos causar transmisin de dato de 16 bits. Adems,
se deben cumplir los siguientes requisitos:
El pin RC2/CCP1 debe estar configurado como entrada; y
El Timer1 debe funcionar como temporizador o contador sncrono.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 66


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

El bit de bandera CCP1IF se pone a uno despus de acabar la captura. Si se pone


a 1 el bit CCP1IE del registro PIE1, se producir una interrupcin.
En caso de que el mdulo CCP1 est en modo de captura, puede producirse una
interrupcin no deseada. Para evitarlo, antes de que ocurra un cambio en el
registro de control se deben poner a 0 tanto el bit que habilita la interrupcin
CCP1IE, como el bit de bandera CCP1IF.

CCP1 EN MODO DE COMPARACIN


En este modo, el valor almacenado en el registro CCP1 se compara
constantemente al valor almacenado en el registro del temporizador Timer1. Al
igualarse los valores, el estado lgico en el pin de salida puede ser cambiado, lo
que depende del estado de bits en el registro de control (CCP1M3 - CCP1M0). El
bit de bandera CCP1IF se pone a uno simultneamente.

Para poner el mdulo CCP1 en este modo de funcionamiento, se deben cumplir


dos condiciones:
El pin RC2/CCP1 debe estar configurado como salida; y
El temporizador Timer1 debe estar sincronizado con el reloj interno.

CCP1 EN MODO PWM


Las seales de frecuencia y de ciclo de trabajo variados tienen una amplia gama
de aplicaciones en automatizacin. Un ejemplo tpico es un circuito de control de
potencia. Refirase a la siguiente figura. Si un cero lgico (0) indica un interruptor
abierto y un uno lgico (1) indica un interruptor cerrado, la potencia elctrica que
se transmite a los consumidores ser directamente proporcional a la duracin del
pulso. Esta relacin se le denomina Ciclo de Trabajo.
ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 67
INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

El otro ejemplo, comn en la prctica, es el uso de seales PWM en un circuito


para generar seales de forma de onda arbitraria como una onda sinusoidal. Vea
la siguiente figura:

Los dispositivos que funcionan segn este principio se utilizan con frecuencia en la
prctica como variadores de frecuencia ajustable que controlan motores elctricos
(velocidad, aceleracin, desaceleracin etc.)

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 68


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

La Figura anterior muestra el diagrama de bloques del mdulo CCP1 puesto en el


modo PWM. Para generar un pulso de forma arbitraria en el pin de salida, es
necesario ajustar el perodo de pulsos (frecuencia) y la duracin de pulsos.

PERODO DE PWM

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 69


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

El perodo de pulso de salida (T) se determina por el registro PR2 del temporizador
Timer2. El perodo de PWM se puede calcular por la siguiente ecuacin:

Perodo PWM = (PR2 +1) * 4Tosc * Valor de pre-escala del Timer2

Si el perodo de PWM (T) es conocido, es fcil determinar la frecuencia de seal F,


porque estos dos valores estn relacionados por la ecuacin F=1/T.

METODOLOGA
Para este ejercicio, la metodologa consiste en escribir el programa en lenguaje C,
y compilarlo en CCS para obtener el archivo .hex. Dibujar el circuito que se propone
en Proteus y en el microcontrolador cargar el archivo que genera CCS para simular
su comportamiento. Armar el circuito en el Protoboard.

MATERIAL, EQUIPO Y RECURSOS


Una computadora por dos estudiantes, con software Proteus y CCS.
Un Microcontrolador PIC16F877

DESARROLLO
1) Probar los ejercicios T6_E1, T6_E2, T6_E3 y T6_E4 de las carpetas del
mismo nombre de Ejemplos.
2) Interprete el cdigo y el funcionamiento de cada uno.
3) Armar los circuitos en su protoboard y comprobar su funcionamiento.

CUESTIONARIO

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 70


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

EVALUACIN
La que se indica en su gua de aprendizaje.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Escriba sus conclusiones.

BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.

[2] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.


parte . McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 71


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

LABORATORIO DE MICROCONTROLADORES

PRCTICA #14 COMUNICACIN SERIAL RS232

OBJETIVO
Simular en Proteus y luego en su protoboard el circuito que mediante tcnicas de
programacin en lenguaje C le permita implementar rutinas de comunicacin serial
entre dos microcontroladores.

FUNDAMENTO TERICO
El USART es uno de los primeros sistemas de comunicacin serie. Las versiones
nuevas de este sistema estn actualizadas y se les denomina un poco diferente
EUSART.

EUSART
El mdulo Transmisor/Receptor Universal Sncrono/Asncrono mejorado (Enhanced
Universal Synchronous Asynchronous Receiver Transmitter - EUSART) es un
perifrico de comunicacin serie de entrada/salida. Asimismo es conocido como
Interfaz de comunicacin serie (Serial Communications Interface - SCI).
Contiene todos los generadores de seales de reloj, registros de desplazamiento y
bfers de datos necesarios para realizar transmisin de datos serie de
entrada/salida, independientemente de la ejecucin de programa del dispositivo.
Como indica su nombre, aparte de utilizar el reloj para la sincronizacin, este mdulo
puede establecer la conexin asncrona, lo que lo hace nico para algunas
aplicaciones. Por ejemplo, en caso de que sea difcil o imposible proporcionar
canales especiales para transmisin y recepcin de datos y seales de reloj (por
ejemplo, mando a distancia de radio o infrarrojas), el mdulo EUSART es
definitivamente la mejor opcin posible.

El EUSART integrado en el PIC16F887 posee las siguientes caractersticas:


Transmisin y recepcin asncrona en modo Full-duplex;
Caracteres de anchura de 8 9 bits programables;
Deteccin de direccin en modo de 9 bits;
Deteccin de errores por saturacin del bfer de entrada; y
ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 72
INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Comunicacin Half Duplex en modo sncrono.

EUSART EN MODO ASNCRONO


El EUSART transmite y recibe los datos utilizando la codificacin de no retorno a
cero - NRZ (non-return-to-zero). Como se muestra en la siguiente figura, no se utiliza
una seal de reloj y los datos se transmiten de forma muy simple:

Cada dato se transmite de la siguiente forma:


En estado inactivo la lnea de datos permanece en estado alto (1);
Cada transmisin de datos comienza con un bit de arranque (START), el
cual, siempre es cero (0);
Cada dato tiene un ancho de 8 o 9 bits (primero se transmite el bit menos
significativo - LSB); y
Cada transmisin de datos termina con un bit de parada (STOP), el cual,
siempre es uno (1) La siguiente figura muestra cmo conectar de manera
habitual un microcontrolador PIC que utiliza el mdulo EUSART. El circuito
RS-232 se utiliza como un convertidor de nivel de voltaje.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 73


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Para habilitar la transmisin de datos por medio del mdulo EUSART, es necesario
configurarlo para que funcione como un transmisor. En otras palabras, es necesario
definir el estado de los siguientes bits:

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 74


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

TXEN = 1 - El transmisor EUSART se habilita al poner a uno el bit TXEN del


registro TXSTA.
SYNC = 0 - El EUSART se configura a funcionar en modo asncrono al
poner a cero el bit SYNC del registro TXSTA.
SPEN = 1 - Al poner a uno el bit SPEN del registro RCSTA, el EUSART
est habilitado y el pin TX/CK se configura automticamente como salida.
Si el bit se utiliza simultneamente para alguna funcin analgica, se debe
deshabilitar al poner a cero el bit correspondiente del registro ANSEL.

La parte central del transmisor EUSART ocupa el registro de desplazamiento TSR


que no est directamente disponible al usuario. Para iniciar la transmisin de datos,
el mdulo debe estar habilitado al poner a uno el bit TXEN del registro TXSTA. Los
datos a enviar se deben escribir en el registro TXREG, lo que resultar en la
siguiente secuencia de eventos:
Byte ser transmitido inmediatamente al registro de desplazamiento TSR;
El registro TXREG permanece vaco, lo que indica la bandera de bit TXIF del
registro PIR1. Si se pone a uno el bit TXIE del registro PIE1, se generar una
interrupcin. De todos modos, la bandera se pone a uno sin reparar en si una
interrupcin est habilitada o no y no se puede poner a cero por software,
sino al escribir un dato nuevo en el registro TXREG.
Dispositivos electrnicos de control "empujan" el dato hacia el pin TX en
sincronizacin con seal de reloj interna: bit de arranque (START)
(1).....datos....bit de parada (STOP) (1).
Cuando el ltimo bit abandona el registro TSR, el bit TRMT en el registro
TXSTA se pone a cero automticamente.
Si mientras tanto se escribe un dato nuevo en el registro TXREG, todo el
procedimiento se repite inmediatamente despus de la transmisin del bit de
parada del dato anterior.
Para transmitir un dato de 9 bits es necesario poner a uno el bit TX9 del
registro TXSTA. El bit TX9D del registro TXSRTA es el noveno bit y el ms
significativo. Al transmitir un dato de 9 bits, el bit de datos TX9D deber estar
escrito antes de que de se escriban los 8 bits menos significativos en el
registro TXREG. Todos los nueve bits de datos se transmiten al registro de
desplazamiento TFR inmediatamente despus de que se acabe la escritura
en el registro TXREG.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 75


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Similar al poner en marcha el transmisor del EUSART, para habilitar el receptor es


necesario configurar los siguientes bits:
CREN = 1 - El receptor EUSART se habilita al poner a uno el bit CREN del
registro RCSTA;
SYNC = 0 - El EUSART se configura a funcionar en modo asncrono al poner
a cero el bit SYNC del registro TXSTA; y
SPEN = 1 - Al poner a uno el bit SPEN del registro RCSTA, el EUSART est
habilitado y el pin RX/DT se configura automticamente como salida. Si el bit
se utiliza simultneamente para alguna funcin analgica, se debe desha
bilitar al poner a cero el bit correspondiente del registro ANSEL.
Despus de que se haya terminado el primer paso necesario y se haya detectado
el bit de arranque (START), el dato se transmite al registro de desplazamiento RSR
por el pin RX. Al haber recibido el bit de parada (STOP), ocurre lo siguiente:
El dato se transmite automticamente al registro RCREG (si est vaco);
El bit de bandera RCIF se pone a uno y ocurre una interrupcin si est habilita
da por el bit RCIE en el registro PIE1. Similar al transmisor, el bit de bandera
se pone a cero slo por software, o sea, al leer el registro RCREG. Tenga en
cuenta que esto es un doble registro de tipo FIFO (primero en entrar, primero
en salir - first-in, first-out), lo que permite almacenamiento de dos caracteres
simultneamente);
Si el registro RCREG est ocupado (contiene dos bytes) y el registro de
desplazamiento detecta el nuevo bit de parada (STOP), el bit de sobrescritura
OERR se pondr a uno. En tal caso se pierde un dato nuevo que viene, y el
bit OERR debe ponerse a cero por software al poner a cero y luego al poner

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 76


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

a uno el bit CREN;


Nota: No es posible recibir un dato nuevo sino hasta que el bit OERR
est a uno.
Si el bit de parada (STOP) est a cero (0), el bit FERR del registro RCSTA
estar a uno, lo que indica un error en recepcin; y
Para habilitar la recepcin de un dato de 9 bits, es necesario poner a uno el
bit RX9 del registro RCSTA.

METODOLOGA
Para este ejercicio, la metodologa consiste en escribir el programa en lenguaje C,
y compilarlo en CCS para obtener el archivo .hex. Dibujar el circuito que se propone
en Proteus y en el microcontrolador cargar el archivo que genera CCS para simular
su comportamiento. Armar el circuito en el Protoboard.

MATERIAL, EQUIPO Y RECURSOS


Una computadora por dos estudiantes, con software Proteus y CCS.
Un Microcontrolador PIC16F877

DESARROLLO
1) Dibujar y armar el circuito que se presenta a continuacin.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 77


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

2) El mdulo transmisor (USART) es otro de los dos puertos serie de los que dispone
esta familia de microcontroladores. Los mdulos de I/O. (USART tambin se
conocen como Serial Communications o Interface o SCI). El USART puede
configurarse como asncrono full dplex que puede comunique con los dispositivos
perifricos como el terminales de CRT y los ordenadores personales, o puede
configurarse como un sistema sncrono half duplex quepuede comunicar con otros
microcontroladores, con dispositivos perifricos como A/D o D/A circuitos
integrados, EEPROMs serie etc.

El USART puede configurarse en los modos siguientes:


ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 78
INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

Asncrono( Full duplex )

Sncrono- Master (half duplex)

Sncrono- Slave (half duplex)

Poniendo a "1" bit SPEN (RCSTA <7>), y los bits TRISC <7:6>, se configura

RC6/TX/CK y RC7 /RX/DT como USART.

En modo sncrono se utilizan formatos estndar: un bit de Start y ocho bits o nueve bits de
Stop, siendo el ms comn el de ocho bits de datos.

3) Transcriba e interprete el siguiente programa.

CDIGO DE LA PRACTICA:

CODIGO:
PIC 1
#include <16F876.h>
#FUSES XT,NOWDT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7)
#include <LCD.C>

void main() {
int valor;
lcd_init();

while(1){
for (valor=0;valor<=10;valor++) {
PUTC(valor);
printf(lcd_putc,"\fenviando=%1D",VALOR);
delay_ms(500);
}
ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 79
INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

}
}

PIC2

#include <16F876.h>
#FUSES XT,NOWDT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>
#BYTE TRISA=0X85
#BYTE PORTA=0X05

int valor;
#int_RDA
RDA_isr()
{
valor=GETC();
}

void main() {

bit_clear(TRISA,0);
lcd_init();
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);

for (;;) {
lcd_gotoxy(1,1);
printf(lcd_putc,"recibiendo=%1D",valor);
}
}

CUESTIONARIO

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 80


INSTITUTO TECNOLGICO DE DEPTO. DE INGENIERA ELCTRICA Y
OAXACA ELECTRNICA

EVALUACIN
La que se indica en su gua de aprendizaje.

RESULTADOS

Presente sus resultados.

CONCLUSIONES
Escriba sus conclusiones.

BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.

[2] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.


parte . McGrawHill.

ELABORADO POR: M.C FRANCO G. CABALLERO JULIN 81

También podría gustarte