You are on page 1of 14

UNIVERSIDAD PRIVADA DEL VALLE

FACULTAD DE INFORMATICA Y ELECTRONICA


INGENIERIA ELECTRONICA
CAMPUS TIQUIPAYA

Evaluacin

MICROPROCESADORES II
Informe de Laboratorio N 2

CONTADORES DE EVENTOS Y
TEMPORIZADORES
Grupo A
Estudiante: Ariel Adrin Carvajal Pardo
Docente: Msc. Ing. Gerson Prez Villarroel
Cochabamba 01 de Abril
Gestin I 2015
UNIVERSIDAD PRIVADA DEL VALLE
SERVICIOS DE LABORATORIO
LABORATORIOS DE DISEO ELECTRONICO II

PRACTICA N 2
CONTADORES DE EVENTOS Y TEMPORIZADORES
1. OBJETIVOS.
Al finalizar la prctica el estudiante:

Manejar y configurar los puertos de entrada y salida de los microcontroladores PIC.


Ser capaz de operar los lenguajes de entorno de programacin de los microcontroladores.
Estar familiarizado con el repertorio de instrucciones de los PIC asociados a la
configuracin de los puertos.
Ser capaz de manejar y configurar los distintos mdulos de temporizacin en los
microcontroladores PIC, para su utilizacin en aplicaciones como contadores de eventos o
como temporizadores.

2. MARCO TEORICO
En los ltimos 40 aos, los adelantos investigativos en la ciencia y tecnologa han permitido
revolucionar al mundo con una serie de inventos e innovaciones en todas las reas del
saber. Uno de estos campos ms investigados y explotados es sin duda la electrnica.
La automatizacin industrial e incluso la domtica, que es la automatizacin del hogar, est
expandindose inmensurablemente; hoy en da se vive una era donde todo tiende a ser
automtico, con el fin de facilitar el curso de la vida de la humanidad. (Ledezma, 2010)
Set de Instrucciones
Hasta aqu, para poder iniciar a programar el Microcontrolador PIC 16F877, solo
necesitamos conocer el set de instrucciones el cual se presenta en la siguiente figura:
En l se puede ver el Mnemonico de las instruccin, sus operandos, descripcin, los ciclos
que toma su ejecucin, el Opcode y los bit que puede afectar cada operacin. Estn
clasificadas de acuerdo a su funcionamiento si estn dirigidas a Operaciones de Byte, de Bit
o de Literales y Control.

Es importante entender cada una de ellas y memorizarlas para poder programar de manera
ms eficiente el micro.
Este conjunto de instrucciones corresponden a la programacin ASM que es la ms comn,
la de ms bajo nivel, la que interacta directamente con el micro hacindolo ms eficiente en
tiempo de ejecucin, por eso es importante dominarlo aunque el objetivo sea programar en
lenguaje C, existir un momento en el que seguramente necesitaras saber Ensamblador,
adems
es
el
ideal
para
aprender
la
programacin
de
PIC's.
Este es el resumen de las instrucciones, la idea es tener una nocin de las instrucciones
para poder entender mejor nuestro primer programa; ms adelante veremos ms a detalle
cada una de las instrucciones para ver casos especficos en los que nos pueden servir. (S.,
2007)

3. MATERIALES

1 Multmetro Digital

Fuente de energa

Bread board
O
Protoboard

Resistencias de Diseo

Cables para Fuente

Microcontrolador 16F887A

LEDS

Display 7 Seg

4. PROCEDIMIENTO.
Parte 2.1
Desarrollar un programa, utilizando el modulo temporizadores, para contar eventos y mostrar la
cuenta en un displays de 7 segmentos conectado a un puerto configurado como salida. El conteo
debe
ser
en
base
hexadecimal
que
empiece
en
0
y
termine
en
F.
CODIGO
list p=16f877A
include <p16f877A.inc>
org 0x00
nop
_INICIO
bsf
STATUS,RP0
;Ir banco 1
bcf
STATUS,RP1
movlw b'00000110' ;PA como entrada digital
movwfADCON1
movlw 0xFF
movwfTRISA
;PA entrada
clrf
TRISB
;PB salida
movlw
b'11111000' ;Valor a escribir en el registro de configuracin
movwf
OPTION_REG
;Configuracion del TMRO
bcf
STATUS,RP0
;Ir banco 0
bcf
STATUS,RP1
clrf
TMR0
;TMR0=0 inicializamos el contador en cero
clrf
PORTB
_BUCLE

