Está en la página 1de 16

Departamento de Eléctrica y Electrónica

Carrera de Electrónica y Automatización

MICROPROCESADORES Y MICROCONTROLADORES

Práctica 10. Unidad 2


SECUENCIAS COMPLEJAS CON EL PIC16F877

Autor:
Xavier David Barreno Ubilluz

Docente:
Ing. Amparo Meythaler

Fecha:
Latacunga, martes 28 de julio del 2020.

NRC:
7803
1) OBJETIVOS
 Realizar ejercicios de secuencias complejas utilizando los Puertos completos del
PIC16F877.
 Reforzar el funcionamiento y la importancia de los Retardos para la utilización de
los puertos.

2) MARCO TEORICO
SECUENCIAS
Según la complejidad se pueden realizar de tres formas:
 Instrucciones simples.
 Direccionamiento Indirecto.
Instrucción Especial: RETLW.

3) EQUIPOS Y MATERIALES
 PC con los paquetes MPLAB IDE
 PC con el paquete PROTEUS.
 WORD para realizar el informe.

4) INSTRUCCIONES
1. Trabajo Preparatorio:
a) Realizar el diagrama de flujo, la codificación e implementación
correspondiente, de un programa que realice una secuencia escogida por
usted utilizando Direccionamiento Indirecto, que se visualice en 8 leds
colocados en el Puerto. Entre cada dato de análisis debe estar un retardo
de 0,3 milisegundos, calculados en base a un oscilador de 8 MHz.
ACTIVIDADES
Diagrama de flujo
INICIO

CONFIGURAR PORTB

GUARDAR DATOS

FSR  30

W  [FSR]

PORTB  W

RETARDOS

FSR  FSR +1
FSR = 39
NO SI

RETARDOS

RETARDO2 RETARDO1

R2  00 R1  00

RETARDO 1 R1  R1 +1

R2  R2 +1
NO R1 =64

R2 =64
SI
SI REGRESAR
REGRESAR

Codificación
LIST P=PIC16F877
ESTADO EQU 03
FSR EQU 04
INDF EQU 00
PORTB EQU 06
R1 EQU 25
R2 EQU 26

ORG 0
BSF ESTADO,5
CLRF PORTB
BCF ESTADO,5

MOVLW 0FF
MOVWF 30
MOVLW 00
MOVWF 31
MOVLW 7E
MOVWF 32
MOVLW 00
MOVWF 33
MOVLW 3C
MOVWF 34
MOVLW 00
MOVWF 35
MOVLW 18
MOVWF 36
MOVLW 00
MOVWF 37
MOVLW 0FF
MOVWF 38
SI:
MOVLW 30
MOVWF FSR
NO:
MOVF INDF,0
MOVWF PORTB
CALL RETARDO2
INCF FSR,1
MOVLW 39
XORWF FSR,0
BTFSS ESTADO,2
GOTO NO
GOTO SI

RETARDO2
CLRF R2
BUCLE2
CALL RETARDO1
INCF R2,1
MOVLW 64
XORWF R2,0
BTFSS ESTADO,2
GOTO BUCLE2
RETURN

RETARDO1
CLRF R1
BUCLE1
INCF R1,1
MOVLW 64
XORWF R1,0
BTFSS ESTADO,2
GOTO BUCLE1
RETURN
END
Cálculo de Retardo.
 Realice los cálculos para obtener el tiempo solicitado.
RETARDO:
CLRF R1 1 CM no se repite
BUCLE1:
INCF R1,1 1 CM se repite
MOVLW ## 1 CM se repite
XORWF R1,0 1 CM se repite
BTFSS ESTADO,2 1 CM se repite
GOTO BUCLE1 2 CM se repite
RETURN 2 CM se repite

