Post on 12-Jan-2016
description
UNIVERSIDAD PRIVADA DEL VALLEFACULTAD DE INFORMATICA Y ELECTRONICAINGENIERIA ELECTRONICA CAMPUS TIQUIPAYA
MICROPROCESADORES II
Informe de Laboratorio Nº 2
CONTADORES DE EVENTOS Y TEMPORIZADORES
Grupo “A”
Estudiante: Ariel Adrián Carvajal Pardo
Docente: Msc. Ing. Gerson Pérez Villarroel
Cochabamba 01 de Abril
Gestión I – 2015
Evaluación
UNIVERSIDAD PRIVADA DEL VALLE
SERVICIOS DE LABORATORIO
LABORATORIOS DE DISEÑO ELECTRONICO II
PRACTICA Nº 2
CONTADORES DE EVENTOS Y TEMPORIZADORES
1. OBJETIVOS.
Al finalizar la práctica el estudiante:
Manejará y configurará los puertos de entrada y salida de los microcontroladores PIC. Será capaz de operar los lenguajes de entorno de programación de los microcontroladores. Estará familiarizado con el repertorio de instrucciones de los PIC asociados a la
configuración de los puertos. Será capaz de manejará y configurar los distintos módulos de temporización en los
microcontroladores PIC, para su utilización en aplicaciones como contadores de eventos o como temporizadores.
2. MARCO TEORICO
En los últimos 40 años, los adelantos investigativos en la ciencia y tecnología han permitido revolucionar al mundo con una serie de inventos e innovaciones en todas las áreas del saber. Uno de estos campos más investigados y explotados es sin duda la electrónica.
La automatización industrial e incluso la domótica, que es la automatización del hogar, está expandiéndose inmensurablemente; hoy en día se vive una era donde todo tiende a ser automático, 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 instrucción, sus operandos, descripción, los ciclos que toma su ejecución, el Opcode y los bit que puede afectar cada operación. Están clasificadas de acuerdo a su funcionamiento si están 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 más eficiente el micro.
Este conjunto de instrucciones corresponden a la programación ASM que es la más común, la de más bajo nivel, la que interactúa directamente con el micro haciéndolo más eficiente en tiempo de ejecución, por eso es importante dominarlo aunque el objetivo sea programar en lenguaje C, existirá un momento en el que seguramente necesitaras saber Ensamblador, además es el ideal para aprender la programación de PIC's.
Este es el resumen de las instrucciones, la idea es tener una noción de las instrucciones para poder entender mejor nuestro primer programa; más adelante veremos más a detalle cada una de las instrucciones para ver casos específicos en los que nos pueden servir. (S.,2007)
3. MATERIALES
1 Multímetro Digital
Fuente de energía
Bread boardO
Protoboard
Resistencias de Diseño
Cables para Fuente
Microcontrolador 16F887A
LEDS
Display 7 Seg
4. PROCEDIMIENTO.
Parte 2.1Desarrollar 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.
CODIGOlist p=16f877Ainclude <p16f877A.inc>
org 0x00
nop _INICIO
bsf STATUS,RP0 ;Ir banco 1bcf STATUS,RP1movlwb'00000110' ;PA como entrada digitalmovwfADCON1movlw0xFFmovwfTRISA ;PA entradaclrf TRISB ;PB salidamovlw b'11111000' ;Valor a escribir en el registro de configuración movwf OPTION_REG ;Configuracion del TMRObcf STATUS,RP0 ;Ir banco 0bcf STATUS,RP1clrf TMR0 ;TMR0=0 inicializamos el contador en ceroclrf PORTB
_BUCLE
movf TMR0,W ;W=TMR0call _TABLAmovwf PORTB ;Escribe el valor de TMR0 en PORTBgoto _BUCLE ;Salta a la etiqueta bucle
_TABLA addwf PCL,F ;CONT ES EL CONTADOR DEL PROGRAMAretlw b'00111111' ;SE INTRODUCE EL NUMERO 0retlw b'00000110' ;SE INTRODUCE EL NUMERO 1retlw b'01011011' ;SE INTRODUCE EL NUMERO 2retlw b'01001111' ;SE INTRODUCE EL NUMERO 3retlw b'01100110' ;SE INTRODUCE EL NUMERO 4retlw b'01101101' ;SE INTRODUCE EL NUMERO 5retlw b'01111101' ;SE INTRODUCE EL NUMERO 6retlw b'00000111' ;SE INTRODUCE EL NUMERO 7retlw b'01111111' ;SE INTRODUCE EL NUMERO 8retlw b'01101111' ;SE INTRODUCE EL NUMERO 9retlw b'01110111' ;SE INTRODUCE LA LETRA Aretlw b'11111111' ;SE INTRODUCE LA LETRA B.retlw b'00111001' ;SE INTRODUCE LA LETRA Cretlw b'01011110' ;SE INTRODUCE LA LETRA dretlw b'01111001' ;SE INTRODUCE LA LETRA Eretlw b'01110001' ;SE INTRODUCE LA LETRA F
END
SIMULACION
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP2 16
RC2/CCP117
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP1 20
RB7/PGD40
RB6/PGC 39RB5 38RB4
37RB3/PGM
36RB2
35RB1 34
RB0/INT33
RD7/PSP730
RD6/PSP6 29RD5/PSP5 28RD4/PSP4
27RD3/PSP3
22RD2/PSP2
21
RC7/RX/DT26
RC6/TX/CK 25RC5/SDO 24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U1
PIC16F877A
0
LAYOUT
Parte 2.2Desarrollar 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=16f877Ainclude <p16f877A.inc>CONT EQU 0X20AUX EQU 0X19
org 0x00nop
_INICIO
bsf STATUS,RP0 ;Ir banco 1bcf STATUS,RP1clrf TRISB ;PB salidamovlw .125 ;Valor a escribir en el registro de configuración movwf PR2 ;Configuracion de las cuantas del PR2
bcf STATUS,RP0 ;Ir banco 0bcf STATUS,RP1movlwb'01001011'
movwf T2CONclrf TMR2 ;TMR2=0 inicializamos el contador en ceroclrf PORTB
_VACIARclrf CONT
_MAIN movf CONT,W ;W=CONT
call _TABLAmovwf PORTB ;Escribe el valor de TMR2 en PORTBcall _RETARDOincf CONTgoto _MAIN ;Salta a la etiqueta _MAIN
_RETARDOmovlw.25movwfAUX
_ESPERA1clrf TMR2bcf PIR1, TMR2IFbsf T2CON, TMR2ON
_ESPERAbtfss PIR1, TMR2IFgoto _ESPERA decfsz AUX,F goto _ESPERA1bcf T2CON, TMR2ONreturn
_TABLA addwf PCL,F ;CONT ES EL CONTADOR DEL PROGRAMAretlw b'00111111' ;SE INTRODUCE EL NUMERO 0retlw b'00000110' ;SE INTRODUCE EL NUMERO 1retlw b'01011011' ;SE INTRODUCE EL NUMERO 2retlw b'01001111' ;SE INTRODUCE EL NUMERO 3retlw b'01100110' ;SE INTRODUCE EL NUMERO 4retlw b'01101101' ;SE INTRODUCE EL NUMERO 5retlw b'01111101' ;SE INTRODUCE EL NUMERO 6retlw b'00000111' ;SE INTRODUCE EL NUMERO 7retlw b'01111111' ;SE INTRODUCE EL NUMERO 8retlw b'01101111' ;SE INTRODUCE EL NUMERO 9retlw b'01110111' ;SE INTRODUCE LA LETRA Aretlw b'11111111' ;SE INTRODUCE LA LETRA Bretlw b'00111001' ;SE INTRODUCE LA LETRA Cretlw b'01011110' ;SE INTRODUCE LA LETRA Dretlw b'01111001' ;SE INTRODUCE LA LETRA Eretlw b'01110001' ;SE INTRODUCE LA LETRA Fgoto _VACIAR
END
LAYOUT
SIMULACION
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP1 17
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD 40RB6/PGC 39
RB538
RB437
RB3/PGM36
RB2 35RB1
34RB0/INT
33
RD7/PSP7 30RD6/PSP6 29RD5/PSP5
28RD4/PSP4
27RD3/PSP3
22RD2/PSP2 21
RC7/RX/DT 26RC6/TX/CK 25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U2
PIC16F877A
Parte 2.3Realizar 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 rotación 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=16f877Ainclude <p16f877A.inc>CONT EQU 0X20AUX EQU 0X19TEMP1 EQU 0X18
org 0x00nop
_INICIO
bsf STATUS,RP0 ;Ir banco 1bcf STATUS,RP1clrf TRISC ;PC salidamovlw .125 ;Valor a escribir en el registro de configuración movwf PR2 ;Configuracion de las cuantas del PR2
bcf STATUS,RP0 ;Ir banco 0bcf STATUS,RP1movlwb'01001011'
movwf T2CONclrf TMR2 ;TMR2=0 inicializamos el contador en ceroclrf PORTCmovlw.67
movwf CONT ;CONT=W
_SECUENCIA1
movlwb'00000001' ;SE PRENDE LED DEL BIT 0movwfPORTCcall _RETARDO_06call _VERIFICAmovlwb'00000010' ;SE PRENDE LED DEL BIT 1movwfPORTCcall _RETARDO_06call _VERIFICAmovlwb'00000100' ;SE PRENDE LED DEL BIT 2movwfPORTCcall _RETARDO_06call _VERIFICAmovlwb'00001000' ;SE PRENDE LED DEL BIT 3movwfPORTCcall _RETARDO_06call _VERIFICAmovlwb'00010000' ;SE PRENDE LED DEL BIT 4movwfPORTCcall _RETARDO_06call _VERIFICA
movlwb'00100000' ;SE PRENDE LED DEL BIT 5movwfPORTCcall _RETARDO_06call _VERIFICAmovlwb'01000000' ;SE PRENDE LED DEL BIT 6movwfPORTCcall _RETARDO_06call _VERIFICAmovlwb'10000000' ;SE PRENDE LED DEL BIT 7movwfPORTCcall _RETARDO_06call _VERIFICAgoto _SECUENCIA1
_VERIFICAdecfsz CONT,Freturnbcf STATUS,Zmovlw.16
movwf CONT ;CONT=Wgoto _SECUENCIA2
_SECUENCIA2
movlwb'00000100' ;SE PRENDE LED DEL BIT 2movwfPORTCcall _RETARDO_025call _VERIFICA2movlwb'00001000' ;SE PRENDE LED DEL BIT 3movwfPORTCcall _RETARDO_025call _VERIFICA2movlwb'00010000' ;SE PRENDE LED DEL BIT 4movwfPORTCcall _RETARDO_025call _VERIFICA2movlwb'00100000' ;SE PRENDE LED DEL BIT 5movwfPORTCcall _RETARDO_025call _VERIFICA2movlwb'01000000' ;SE PRENDE LED DEL BIT 6movwfPORTCcall _RETARDO_025call _VERIFICA2movlwb'10000000' ;SE PRENDE LED DEL BIT 7movwfPORTCcall _RETARDO_025call _VERIFICA2movlwb'00000001' ;SE PRENDE LED DEL BIT 0movwfPORTCcall _RETARDO_025
call _VERIFICA2movlwb'00000010' ;SE PRENDE LED DEL BIT 1movwfPORTCcall _RETARDO_025call _VERIFICA2goto _SECUENCIA2
_VERIFICA2decfsz CONT,Freturnbcf STATUS,Zmovlw.67
movwf CONT ;CONT=Wgoto _SECUENCIA1
_RETARDO_06movlw.3movwfAUX
_ESPERA1clrf TMR2bcf PIR1, TMR2IFbsf T2CON, TMR2ON
_ESPERAbtfss PIR1, TMR2IFgoto _ESPERA decfsz AUX,F goto _ESPERA1bcf T2CON, TMR2ONreturn
_RETARDO_025movlw.12movwfAUX
_ESPERA01clrf TMR2bcf PIR1, TMR2IFbsf T2CON, TMR2ON
_ESPERA0btfss PIR1, TMR2IFgoto _ESPERA0 decfsz AUX,F goto _ESPERA01bcf T2CON, TMR2ONreturn
END
LAYOUT
SIMULACION
RA0/AN02
RA1/AN13
RA2/AN2/VREF-/CVREF4
RA4/T0CKI/C1OUT6
RA5/AN4/SS/C2OUT7
RE0/AN5/RD8
RE1/AN6/WR9
RE2/AN7/CS10
OSC1/CLKIN13
OSC2/CLKOUT14
RC1/T1OSI/CCP216
RC2/CCP1 17
RC3/SCK/SCL18
RD0/PSP019
RD1/PSP120
RB7/PGD 40RB6/PGC 39
RB538
RB437
RB3/PGM36
RB2 35RB1
34RB0/INT
33
RD7/PSP7 30RD6/PSP6 29RD5/PSP5
28RD4/PSP4
27RD3/PSP3
22RD2/PSP2 21
RC7/RX/DT 26RC6/TX/CK 25
RC5/SDO24
RC4/SDI/SDA23
RA3/AN3/VREF+5
RC0/T1OSO/T1CKI15
MCLR/Vpp/THV1
U3
PIC16F877A
00000100
5. CUESTIONARIO.1. Explicar las diferencias básicas de los distintos módulos de temporización de los
microcontroladores PIC.
En los temporizadores del microcontrolador, se tienen distintas características 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í también es donde aparecen distintas características 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 tendrán mucho significado
2. ¿Cuál es la frecuencia mínima de refrescamiento en la multiplicación de puertos?
El tiempo de refrescamiento debe ser bastante rápido, casi siendo instantáneo, ya que se necesita que se cambie el número 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 percepción, pero bastante notable y suficiente para el microcontrolador. Este tiempo suele estar por el orden de los microsegundos.
6. CONCLUSIONES
Tras finalizar la práctica 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 programación de los microcontroladores. Estar familiarizado con el repertorio de instrucciones de los PIC asociados a la configuración de los puertos. Ser capaz de manejará y configurar los distintos módulos de temporización en los microcontroladores PIC, para su utilización en aplicaciones como contadores de eventos o como temporizadores. Habiendo culminados los objetivos que se buscaban cubrir se da por terminada esta práctica de laboratorio.
7. WEBGRAFÍA
Ledezma, J. H., 2010. BANCO DE TESIS. [En línea] Available at: http://dpicuto.edu.bo/tesis/facultad-nacional-de-ingenieria/carrera-de-ingenieria-electrica-y-electronica/1746-diseno-e-implementacion-de-un-controlador-logico-programable-mediante-el-microcontrolador-16f877a.html[Último acceso: 11 marzo 2015].
S., I., 2007. PIC 16F877. [En línea] Available at: http://picmicrocontroller877.blogspot.com/2007/08/set-de-instrucciones.html[Último acceso: 11 Marzo 2015].