movf TMR0,W
call _TABLA
movwf
PORTB
goto _BUCLE
_TABLA
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw

;W=TMR0
;Escribe el valor de TMR0 en PORTB
;Salta a la etiqueta bucle

addwf PCL,F
b'00111111'
b'00000110'
b'01011011'
b'01001111'
b'01100110'
b'01101101'
b'01111101'
b'00000111'
b'01111111'
b'01101111'
b'01110111'
b'11111111'
b'00111001'
b'01011110'
b'01111001'
b'01110001'

;CONT ES EL CONTADOR DEL PROGRAMA


;SE INTRODUCE EL NUMERO 0
;SE INTRODUCE EL NUMERO 1
;SE INTRODUCE EL NUMERO 2
;SE INTRODUCE EL NUMERO 3
;SE INTRODUCE EL NUMERO 4
;SE INTRODUCE EL NUMERO 5
;SE INTRODUCE EL NUMERO 6
;SE INTRODUCE EL NUMERO 7
;SE INTRODUCE EL NUMERO 8
;SE INTRODUCE EL NUMERO 9
;SE INTRODUCE LA LETRA A
;SE INTRODUCE LA LETRA B.
;SE INTRODUCE LA LETRA C
;SE INTRODUCE LA LETRA d
;SE INTRODUCE LA LETRA E
;SE INTRODUCE LA LETRA F

END
SIMULACION

U1
13
14

2
3
4
5
6
7
8
9
10
1

OSC1/CLKIN
OSC2/CLKOUT

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
PIC16F877A

33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30

LAYOUT

Parte 2.2
Desarrollar un programa, utilizando temporizadores para generar un retardo de 0,5 segundos. A
partir del cual se incrementa un contador cuyo valor se muestrar en un displays de 7 segmentos
conectado a un puerto configurado como salida. El conteo debe ser en base hexadecimal que
empiece en 0 y termine en F.
CODIGO
list p=16f877A
include <p16f877A.inc>
CONT
EQU 0X20
AUX EQU 0X19
org 0x00
nop
_INICIO
bsf
STATUS,RP0
;Ir banco 1
bcf
STATUS,RP1
clrf
TRISB
;PB salida
movlw
.125
;Valor a escribir en el registro de configuracin
movwf
PR2
;Configuracion de las cuantas del PR2
bcf
STATUS,RP0
bcf
STATUS,RP1
movlw b'01001011'
movwf
T2CON
clrf
TMR2
clrf
PORTB

;Ir banco 0

;TMR2=0 inicializamos el contador en cero

_VACIAR
clrf

CONT

_MAIN
movf CONT,W
call _TABLA
movwf
PORTB
call _RETARDO
incf CONT
goto _MAIN

;W=CONT
;Escribe el valor de TMR2 en PORTB
;Salta a la etiqueta _MAIN

_RETARDO
movlw .25
movwfAUX
_ESPERA1
clrf
TMR2
bcf
PIR1, TMR2IF
bsf
T2CON, TMR2ON
_ESPERA
btfss PIR1, TMR2IF
goto _ESPERA
decfsz
AUX,F
goto _ESPERA1
bcf
T2CON, TMR2ON
return
_TABLA
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
goto
END

addwf PCL,F
b'00111111'
b'00000110'
b'01011011'
b'01001111'
b'01100110'
b'01101101'
b'01111101'
b'00000111'
b'01111111'
b'01101111'
b'01110111'
b'11111111'
b'00111001'
b'01011110'
b'01111001'
b'01110001'
_VACIAR

;CONT ES EL CONTADOR DEL PROGRAMA


;SE INTRODUCE EL NUMERO 0
;SE INTRODUCE EL NUMERO 1
;SE INTRODUCE EL NUMERO 2
;SE INTRODUCE EL NUMERO 3
;SE INTRODUCE EL NUMERO 4
;SE INTRODUCE EL NUMERO 5
;SE INTRODUCE EL NUMERO 6
;SE INTRODUCE EL NUMERO 7
;SE INTRODUCE EL NUMERO 8
;SE INTRODUCE EL NUMERO 9
;SE INTRODUCE LA LETRA A
;SE INTRODUCE LA LETRA B
;SE INTRODUCE LA LETRA C
;SE INTRODUCE LA LETRA D
;SE INTRODUCE LA LETRA E
;SE INTRODUCE LA LETRA F