𝑻𝒊𝒆𝒎𝒑𝒐 𝒅𝒆 𝒓𝒆𝒕𝒂𝒓𝒅𝒐 = [#𝑪𝑴 𝒒𝒖𝒆 𝒏𝒐 𝒔𝒆 𝒓𝒆𝒑𝒊𝒕𝒆𝒏 + 𝒏(𝒗𝒆𝒄𝒆𝒔 #𝑪𝑴 𝒒𝒖𝒆 𝒔𝒆 𝒓𝒆𝒑𝒊𝒕𝒆)] ∗ 𝑽𝒂𝒍𝒐𝒓 𝑪𝑴
𝑻𝒊𝒆𝒎𝒑𝒐 𝒅𝒆 𝒓𝒆𝒕𝒂𝒓𝒅𝒐 = [𝟑 + 𝒏(𝟔)] ∗ 𝟒𝒕
𝑇𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑟𝑒𝑡𝑎𝑟𝑑𝑜 = 0.3𝑚𝑠
1 1
𝑡= =
𝑓 8𝑀𝐻𝑧
4
0.3𝑚𝑠 = [3 + 𝑛(6)] ∗ ( )
8𝑀𝐻𝑧
0.3𝑚𝑠 ∗ 8𝑀𝐻𝑧
−3
𝑛= 4
6
𝑛 = 99.5  100 decimal
n = 64 hexadecimal

Trabajo en el paquete MPLAB IDE.


 Digite el programa.
 Compile el ejercicio hasta que obtenga 0 errores.

Trabajo en el paquete PROTEUS.


 Realice el diagrama esquemático.
 Cargue el programa compilado en el microcontrolador.

 Corra el diseño y verifique el funcionamiento.


Secuencia
1 1 1 1 1 1 1 1

0 0 0 0 0 0 0 0

0 1 1 1 1 1 1 0

0 0 0 0 0 0 0 0

0 0 1 1 1 1 0 0

0 0 0 0 0 0 0 0

0 0 0 1 1 0 0 0

0 0 0 0 0 0 0 0

1 1 1 1 1 1 1 1

FF = [30]
00 = [31]
7E = [32]
00 = [33]
3C = [34]
00 = [35]
18 = [36]
00 = [37]
FF = [38]
FF 00

7E 00

3C 00

18 00

Si NO funciona el ejercicio, debe revisar el programa realizado en el MPLAB,


corregirlo, compilarlo y correr nuevamente en el paquete PROTEUS.
b) Realizar el diagrama de flujo, la codificación e implementación
correspondiente, de un programa que realice una secuencia escogida por
usted (diferente a la anterior) utilizando RETLW, que se visualice en 8 leds
colocados en el Puerto C. Utilice el mismo retardo del ejercicio anterior.
ACTIVIDADES
Diagrama de flujo
INICIO

CONFIGURAR PORTB

RX  00

SECUENCIA

PORTB  W

RETARDO

RX  RX+1

NO SI
RX = 09

SECUENCIA

SECUENCIA

W  RX

PC  PC+1

W  00 W  11 W  33 W  77 W  FF W  77 W  33 W  11 W  00

REGRESO REGRESO REGRESO REGRESO REGRESO REGRESO REGRESO REGRESO REGRESO

RETARDOS
RETARDO2 RETARDO1

R2  00 R1  00

RETARDO 1 R1  R1 +1

R2  R2 +1
NO R1 =64

R2 =64
SI
SI REGRESAR
REGRESAR

Codificación
LIST P=PIC16F877
ESTADO EQU 03
PORTB EQU 06
PCL EQU 02
R1 EQU 25
R2 EQU 26
RX EQU 30

ORG 0
BSF ESTADO,5
CLRF PORTB
BCF ESTADO,5

SI:
CLRF RX
NO:
CALL SECUENCIA
MOVWF PORTB
CALL RETARDO2
INCF RX,1
MOVLW 09
XORWF RX,0
BTFSS ESTADO,2
GOTO NO
GOTO SI

SECUENCIA:
MOVF RX,0
ADDWF PCL,1
RETLW 00
RETLW 11
RETLW 33
RETLW 77
RETLW 0FF
RETLW 77
RETLW 33
RETLW 11
RETLW 00

RETARDO2:
CLRF R2
BUCLE2:
CALL RETARDO1
INCF R2,1
MOVLW 64
XORWF R2,0
BTFSS ESTADO,2
GOTO BUCLE2
RETURN
RETARDO1:
CLRF R1
BUCLE1:
INCF R1,1
MOVLW 64
XORWF R1,0
BTFSS ESTADO,2
GOTO BUCLE1
RETURN
END

Cálculo de Retardo.
 Realice los cálculos para obtener el tiempo solicitado.
