Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
Elaborado por:
Colaboradores:
Presidente de Academia:
Jefe de Laboratorio:
Jefe de Departamento:
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
LABORATORIO DE MICROCONTROLADORES
El ciclo de desarrollo
Project Manager
METODOLOGA
La programacin se hace en Ensamblador, y el ejemplo se prueba en el modo de
simulacin en Proteus.
DESARROLLO
1)Instalacin de MPLAB.
As se ver su IDE
;*****************************************************************
;
; 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
;*************************************************************
;***********************************************************
; RUTIMA DE RETARDO DE 500mS.
;***********************************************************
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.
EVALUACIN
La que se indica en su instrumentacin didctica.
RESULTADOS
CONCLUSIONES
Presente sus conclusiones.
BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.
LABORATORIO DE MICROCONTROLADORES
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.
Vdd 14 P Alimentacin
Estructura
METODOLOGA
La programacin se hace en Ensamblador, y el ejemplo se prueba en el modo de
simulacin en Proteus.
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
CONCLUSIONES
Presente sus conclusiones.
BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.
[4] Angulo, J. y Angulo, I. (2003) PIC Diseo prctico de aplicaciones primera parte.
Tercera edicin. McGrawHill.
LABORATORIO DE MICROCONTROLADORES
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.
METODOLOGA
La programacin se hace en Ensamblador, y el ejemplo se prueba en el modo de
simulacin en Proteus.
DESARROLLO
Probar el programa de u circuito secuenciador que se le proporciona.
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
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.
EVALUACIN
La que se indica en su instrumentacin didctica.
RESULTADOS
CONCLUSIONES
Presente sus conclusiones.
BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.
LABORATORIO DE MICROCONTROLADORES
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.
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.
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
CUESTIONARIO
4) Hacer un diagrama de flujo del programa.
5) Describir el funcionamiento del temporizador TMR0.
6) Describir el funcionamiento del programa.
EVALUACIN
La que se indica en su instrumentacin didctica.
RESULTADOS
CONCLUSIONES
Presente sus conclusiones.
BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.
[3] Angulo, J. y Angulo, I. (2003) PIC Diseo prctico de aplicaciones primera parte.
Tercera edicin. McGrawHill.
LABORATORIO DE MICROCONTROLADORES
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.
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.
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.
RESULTADOS
CONCLUSIONES
Presente sus conclusiones.
BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.
[3] Angulo, J. y Angulo, I. (2003) PIC Diseo prctico de aplicaciones primera parte.
Tercera edicin. McGrawHill.
LABORATORIO DE MICROCONTROLADORES
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.
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.
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
RESULTADOS
CONCLUSIONES
Presente sus conclusiones.
BIBLIOGRAFA
[1] Angulo,J. (2006). Microcontroladores PIC, Diseo prctico de aplicaciones 2.
parte . McGrawHill.
[3] Angulo, J. y Angulo, I. (2003) PIC Diseo prctico de aplicaciones primera parte.
Tercera edicin. McGrawHill.
LABORATORIO DE MICROCONTROLADORES
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:
RB4 = 0;
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,)
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.
DESARROLLO
1) Dibuje en Proteus el circuito que se presenta a continuacin.
CDIGO DE LA PRACTICA:
#include <16F877.h>
#fuses XT,NOWDT
#use delay( clock = 4000000 ) // Reloj de 4 MHz
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.
EVALUACIN
La que se indica en su gua de aprendizaje.
RESULTADOS
CONCLUSIONES
Escriba sus conclusiones.
BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.
LABORATORIO DE MICROCONTROLADORES
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
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.
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).
LENGUAJE C
ESTRUCTURA DE PROGRAMA
Calcular temperatura; y
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.
DESARROLLO
1) Pruebe los ejemplos T4_E2 y T4_E6 de las carpetas del mismo nombre
contenidas en Ejemplos.
CUESTIONARIO
EVALUACIN
La que se indica en su gua de aprendizaje.
RESULTADOS
CONCLUSIONES
Escriba sus conclusiones.
BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.
LABORATORIO DE MICROCONTROLADORES
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.
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.
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.
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.
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.
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.
CUESTIONARIO
EVALUACIN
La que se indica en su gua de aprendizaje.
RESULTADOS
CONCLUSIONES
Escriba sus conclusiones.
BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.
LABORATORIO DE MICROCONTROLADORES
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.
DESARROLLO
1) Dibujar y armar el circuito que se presenta a continuacin.
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);
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
CUESTIONARIO
EVALUACIN
La que se indica en su gua de aprendizaje.
RESULTADOS
CONCLUSIONES
Escriba sus conclusiones.
BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.
LABORATORIO DE MICROCONTROLADORES
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.
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.
DESARROLLO
1) Dibujar y armar el circuito que se presenta a continuacin.
500 uS = (4/4000000)2(256-x)
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
}
CUESTIONARIO
EVALUACIN
La que se indica en su gua de aprendizaje.
RESULTADOS
CONCLUSIONES
Escriba sus conclusiones.
BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.
LABORATORIO DE MICROCONTROLADORES
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.
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
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.
DESARROLLO
1) Dibujar y armar el circuito que se presenta a continuacin.
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();
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);
}
}
CUESTIONARIO
EVALUACIN
La que se indica en su gua de aprendizaje.
RESULTADOS
CONCLUSIONES
Escriba sus conclusiones.
BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.
LABORATORIO DE MICROCONTROLADORES
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).
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.
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.)
PERODO DE PWM
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:
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.
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
EVALUACIN
La que se indica en su gua de aprendizaje.
RESULTADOS
CONCLUSIONES
Escriba sus conclusiones.
BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.
LABORATORIO DE MICROCONTROLADORES
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.
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:
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.
DESARROLLO
1) Dibujar y armar el circuito que se presenta a continuacin.
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.
Poniendo a "1" bit SPEN (RCSTA <7>), y los bits TRISC <7:6>, se configura
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.
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
EVALUACIN
La que se indica en su gua de aprendizaje.
RESULTADOS
CONCLUSIONES
Escriba sus conclusiones.
BIBLIOGRAFA
[1] Garca, E. (2008) Compilador C CCS y simulador Proteus para
Microcontroladores PIC. Alfaomega-Marcombo.