LAYOUT

SIMULACION

U2
13
14
2
3
4
5
6
7
8
9
10
1

OSC1/CLKIN
OSC2/CLKOUT

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7

33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30

PIC16F877A

Parte 2.3
Realizar un programa que rote a la izquierda el encendido de uno de ocho LEDs conectados a un
puerto configurado como salida. El salto de la rotacin de LED a LED debe ser en primera
instancia cada 0,0625 segundos durante 4 y luego de 0,25 segundos durante los siguientes 4
segundos.

CODIGO
list p=16f877A
include <p16f877A.inc>
CONT
EQU 0X20
AUX EQU 0X19
TEMP1
EQU 0X18
org 0x00
nop
_INICIO
bsf
STATUS,RP0
;Ir banco 1
bcf
STATUS,RP1
clrf
TRISC
;PC salida
movlw
.125
;Valor a escribir en el registro de configuracin
movwf
PR2
;Configuracion de las cuantas del PR2
bcf
STATUS,RP0
bcf
STATUS,RP1
movlw b'01001011'
movwf
T2CON
clrf
TMR2
clrf
PORTC
movlw .67
movwf
CONT

;Ir banco 0

;TMR2=0 inicializamos el contador en cero


;CONT=W

_SECUENCIA1
movlw b'00000001'
movwfPORTC
call _RETARDO_06
call _VERIFICA
movlw b'00000010'
movwfPORTC
call _RETARDO_06
call _VERIFICA
movlw b'00000100'
movwfPORTC
call _RETARDO_06
call _VERIFICA
movlw b'00001000'
movwfPORTC
call _RETARDO_06
call _VERIFICA
movlw b'00010000'
movwfPORTC
call _RETARDO_06
call _VERIFICA

;SE PRENDE LED DEL BIT 0

;SE PRENDE LED DEL BIT 1

;SE PRENDE LED DEL BIT 2

;SE PRENDE LED DEL BIT 3

;SE PRENDE LED DEL BIT 4

movlw b'00100000'
movwfPORTC
call _RETARDO_06
call _VERIFICA
movlw b'01000000'
movwfPORTC
call _RETARDO_06
call _VERIFICA
movlw b'10000000'
movwfPORTC
call _RETARDO_06
call _VERIFICA
goto _SECUENCIA1
_VERIFICA
decfsz
CONT,F
return
bcf
STATUS,Z
movlw .16
movwf
CONT
goto _SECUENCIA2

;SE PRENDE LED DEL BIT 5

;SE PRENDE LED DEL BIT 6

;SE PRENDE LED DEL BIT 7

;CONT=W

_SECUENCIA2
movlw b'00000100'
movwfPORTC
call _RETARDO_025
call _VERIFICA2
movlw b'00001000'
movwfPORTC
call _RETARDO_025
call _VERIFICA2
movlw b'00010000'
movwfPORTC
call _RETARDO_025
call _VERIFICA2
movlw b'00100000'
movwfPORTC
call _RETARDO_025
call _VERIFICA2
movlw b'01000000'
movwfPORTC
call _RETARDO_025
call _VERIFICA2
movlw b'10000000'
movwfPORTC
call _RETARDO_025
call _VERIFICA2
movlw b'00000001'
movwfPORTC
call _RETARDO_025

;SE PRENDE LED DEL BIT 2

;SE PRENDE LED DEL BIT 3

;SE PRENDE LED DEL BIT 4

;SE PRENDE LED DEL BIT 5

;SE PRENDE LED DEL BIT 6

;SE PRENDE LED DEL BIT 7

;SE PRENDE LED DEL BIT 0

call _VERIFICA2
movlw b'00000010'
movwfPORTC
call _RETARDO_025
call _VERIFICA2
goto _SECUENCIA2

;SE PRENDE LED DEL BIT 1

_VERIFICA2
decfsz
CONT,F
return
bcf
STATUS,Z
movlw .67
movwf
CONT
goto _SECUENCIA1
_RETARDO_06
movlw .3
movwfAUX
_ESPERA1
clrf
TMR2
bcf
PIR1, TMR2IF
bsf
T2CON, TMR2ON
_ESPERA
btfss PIR1, TMR2IF
goto _ESPERA
decfsz
AUX,F
goto _ESPERA1
bcf
T2CON, TMR2ON
return
_RETARDO_025
movlw .12
movwfAUX
_ESPERA01
clrf
TMR2
bcf
PIR1, TMR2IF
bsf
T2CON, TMR2ON
_ESPERA0
btfss PIR1, TMR2IF
goto _ESPERA0
decfsz
AUX,F
goto _ESPERA01
bcf
T2CON, TMR2ON
return
END