RETARDO:
CLRF R1 1 CM no se repite
BUCLE1:
INCF R1,1 1 CM se repite
MOVLW ## 1 CM se repite
XORWF R1,0 1 CM se repite
BTFSS ESTADO,2 1 CM se repite
GOTO BUCLE1 2 CM se repite
RETURN 2 CM se repite
𝑻𝒊𝒆𝒎𝒑𝒐 𝒅𝒆 𝒓𝒆𝒕𝒂𝒓𝒅𝒐 = [#𝑪𝑴 𝒒𝒖𝒆 𝒏𝒐 𝒔𝒆 𝒓𝒆𝒑𝒊𝒕𝒆𝒏 + 𝒏(𝒗𝒆𝒄𝒆𝒔 #𝑪𝑴 𝒒𝒖𝒆 𝒔𝒆 𝒓𝒆𝒑𝒊𝒕𝒆)] ∗ 𝑽𝒂𝒍𝒐𝒓 𝑪𝑴
𝑻𝒊𝒆𝒎𝒑𝒐 𝒅𝒆 𝒓𝒆𝒕𝒂𝒓𝒅𝒐 = [𝟑 + 𝒏(𝟔)] ∗ 𝟒𝒕
𝑇𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑟𝑒𝑡𝑎𝑟𝑑𝑜 = 0.3𝑚𝑠
1 1
𝑡= =
𝑓 8𝑀𝐻𝑧
4
0.3𝑚𝑠 = [3 + 𝑛(6)] ∗ ( )
8𝑀𝐻𝑧
0.3𝑚𝑠 ∗ 8𝑀𝐻𝑧
−3
𝑛= 4
6
𝑛 = 99.5  100 decimal
n = 64 hexadecimal

Trabajo en el paquete MPLAB IDE.


 Digite el programa.
 Compile el ejercicio hasta que obtenga 0 errores.

Trabajo en el paquete PROTEUS.


 Realice el diagrama esquemático.

 Cargue el programa compilado en el microcontrolador.


 Corra el diseño y verifique el funcionamiento.
0 0 0 0 0 0 0 0

0 0 0 1 0 0 0 1

0 0 1 1 0 0 1 1

0 1 1 1 0 1 1 1

1 1 1 1 1 1 1 1

0 1 1 1 0 1 1 1

0 0 1 1 0 0 1 1

0 0 0 1 0 0 0 1

0 0 0 0 0 0 0 0

00 = [30]
11 = [31]
33 = [32]
77 = [33]
FF = [34]
77 = [35]
33 = [36]
11 = [37]
00 = [38]
00 11

33 77
FF 77

33 11

Si NO funciona el ejercicio, debe revisar el programa realizado en el MPLAB,


corregirlo, compilarlo y correr nuevamente en el paquete PROTEUS.

2. Verifique el funcionamiento del MPLAB IDE y del PROTEUS.


El funcionamiento del MPLAB IDE y del PROTEUS están comprobados con cada
ejercicio realizado en clases junto con la docente.

5) RESULTADOS
 Explique los errores cometidos en el ejercicio realizado (si los tuvo) y la forma
de corregirlos.
No hubo errores complejos, ya que el esquema del ejercicio es general y lo que hay
que tener presente es en el esquema de la secuencia que sea realizado y digitado de
manera correcta.

En el segundo ejercicio tuve un error al compilar el ejercicio y fue que en el


MPLAB no le coloque el 0 antes de la letra.

 ¿Explique el trabajo del PC en las secuencias que utilizan la instrucción


RETLW?
El PC o contador de programa será manipulado (puntero y banderas) para la
obtención ordenada de los códigos que saldrán al puerto.

6) CONCLUSIONES (mínimo 3)
 Para programar secuencias utilizando direccionamiento indirecto se debe
considerar que hay que guardar los códigos de la secuencia seleccionada en
localidades del área GPR de la memoria de datos.
 Se puede utilizar direccionamiento indirecto tanto en secuencias simples como
complejas.
 En las secuencias utilizando la instrucción RETLW se manipula el contador del
programa (PC) para la obtención ordenada de los códigos que saldrán al puerto.
 En las secuencias utilizando la instrucción RETLW siempre hay que trabajar la
secuencia en una subrutina.
 En las secuencias utilizando la instrucción RETLW se forman dos instrucciones
más:
 Un salto
 MOVLW

7) RECOMENDACIONES (mínimo 2)
 Para la simulación del ejercicio en PROTEUS o PROTOBOARD siempre hay que
trabajar con retardos para que la secuencia pueda ser observada de manera correcta.
 En las secuencias que se realiza con RETLW para comprobar el funcionamiento se
recomienda correr por pasos comprobar con el contador de programas.

8) BIBLIOGRAFIA/LINKOGRAFÍA
https://www.unioviedo.es/ate/alberto/manualPic.pdf

file:///C:/Users/Usuario/Downloads/Clase%20Microprocesadores%20y%20Microco
ntroladores_Lunes%2027%20de%20julio%202020%20(2020-07-
27%20at%2007%2029%20GMT-7)

También podría gustarte