0% encontró este documento útil (0 votos)
95 vistas19 páginas

Examen 1

Este documento describe un examen sobre el uso del microcontrolador PIC16F84A. Explica cómo configurar el PIC16F84A en MPLAB y Proteus, incluyendo la conexión de pines, el desarrollo de código para hacer parpadear un LED, y la simulación del código. También incluye información sobre las características y aplicaciones del PIC16F84A.

Cargado por

Héctor Sandoval
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
95 vistas19 páginas

Examen 1

Este documento describe un examen sobre el uso del microcontrolador PIC16F84A. Explica cómo configurar el PIC16F84A en MPLAB y Proteus, incluyendo la conexión de pines, el desarrollo de código para hacer parpadear un LED, y la simulación del código. También incluye información sobre las características y aplicaciones del PIC16F84A.

Cargado por

Héctor Sandoval
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 19

CAMPUS PUEBLA

Nombre del alumno:

Eduardo Abisay Vivas García

Héctor Manuel Sandoval Caro

Gerardo Palacios Orea.

Actividad: Examen 1 Set de instrucciones en MPLAB y Proteus

Materia: Controladores Industriales

Nombre del docente: Pacheco Machorro Juan Alberto

Fecha de entrega: 25 de Marzo del 2021


Ficha de Identificación.
Introducción

PIC16F84A
Es un microcontrolador gama media de 8 bits que físicamente consta de 18 pines,
su memoria de programa es de tipo flash, lo que nos permitirá grabarlo hasta unas
10000 veces.

Sus características principales son:

 Set de solo 35 instrucciones


 Memoria de programa de 1 KB (equivale a 1024 instrucciones)
 Máxima velocidad de operación: 20 MHz
 68 Bytes de RAM
 64 Bytes de EEPROM
 4 fuentes de interrrupción
 2 puertos de salida
 13 Líneas de I/O configurables individualmente
 25 mA de corriente por pin
Descripción de los pines

El PIC 16F84A contiene 13 líneas I/O (entrada o salida), 5 pertenecen al puerto A y


8 pertenecen al puerto B.

 VDD: Alimentación positiva (5 voltios)


 VSS: Tierra (0 voltios)
 MCLR: pin de resetear
 OSC1, OSC2: Conexión de oscilador
 RA0, RA1, RA2, RA3, RA4: líneas I/O del puerto A
 RB0, RB1, RB2, RB3, RB4, RB5, RB6, RB7: líneas I/O del puerto B

Conexión de los pines

Es importante tener muy claro la forma en la que se deben conectar los pines del
microcontrolador aún cuando estos no se usen.

La alimentación: El voltaje de alimentación debe estar comprendido entre 2.0 y 5.5


voltios (preferiblemente usar una alimentación regulada de 5 voltios). Para mejorar
su desempeño se puede adicionar un capacitor cerámico de 100 nF en paralelo con
la fuente de voltaje y ubicado lo más cerca posible a los pines VDD y VSS.

El reset (MCLR): A este pin se le conectarán dos componentes: un resistor de 10


kΩ a VDD (5 voltios) y un pulsador a GND (tierra).
El oscilador: Por ahora, conectaremos un cristal de cuarzo de 4 MHz entre los
pines OSC1 y OSC2, también conectaremos un capacitor cerámico de 22 pF entre
OSC1 y tierra y otro capacitor igual entre OSC2 y tierra. Más adelante se detallarán
las diversas formas de configurar estos pines.

Las líneas de salida: Si lo que queremos es solo testear el comportamiento del


microcontrolador, basta con poner en cada salida un LED en serie con una
resistencia.

Las líneas de entrada: Si la entrada se da a travès de un interruptor será obligatorio


conectar un resistor de 10 kΩ a VDD sin importar si la línea se usará o no, una
solución sencilla para evitar la conexíón de tantos resistores es configurar como
salidas las líneas que no vayamos a usar en nuestro proyecto.
Las resistencias de pull-up

La electrónica digital maneja dos estados lógicos para su funcionamiento: el «1» y


el «0». Supongamos que un circuito digital tiene una entrada y conectamos un
interruptor entre dicha entrada y VSS (tierra), analizando veremos que el cero ya
está definido por el interruptor cuando este está cerrado, pero si el interruptor
estuviera abierto no hay un estado definido porque la entrada no tiene contacto con
ningún cero ni con ningún uno lógico (sería un pin sin conexión), esto se llama
estado flotante y puede tener consecuencias como el mal funcionamiento del
circuito. Esto se soluciona poniendo una resistencia entre el pin de entrada y VDD
llamada resistencia de pull-up, su objetivo es asegurar un «1» lógico cuando el
interruptor esté abierto. Si lo que se desea es asegurar un «0» lógico, la resistencia
se conecta a VSS y recibe el nombre de resistencia de pull-down.

