Documentos de Académico
Documentos de Profesional
Documentos de Cultura
I. INTRODUCCIÓN
Las siguientes actividades tienen como finalidad acercar al alumno al mundo de los
microcontroladores PIC16F87X, pertenecientes a la gama media de la familia PIC de
Microchip, mostrando las conexiones y algunos de los registros básicos de configuración
de los PIC16F87X. Estos registros permiten configurar y tomar decisiones a un
microcontrolador para efectuar tareas tan complejas como el control de un proceso
industrial, tal cómo un PLC, pero a un bajo costo de implementación.
Registro INTCON
Equipos requeridos
3.- Repetir los pasos 1 y 2, con un cable de 5.- Conectar al pin 3 del 78L05 (el más
preferencia de color rojo, para realizar la cercano a la esquina) un extremo del
línea de alimentación de nuestro circuito, tal condensador de 0.33 uf y el otro extremo
como muestra la figura 5. de éste a la línea de tierra que
1.- ¿Cómo podemos saber si conectamos correctamente el diodo, qué deberíamos medir y en
qué puntos? (Ayuda: Ocupe el tester en continuidad y revise la polaridad del diodo) ¿Ha
realizado esta comprobación en el circuito realizado?
2.- ¿Cómo podemos comprobar las conexiones de las líneas de alimentación y tierra, usando
un multitester? (Ayuda: ¿Dónde se debe colocar el selector del tester?) ¿En qué puntos
debo realizar las mediciones? (Ayuda: Compruebe las conexiones por líneas de
alimentación y tierra) ¿Qué resultados ha obtenido al realizar las mediciones en el
protoboard?
3.- Analizando el circuito de Reset ¿Qué función cumplirán las resistencias? (Ayuda: Analice
el caso de presionar el botón de Reset y lo que sucedería si no existiesen los resistores)
4.- ¿Podrá funcionar el PIC sin el circuito de Oscilación? ¿Por qué? (Ayuda: Analice lo visto en
clases y en la bibliografía anexa, referente al tiempo de ejecución de una instrucción
respecto a la frecuencia de operación)
5.- ¿Cuáles son los componentes esenciales para que el PIC16F87X pueda funcionar?
(Ayuda: revise los diagramas esquemáticos vistos en la actividad)
Equipos requeridos
Descripción y procedimiento
1.- Instalar el software MPLAB, licencia freeware, el cual se puede obtener directamente
desde la página de Microchip http://www.microchip.com
2.- Ejecutar el programa MPLAB.exe
3.- En el menú File, seleccionar New (ver figura 15), para abrir una nueva hoja de trabajo
5.- Ahora, debemos ir a las propiedades de la hoja creada, en Edit\Properties, tal como
muestra la figura 17
6.- Habilitar número de líneas en el Editor de Opciones y presionar Aceptar, como muestra la
figura 18
7.- Ahora, en la esquina superior izquierda del documento sin título debe aparecer un número
1, indicando que es la primera línea. Maximizar el documento, como muestra la figura 19.
9.- En el área de trabajo escribir el siguiente programa y cada cierto tiempo guardar el trabajo
realizado. Importante: Respete las tabulaciones y las mayúsculas, ya que de lo contrario
podrá obtener errores y el programa no compilará.
list p=16f877
include <p16f877.inc>
__config (_WDT_OFF & _XT_OSC & _BODEN_OFF)
errorlevel -302 ;ignorar errores al almacenar en banco 1
;*******************************************************
;Definición de Variables
;*******************************************************
cblock 0x20
PDel0
PDel1
endc
;*******************************************************
;Vector de Interrupciones
;*******************************************************
org 0x4 ;Vector de Interrupciones
Interrupción btfss INTCON,1 ;es interrupción INT?
retfie ;retorna de interrupción y GIE=1
btfss PORTD,0 ;probar estado actual del LED
goto Prender ;va a encender el LED
Apagar bcf PORTD,0 ;apaga el LED
goto Espera
Prender bsf PORTD,0 ;enciende el LED
Espera btfss PORTB,0 ;espera a que se suelte el pulsador
goto Espera
bcf INTCON,1 ;borra bandera INT
retfie ;retorna de interrupción y GIE=1
;*******************************************************
;Configuración de registros
;*******************************************************
;*******************************************************
;Programa Principal
;*******************************************************
ppal bsf INTCON,7 ;Habilitar interrupciones globales
compara btfsc PORTB,1 ;comprueba si RB1 se ha presionado
goto compara ;sino, vuelve a comparar
btfsc PORTB,2 ;Comprueba si RB2 se ha presionado, sólo si RB1 sigue presionado
goto compara
bsf PORTD,1 ;Enciende LED del RD1
call DEMORA ;Lo mantiene encendido por 1/2 segundo
bcf PORTD,1 ;Apaga el LED
goto ppal ;Repite el programa hasta que se produzca interrupción
;-------------------------------------------------------------
; Rutina de temporización para 500 ms (1/2 segundo)
;-------------------------------------------------------------
DEMORA movlw .239 ; 1 set numero de repetición (B)
movwf PDel0 ;1|
PLoop1 movlw .232 ; 1 set numero de repetición (A)
movwf PDel1 ;1|
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 goto PDelL3 ; 2 ciclos delay
PDelL3 clrwdt ; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL4 goto PDelL5 ; 2 ciclos delay
PDelL5 goto PDelL6 ; 2 ciclos delay
PDelL6 goto PDelL7 ; 2 ciclos delay
PDelL7 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
;-------------------------------------------------------------
End ;Fin del programa
12.-Al ingresar al Project Wizard, presionar el botón Siguente > (Ver figura 22)
14.-Cuando se ejecuta MPLAB por primera vez, generalmente no está configurado la librería
MPLIB, que es la que nos permite compilar nuestra aplicación, ver figura 24. Si este no es
su caso saltar al paso 16.
15.-Buscar el directorio MPASM Suite a través del botón Browser… (ver figura 25)
16.-Cuando la librería está configurada correctamente (ver figura 26), presionar el botón
Siguiente>
20.-Al finalizar el proyecto perderemos nuestra área de trabajo (el archivo Aplicacion1.asm),
pero quedará incluido en el proyecto, como muestra la figura 30. Para ver el archivo se
debe hacer doble clic sobre el nombre del archivo ASM.
22.-Mientras compila aparece una pantalla de fondo, llamada de Salida (Output), donde
obtendremos información del resultado de la compilación y sobre ésta aparecerá una
pantalla con una barra de progreso de la compilación.
24.-Cuando sucede un error en la compilación y la barra de estado llega al 100%, esta cambia
de color verde a color rojo, la pantalla de salida muestra cuál es el error y en que línea del
código se encuentra el error (ver figura 34)
33.-Habilitar el programador.
34.-Sacar el microcontrolador del protoboard ayudado de algo con punta, como las puntas de
prueba de un multitester, haciendo palanca de ambos lados cuidando de no dañar el
dispositivo y de no tocar los pines del microcontrolador.
35.-Montar el microcontrolador en el PICSTART Plus, cuidando de colocar el pin 1 del
dispositivo en la esquina superior izquierda del sócalo de conexión, tal como explicará el
profesor.
36.-Levantar la palanca del sócalo para presionar el PIC.
37.-En el software seleccionar Programmer\Erase Flash Device, para borrar la memoria del
dispositivo y luego seleccionar Programmer\Program para comenzar la programación, se
enciende un led amarillo en el PICSTART Plus, que indica que está transfiriendo el
programa a la memoria del Microcontrolador. Cuando se apaga la luz ha terminado la
grabación.
38.-Verificar la programación seleccionando Programmer\Verify
39.-Bajar la palanca, retirar el microcontrolador del PICSTART Plus y volver a colocarlo en el
circuito cuidando de que quede en la posición en la que estaba.
40.-ATENCIÓN: Llamar al profesor para que corrobore las conexiones antes de alimentar el
circuito.
41.-Ajustar un multitester como voltímetro y ajustar una fuente del laboratorio entre 9 y 12 volts
(mayor que siete y menor que 30 Volts) u ocupar su conversor AC/DC y conectar el Jack al
plug de la fuente, los terminales del Jack conectarlos a través de los caimanes, siguiendo
las instrucciones dadas por el profesor.
42.-Alimentar el circuito a través de los caimanes.
43.-Presionar el pulsador conectado a RB0 y corroborar el cambio de estado del led conectado
a RD0, primero se enciende al presionarlo y cuando ya está encendido se apaga.
44.-Presionar al mismo tiempo los pulsadores conectados a los pines RB1 y RB2, comprobar
que se enciende el led conectado a RD1 durante ½ segundo. Notar además que cuando
sólo se presiona uno de los dos pulsadores el led se mantiene apagado.
45.-Apagar el circuito.
53 ;*******************************************************
54 ;Programa Principal
55 ;*******************************************************
56 ppal ;bsf INTCON,7 ;Habilitar interrupciones globales
57 clrf INTCON ;Desactiva Interrupciones externas
58 compara btfsc PORTB,1 ;comprueba si RB1 se ha presionado
1.- ¿Cómo podemos saber si no hemos cometido un error de “tipeo” en el programa? (Ayuda:
Compilar el código y ver la pantalla de salida)
2.- Al ensayar el circuito ¿Obtuve los resultados esperados? Si le respuesta es no, ¿Por qué?
3.- ¿Qué función cumplió el registro INTCON en el funcionamiento del circuito? (Ayuda:
Comprare la operación antes y después del cambio efectuado en el código.)
4.- Si un circuito basado en microcontroladores no funciona ¿El error sólo se puede presentar
en la construcción del circuito?
5.- Si se enfrentara a la situación de la pregunta 6, ¿Qué haría Ud. para solucionar el
problema?
Como orientación revise el siguiente link, que le describe paso a paso cómo ejecutar cada
indicación de los puntos anteriores. El link está cargado en el Aula virtual unidad 4.
https://www.youtube.com/watch?v=c8sonb4jgf8
En MPLAB-IDE copie tal cual se presenta el programa, respetando comas, mayúsculas, etc.
end
En MPLAB-IDE copie tal cual se presenta el programa, respetando comas, mayúsculas, etc.
;Programa que enciende RB0 si el bit 0 del PORTA, es decir, RA0=1 y se apaga solo si
RA1=1
;Etiqueta Op-code Operando Comentario
org 0
bsf 0x03,5 ;Selecta Banco 1
bcf 0x03,6
bcf 0x06,0 ;Deja RB0 como salida
bsf 0x05,0 ;Deja el Bit 0 del PORTA como entrada
bsf 0x05,1 ;Deja el Bit 1 del PORTA como entrada
bcf 0x03,5 ;Selecta Banco 0
clrf 0x06 ;Apaga el PORTB
SALTO btfsc 0x05,0 ;Pregunta si el bit 0 del PORTA (Encendido) es
cero
NO_CERO goto ENCIEN ;Si no es cero (Vale 1) va a ENCIEN
ES_CERO btfsc 0x05,1 ;Si es cero, pregunta por bit 1 del PORTA
(Apagado)
ES_UNO goto APAGA ;Si es uno salta a APAGA
goto SALTO ;Si es cero Vuelve a preguntar por el
encendido
ENCIEN bsf 0x06,0 ;Enciende el bit 0 del PORTB
goto SALTO
APAGA bcf 0x06,0 ;Apaga el bit 0 del PORTB
goto SALTO
end
En MPLAB-IDE copie tal cual se presenta el programa, respetando comas, mayúsculas, etc.
;Programa del LCD, donde RA0 = DATA/Instruccion, RA1 = E y PORTB están los datos
INGRESA bsf PORTA,E ;Pone Enable =1, para habilitar el ingreso (E=1)
movwf PORTB ;Envia el valor de la INTRUUCION/DATO al PORTB
call DEMORA ;Espera un tiempo mayor a
En MPLAB-IDE copie tal cual se presenta el programa, respetando comas, mayúsculas, etc.
; TECLADO MATRICIAL 7 8 9 A
; 4 5 6 B
; 1 2 3 C
; F 0 e d
include p16f84a.inc
TECLA equ 0x0c
PDel0 equ 0x0d
PDel1 equ 0x0e
Cheq_Col3
movlw 0x09 ;Borra Tecla y
movwf TECLA ;prepara Tecla
btfss PORTB,6 ;Chequea columna3 = 0
GOTO antirebotes ;Sale si se pulso
FILA_1
movlw b'11111101' ;Saca 0 2n 2da fila
movwf PORTB ;de la Puerta B
nop ; estabiliza señal.
Che_Col1 movlw 0x04 ;Borra Tecla y
movwf TECLA ;prepara primer código
btfss PORTB,4 ;Cheq columna1 = 0
GOTO antirebotes
Che_Col2 movlw 0x05 ;Borra Tecla y
movwf TECLA ;prepara 2do código.
btfss PORTB,5 ;Cheq columna2 = 0
GOTO antirebotes
che_col3 movlw 0x06 ;Borra Tecla y
movwf TECLA ;prepara Tecla
btfss PORTB,6 ;Cheq columna3 = 0
GOTO antirebotes
che_col4 movlw 0x0B ;Borra Tecla y
movwf TECLA ;prepara Tecla
btfss PORTB,7 ;Cheq columna4 = 0
GOTO antirebotes
End