;CONT=W

LAYOUT

SIMULACION

U3
13
14
2
3
4
5
6
7
8
9
10
1

OSC1/CLKIN
OSC2/CLKOUT

RB0/INT
RB1
RB2
RB3/PGM
RB4
RB5
RB6/PGC
RB7/PGD

RA0/AN0
RA1/AN1
RA2/AN2/VREF-/CVREF
RA3/AN3/VREF+
RA4/T0CKI/C1OUT
RA5/AN4/SS/C2OUT
RC0/T1OSO/T1CKI
RE0/AN5/RD
RC1/T1OSI/CCP2
RE1/AN6/WR
RC2/CCP1
RE2/AN7/CS
RC3/SCK/SCL
RC4/SDI/SDA
MCLR/Vpp/THV
RC5/SDO
RC6/TX/CK
RC7/RX/DT
RD0/PSP0
RD1/PSP1
RD2/PSP2
RD3/PSP3
RD4/PSP4
RD5/PSP5
RD6/PSP6
RD7/PSP7
PIC16F877A

33
34
35
36
37
38
39
40
15
16
17
18
23
24
25
26
19
20
21
22
27
28
29
30

0
0
0
0
0
1
0
0

5. CUESTIONARIO.
1. Explicar las diferencias bsicas de los distintos mdulos de temporizacin de los
microcontroladores PIC.
En los temporizadores del microcontrolador, se tienen distintas caractersticas entre ellos,
como ser desde el valor del prescaler que se puede usar entre ellos, siendo el TMR0 el que
tiene el mayor prescaler, y el TMR2 el que tiene el menor prescaler posible, pero ah
tambin es donde aparecen distintas caractersticas entre estos dos temporizadores. El
temp2 tiene la capacidad de ser mas preciso a la hora de manejar los tiempos de retardo, ya
que es solo necesario el uso de bucles para que incrementen si tiempo de retardo. En
cambio con los otros 2 temporizadores, no es muy preciso a la hora de calcular el tiempo de
retardo, produciendo variaciones que a la larga si tendrn mucho significado
2. Cul es la frecuencia mnima de refrescamiento en la multiplicacin de puertos?
El tiempo de refrescamiento debe ser bastante rpido, casi siendo instantneo, ya que se
necesita que se cambie el nmero a mostrar, varias veces durante el tiempo que se vaya a
mostrar los leds encendidos. Esto quiere decir que es casi necesario que exista un tiempo
de refrescamiento sumamente diminuto para nuestra percepcin, pero bastante notable y
suficiente para el microcontrolador. Este tiempo suele estar por el orden de los
microsegundos.
6. CONCLUSIONES
Tras finalizar la prctica de laboratorio se lograron los objetivos que eran manejar y
configurar los puertos de entrada y salida de los microcontroladores PIC. Ser capaz de
operar los lenguajes de entorno de programacin de los microcontroladores.
Estar
familiarizado con el repertorio de instrucciones de los PIC asociados a la configuracin de
los puertos. Ser capaz de manejar y configurar los distintos mdulos de temporizacin en
los microcontroladores PIC, para su utilizacin en aplicaciones como contadores de eventos
o como temporizadores. Habiendo culminados los objetivos que se buscaban cubrir se da
por terminada esta prctica de laboratorio.
7. WEBGRAFA

Ledezma, J. H., 2010. BANCO DE TESIS. [En lnea]


Available at: http://dpicuto.edu.bo/tesis/facultad-nacional-de-ingenieria/carrera-deingenieria-electrica-y-electronica/1746-diseno-e-implementacion-de-un-controlador-logicoprogramable-mediante-el-microcontrolador-16f877a.html
[ltimo acceso: 11 marzo 2015].

S., I., 2007. PIC 16F877. [En lnea]


Available at: http://picmicrocontroller877.blogspot.com/2007/08/set-de-instrucciones.html
[ltimo acceso: 11 Marzo 2015].

You might also like