¿Para qué sirve el Microcontrolador PIC16F84A?


El Microcontrolador PIC16F84A se ha usado en numerosas aplicaciones, que van
desde los automóviles a decodificadores de televisión. Es muy popular su uso por
los aficionados a la robótica y electrónica.

Puede ser programado tanto en lenguaje ensamblador y principalmente en C, para


el que existen numerosos compiladores. Cuando se utilizan los compiladores Basic,
es posible desarrollar útiles aplicaciones en tiempo récord, especialmente dirigidas
al campo doméstico y educacional.
Desarrollo de la Práctica
CODIGO MPLAB
Primer codigo generado con la funcion de que parapade un solo led.

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;+ PROGRAMA DE ENCENDER Y APAGAR CADA 150 MILISEGUNDO LOS LED CONECTADOS +

;+ LEDS CONECTADOS AL PUERTO B CUANDO SE MANIPULA EN PUERTO A +

;+ MATERIAL PLC`S +

; 25 DE MARZO 2021 +

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;************************** ENCABEZADO *************************************

list p=16F84A

#include P16F84A.inc

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

;*************************** DEFINICION DE VARIABLES *****************************

Contador1 equ 0x0C ; Seleccionamos posicion en la memoria RAM (GPR) para guardar

; registro utilizado para demora

Contador2 equ 0x0D ; Registro utilizado en demora

Led equ 0 ; Definimos Led como el bit cero de un registro, en este caso PORTB0

Pulsador equ 0 ; Definimos Pulsador como el bit 0, en este caso sera para PORTA0

;************************** CONFIGURACION DE PUERTOS *******************************

Reset org 0x00 ; Aqui comienza el micro

goto Inicio ; Salto a inicio de del programa

org 0x05 ; Origen del codigo de programa

Inicio bsf STATUS,RP0 ; Pasamos de Banco 0 a Banco 1 ñpra configurar los puertos

movlw b'11111' ; Muevo 11111 a W

movwf TRISA ; Cargo en TRISA como entradas

movlw b'11111110' ; Muevo 11111110 a W

movwf TRISB ; Cargo en valor de W al PuertoB


bcf STATUS,RP0 ; Paso del Banco 1 al Banco 0

bcf PORTB,Led ; Comienza apagado el pin uno del PuertoB

;************************** Controlando al LED **********************************************

Bucle btfsc PORTA,Pulsador ; Preguntamos si el bit de registro esta en 0 logico salto si bit b de reg. f es 0

goto Apagar ; Esta a 1 logico, Apagamos Led

bsf PORTB,Led ; Esta a 1 logico, Encendemos Led

call Demora_150ms ; Mantenemos prendido 150 milisegundos

bcf PORTB,Led ; Apagamos Led

call Demora_150ms ; Apagamos durante 150 ms, Ya realizamos un titilo

goto Bucle ; Testeamos nuevamente la condicion del Pulsador

Apagar bcf PORTB,Led ;Apagamos Led.-

goto Bucle ; Testeamos nuevamente la condicion del Pulsador.-

;*************************** DEMORA ************************************************************

Demora_150ms

movlw 0xFF ;

movwf Contador1 ; Iniciamos contador1.-

Repeticion1

movlw 0xC3 ;

movwf Contador2 ; Iniciamos contador2

Repeticion2

decfsz Contador2,1 ; Decrementa Contador2 y si es 0 sale.-

goto Repeticion2 ; Si no es 0 repetimos ciclo.-

decfsz Contador1,1 ; Decrementa Contador1.-

goto Repeticion1 ; Si no es cero repetimos ciclo.-

return ; Regresa de la subrutina.-

end
Simulación:
Segundo Código MPLAB:

Segundo código generado, este código la función que tiene es crear un intervalo al prender cada led como se ve en la siguiente imagen. Crea un intervalo
de arriba abajo al centro y del centro abajo y arriba.

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

;/// PROGRAMA Juego de luces - dos luces que se cruzan /// ;/// MATERIA PLC'S /// ;/// PRACTICA No. 3B /// ;/// FECHA 05 DE octubre DE 2017 /// ;///
VERSIÓN 1 ///

;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

LIST P=PIC16F84A

INCLUDE <P16F84A.INC> ; usar PIC 16F84A

__CONFIG _CP_OFF& _PWRTE_ON& _WDT_OFF& _XT_OSC

; code protec off ,power uptimer on,

; watchdog off, osc XT

PDel0 equ 0C ; Posición de la variable

PDel1 equ 0D ; posición de la variable

; El efecto que se busca es de dos luces que parten de los extremos expuestos y se muevan de lado a lado

SEC1 equ B'10000001'

SEC2 equ B'01000010'

SEC3 equ B'00100100'

SEC4 equ B'00011000'

;Se podria haber seguido con ejemplo SEC5 equ B'00100100' pero es igual a SEC3 y asi para los demas

; Por lo que se invierte la secuencia SEC3, SEC2, SEC1


ORG 0 ; El programa comienza en la dirección 0

BSF STATUS,5 ; Activa si pones un CERO (0) a RP0 estaremos en el BANCO 0,

; Si le pones un UNO (1) a RP0 estaremos en el BANCO 1

MOVLW B'00000000' ; Carga 00000 en W

MOVWF TRISA ; Puerto a todas salidas

MOVLW B'00000000' ; carga 00000000 en W

MOVWF TRISB ; puerto b todas salidas

BCF STATUS,5 ; volvemos al RP0

CLRF PORTB ; ponemos a cero el puerto b

INICIO ; etiqueta de comienza e programa

REPETIR

MOVLW SEC1 ; carga el valor de SEC1 en W

MOVWF PORTB ; carga w en el puerto b

CALL DEMORA ; demora de 100ms

MOVLW SEC2 ; carga el valor de SEC2 en W

MOVWF PORTB ; carga w en el puerto b

CALL DEMORA ; demora de 100ms

MOVLW SEC3 ; carga el valor de SEC3 en W

MOVWF PORTB ; carga w en el puerto b

CALL DEMORA ; demora de 100ms

MOVLW SEC4 ; carga el valor de SEC4 en W

MOVWF PORTB ; carga w en el puerto b

CALL DEMORA ; demora de 100ms

MOVLW SEC3 ; carga el valor de SEC3 en W

MOVWF PORTB ; carga w en el puerto b

CALL DEMORA ; demora de 100ms

MOVLW SEC2 ; carga el valor de SEC2 en W

MOVWF PORTB ; carga w en el puerto b

CALL DEMORA ; demora de 100ms

MOVLW SEC1 ; carga el valor de SEC1 en W

MOVWF PORTB ; carga w en el puerto b

CALL DEMORA ; demora de 100ms

GOTO INICIO ; va a inicio

;============================================================
;== La demora a sido generada con el programa PDEL === ;== Descripcion: Delay 100000 ciclos - 100 ms ===

;=============================================================

DEMORA movlw .60 ; 1 set numero de repeticion (B)

movwf PDel0 ;1

PLoop1 movlw .200 ; 1 set numero de repeticion (A)

movwf PDel1 ;1

PLoop2 clrwdt ; 1 clear watchdog

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

PDelL1 goto PDelL2 ; 2 ciclos delay

PDelL2 goto PDelL3 ; 2 ciclos delay

PDelL3 clrwdt ; 1 ciclo delay

return ; 2+2 Fin.

;=====================================================================

END ; fin de programa


Simulación:
Tercer Código MPLAB:

Tercer código, el tercer código es una mejora del segundo código realizado, ya que vemos que hace unas repeticiones muy rápidas a lo cual el tiempo de
retardo es rápido a 100ms y en el tercer código es a 200ms.

La secuencia que lleva es iniciar el led RB0 Y RB4 de ahí se van desplazando hacia abajo una vez llegado abajo vuelven de abajo hacia arriba y el ciclo es
repetitivo.

;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

;//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

;/// PROGRAMA Secuencia de luces de izquierda a derecha ///

;/// MATERIA PLC'S ///

;/// PRACTICA No. 3C ///

;/// FECHA 05 DE octubre DE 2017 ///

;/// VERSIÓN 1 ///

;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

LIST P=PIC16F84A

INCLUDE <P16F84A.INC>

__CONFIG _CP_OFF & _WDT_OFF & _XT_OSC & _PWRTE_ON ; Configuracion de Fuses

PDel0 equ 0C

PDel1 equ 0D

;SECUENCIAS

SEC1 equ 0E

SEC2 equ 0f

ORG 0

BSF STATUS,5 ; activa la pagina 1

MOVLW B'00000' ; carga 00000 en W

MOVWF TRISA ; puerto A todos salidas

MOVLW B'00000000' ; carga 00000000 en W

MOVWF TRISB ; puerto B todos salidaS

BCF STATUS,5 ; volvemos a la pagina 0

CLRF PORTA ; ponemos a cero el puerto A

CLRF PORTB ; ponemos a cero el puerto B

BCF STATUS,0 ; limpia el carry de STATUS,C

MOVLW B'00000001' ; carga 00000001 en w

MOVWF SEC1 ; guarda el valor en SEC1

INICIO ; etiqueta

DERECHA ; rutina para mover a derecha


CALL CAMBIAR ; llama a CAMBIAR

RLF SEC1,1 ; mueve el contenido a la izquierda y lo guarda en SEC1

BTFSS SEC1,3 ; si el bit 7 es igual a 1 salta una instruccion

GOTO DERECHA ; repite la rutina derecha

IZQUIERDA ; rutina para mover a izquierda

CALL CAMBIAR ; llama a CAMBIAR

RRF SEC1,1 ; mueve el contenido a la izquierda y lo guarda en SEC1

BTFSS SEC1,0 ; si el bit 0 es igual a 1 salta una instruccion

GOTO IZQUIERDA ; repite la rutina izquierda

GOTO INICIO ; va a inicio

CAMBIAR ; rutina para repetir los 4 bits bajos en los 4 bits altos

SWAPF SEC1,0 ; intercambia los 4 bits bajos por los 4 bits altos

MOVWF SEC2 ; guarda el valor en SEC2

MOVF SEC1,0 ; carga SEC1 en w

ADDWF SEC2,1 ; suma w y SEC2 y lo guarda en SEC2

MOVF SEC2,0 ; carga SE21 en w

MOVWF PORTB ; mueve el valor de w en el puerto b

CALL DEMORA ; demora de 200ms

RETURN

;====================================================

;=== La demora a sido generada con el programa PDEL ;=== Descripcion: Delay 200000 ciclos - 200 ms
;====================================================

DEMORA movlw .156 ; 1 set numero de repeticion (B)

movwf PDel0 ;1|

PLoop1 movlw .213 ; 1 set numero de repeticion (A)

movwf PDel1 ;1|

PLoop2 clrwdt ; 1 clear watchdog

PDelL1 goto PDelL2 ; 2 ciclos delay

PDelL2

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

PDelL3 goto PDelL4 ; 2 ciclos delay

PDelL4 clrwdt ; 1 ciclo delay


return ; 2+2 Fin.

;=======================================================

END ; fin de programa

Simulación:
Alumno 1 2 3 CALIF.

A1. Vivas García Eduardo Abisay

A2. Palacios Orea Gerardo


A3. Sandoval Caro Héctor Manuel
Conclusiones

Durante la ejecución en Proteus, nos encontramos con algunos problemas cómo lo


fue el que no prendían todos los leds, se revisaron los códigos y todo al parecer
estaba correcto, después pudimos determinar que, si podían encender todos los
leds sobre el mismo circuito, pero por separado, trabajar con Proteus a veces nos
llega a causar un pequeño conflicto, ya que puede envolvernos un poco. Solo hay
que tener un poco de paciencia e ir descifrando poco a poco la manera de trabajar
con Proteus, ya que al final se logró hacer que los 3 leds encendieran.
En esta practica pudimos llevar a cabo la simulación de encender y apagar los leds
cada cierto tiempo, esto fue gracias a que casi todos los microcontroladores usan
algo que se llama “una rutina de retardo”.
Básicamente es el tiempo de espera para que inicie una tarea y empiece otra que
fue prácticamente lo que realizamos en esta práctica. Los retardos con el PIC los
podemos conseguir de dos formas: por software o por hardware( esto se hace
mediante un timer), gracias a esta practica esto lo pudimos llevar a cabo y ver en el
simulador como es que se ejecuta y trabaja.

Referencias

4. Microcontrolador PIC 16F84A – Sherlin.xBot.es. (s. f.). Sherlin.Xbot. Recuperado 25 de marzo de 2021,

de http://sherlin.xbot.es/microcontroladores/microcontroladores-de-gama-media/4-microcontrolador-

pic-16f84

CDMX Electrónica. (2021, 25 marzo). PIC16F84A Microcontrolador UNIT Electronics %. UNIT

Electronics. https://uelectronics.com/producto/microcontrolador-pic16f84a/

También podría gustarte