Informe Labo 3 - Micros II

22
UNIVERSIDAD PRIVADA DEL VALLE FACULTAD DE INFORMATICA Y ELECTRONICA INGENIERIA ELECTRONICA CAMPUS TIQUIPAYA MICROPROCESADORES II Informe de Laboratorio Nº 3 INTERRUPCIONES Y TECLADOS MATRICIALES Grupo “A” Estudiante: Ariel Adrián Carvajal Pardo Docente: Msc. Ing. Gerson Pérez Villarroel Evaluación

description

Informe del labo 3 de la materia de Microprocesadores de la universidad del valle

Transcript of Informe Labo 3 - Micros II

Page 1: Informe Labo 3 - Micros II

UNIVERSIDAD PRIVADA DEL VALLEFACULTAD DE INFORMATICA Y ELECTRONICAINGENIERIA ELECTRONICA CAMPUS TIQUIPAYA

MICROPROCESADORES II

Informe de Laboratorio Nº 3

INTERRUPCIONES Y TECLADOS MATRICIALES

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

Page 2: Informe Labo 3 - Micros II

UNIVERSIDAD PRIVADA DEL VALLE

SERVICIOS DE LABORATORIO

LABORATORIOS DE DISEÑO ELECTRONICO II

PRACTICA Nº 3

INTERRUPCIONES Y TECLADOS MATRICIALES

1. OBJETIVOS.

Al finalizar la práctica el estudiante: Será capaz de manejará las distintas interrupciones en los microcontroladores PIC.

Manejará teclados matriciales para ampliar el rango de datos que se pueden introducir al microcontrolador.

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.

Page 3: Informe Labo 3 - Micros II

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)

Page 4: Informe Labo 3 - Micros II

3. MATERIALES

1 Multímetro Digital

Fuente de energía

Bread boardO

Protoboard

Resistencias de Diseño

Cables para Fuente

Microcontrolador 16F887A

Page 5: Informe Labo 3 - Micros II

LEDS

3 Display 7 Seg

Teclado Matricial

4. PROCEDIMIENTO.

Parte 3.1Desarrollar un programa, para encender y apagar, consecutivamente, un LED cuando se produzca un cambio de nivel en el pin que maneja la interrupción externa.

CODIGO

LIST P=16f877AINCLUDE <P16F877A.INC>

ORG 0X00NOPgoto INICIOORG 0X04NOPgoto INTERRUPCION

INICIObanksel TRISB ;BANCO1clrf TRISC ;PUERTO C SALIDA

Page 6: Informe Labo 3 - Micros II

bsf TRISB,0 ;RB0 ENTRADAmovlw 0X90 ;CONFIGURACION PARA INTERRUPCIONESmovwf INTCONbsf OPTION_REG,INTEDG ;INTERRUPCION EN FLANCO DE SUBIDA

banksel PORTB ;BANCO0clrf PORTC ;LIMPIAMOS SALIDAS

BUCLENOPgoto BUCLE

INTERRUPCIONbcf INTCON,1 ;BAJAMOS LA BANDERA DE INTERRUPCIONbtfss PORTC,0 ;¿C0=1?goto OFF ;NO, PRENDERbcf PORTC,0 ;SI, APAGAMOSretfie ;SALIMOS DE LA INTERRUPCION

OFFbsf PORTC,0retfie

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/CCP216

RC2/CCP117

RC3/SCK/SCL18

RD0/PSP019

RD1/PSP120

RB7/PGD40

RB6/PGC39

RB538

RB437

RB3/PGM36

RB235

RB134

RB0/INT33

RD7/PSP730

RD6/PSP629

RD5/PSP528

RD4/PSP427

RD3/PSP322

RD2/PSP221

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24

RC4/SDI/SDA23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U1

PIC16F877A

R1220

R2

220

D1

LED-BIRY

Page 7: Informe Labo 3 - Micros II

LAYOUT

Parte 3.2Realizar un programa, que realice un juego de luces, de encendido secuencial de un LED de izquierda a derecha. La velocidad de la secuencia debe poder variar aumentando o disminuyendo según se vayan presionando dos pulsadores conectados a dos pines configurados como interrupciones externas.

CODIGO

list p=16f877Ainclude <p16f877A.inc>

AUX EQU 0X19RAP EQU 0X18LENT EQU 0X17

ORG 0X00nopgoto _INICIOORG 0X04nopgoto _VERIFICA

_INICIO

bsf STATUS,RP0 ;Ir banco 1bcf STATUS,RP1clrf TRISD ;PD salidamovlwb'00001111'movwfTRISBmovlw0X90 ;CONFIGURACION PARA INTERRUPCIONESmovwfINTCONbsf OPTION_REG,INTEDG ;INTERRUPCION EN FLANCO DE SUBIDA

Page 8: Informe Labo 3 - Micros II

movlw .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 PORTBclrf PORTAmovlw.0movwfRAPmovlw.50movwfLENT

_DUERMEnopgoto _DUERME

_SECUENCIA1

movlwb'01010101' ;SE PRENDE LED DEL BIT 0movwfPORTDcall _RETARDO_025call _VERIFICAmovlwb'10101010' ;SE PRENDE LED DEL BIT 1movwfPORTDcall _RETARDO_025call _VERIFICAgoto _SECUENCIA1

_VERIFICAbcf INTCON,1 ;BAJAMOS LA BANDERA DE INTERRUPCIONbtfsc PORTB,0goto _SECUENCIA1btfsc PORTB,1goto _SECUENCIA2btfsc PORTB,2call _MASRAPIDObtfsc PORTB,3call _MASLENTO

retfie

_SECUENCIA2

movlwb'00110011' ;SE PRENDE LED DEL BIT 2movwfPORTDcall _RETARDO_025call _VERIFICAmovlwb'11001100' ;SE PRENDE LED DEL BIT 3

Page 9: Informe Labo 3 - Micros II

movwfPORTDcall _RETARDO_025goto _SECUENCIA2

_MASRAPIDO

movlw.5addwf RAPmovlw.4subwf LENTdecfszLENT,Freturngoto _FIN2return

_MASLENTO

movlw.5addwf LENTmovlw.4subwf RAPdecfszRAP,Freturngoto _FIN1return

_FIN1movlw.5subwf LENTmovlw.5addwf RAPreturn

_FIN2movlw.5addwf LENTmovlw.5subwf RAPreturn

_RETARDO_025

movf LENT,WmovwfAUX

_ESPERA1clrf TMR2bcf PIR1, TMR2IFbsf T2CON, TMR2ON

_ESPERAbtfss PIR1, TMR2IF

Page 10: Informe Labo 3 - Micros II

goto _ESPERA decfsz AUX,F goto _ESPERA1bcf T2CON, TMR2ONreturn

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/CCP216

RC2/CCP117

RC3/SCK/SCL18

RD0/PSP019

RD1/PSP120

RB7/PGD40

RB6/PGC39

RB538

RB437

RB3/PGM36

RB235

RB134

RB0/INT33

RD7/PSP730

RD6/PSP629

RD5/PSP528

RD4/PSP427

RD3/PSP322

RD2/PSP221

RC7/RX/DT26

RC6/TX/CK25

RC5/SDO24

RC4/SDI/SDA23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U1

PIC16F877A

01010101

0000

1

Page 11: Informe Labo 3 - Micros II

LAYOUT

Parte 3.3Realizar un programa que permita introducir datos de tres cifras por medio de un teclado matricial. Los datos deben ser visualizarse, desplazándose de izquierda a derecha, en tres displays conectados a un solo puerto.

CODIGOLIST P=16f877AINCLUDE <P16F877A.INC>D_IZQ EQU 0X20D_CENTRO EQU 0X21D_DCHA EQU 0X22LEIDO EQU 0X23AUX EQU 0X24W_tmp EQU 0X25STATUS_tmp EQU 0X26PCLATH_tmp EQU 0X27

ORG 0X00

nopgoto _INICIO

ORG 0X04nopbtfss INTCON,RBIF ; SI ENTRAMOS POR ERROR,ESTO NOS HARA SALIRretfiemovwfW_tmp ; GUARDAMOS EL CONTEXTO DEL PROGRAMAswapf STATUS,Wbanksel TRISAmovwfSTATUS_tmpmovfwPCLATHmovwfPCLATH_tmpcall _NOREBOTEgoto _TECLA ; SALTAMOS A LA RUTINA DE BUSQUEDA

Page 12: Informe Labo 3 - Micros II

_INICIObanksel TRISB ;BANCO1clrf TRISD ;PUERTO D SALIDAmovlw .6movwf ADCON1movlw b'11111000'movwf TRISAmovlw b'11110000'movwf TRISB ;PUERTO B ENTRADAclrw TRISD ;PUERTO D SALIDA

movlw b'10001000' ;CONFIGURACION PARA INTERRUPCIONES Y PULL UP Y TIMER

movwf INTCONmovlw b'01000110' ;CONFIGURACION PARA INTERRUPCIONES Y PULL

UP Y TIMERmovwf OPTION_REG ;INTERRUPCION EN FLANCO DE SUBIDAmovlw .217movwf TMR0

banksel PORTA ;BANCO0movlw b'00000111'movwf PORTAclrf PORTDclrf PORTBmovlw b'00111111'movwf D_IZQmovwf D_CENTROmovwf D_DCHA

_SLEEPnopcall _BARRIDOgoto _SLEEP

_BARRIDOmovfwAUX

bcf PORTA,2 ; ENCENDEMOS EL DISPLAY D_DCHAbsf PORTA,1 ;D_CENTRO OFFbsf PORTA,0 ;D_IZQ OFF

call _TABLAmovwfAUX

movfwD_CENTROmovwfD_IZQ

movfwD_DCHAmovwfD_CENTRO

Page 13: Informe Labo 3 - Micros II

movfwAUXmovwfD_DCHA

movfwD_DCHAmovwfPORTDcall _ESPERAbsf PORTA,2 ;D_DCHA OFFnopnop

bcf PORTA,1 ;D_CENTRO ONmovfwD_CENTROmovwfPORTDcall _ESPERAbsf PORTA,1 ;D_CENTRO OFFnopnop

bcf PORTA,2 ;D_IZQ ONmovfwD_IZQmovwfPORTDcall _ESPERAbsf PORTA,2 ;D_IZQ OFFnopnopreturn

_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 F

_BUSCAaddwf PCL,F ;CONT ES EL CONTADOR DEL PROGRAMAretlw 0X07 ;CODIGO DEL CARACTER 7retlw 0X04 ;CODIGO DEL CARACTER 4retlw 0X01 ;CODIGO DEL CARACTER 1

Page 14: Informe Labo 3 - Micros II

retlw 0X0A ;CODIGO DEL CARACTER Aretlw 0X08 ;CODIGO DEL CARACTER 8retlw 0X05 ;CODIGO DEL CARACTER 5retlw 0X02 ;CODIGO DEL CARACTER 2retlw 0X00 ;CODIGO DEL CARACTER 0retlw 0X09 ;CODIGO DEL CARACTER 9retlw 0X06 ;CODIGO DEL CARACTER 6retlw 0X03 ;CODIGO DEL CARACTER 3retlw 0X0B ;CODIGO DEL CARACTER Bretlw 0X0F ;CODIGO DEL CARACTER Fretlw 0X0E ;CODIGO DEL CARACTER Eretlw 0X0D ;CODIGO DEL CARACTER Dretlw 0X0C ;CODIGO DEL CARACTER C

_ESPERA ;SUBRUTINA DE RETARDO PARA 5msclrf INTCONmovlw .217movwf TMR0

_ESPERA1btfss INTCON,T0IFgoto _ESPERA1return

_NOREBOTEmovlw.7movwfAUX

_RETARDOcall _BARRIDOdecfszAUX,Fgoto _RETARDOreturn

_TECLA

movlw0XF0 ;INSTRUCCION PARA SALIR SI ENTRAMOSxorwf PORTB,W ;A LA INTERRUPCION POR "LIBERAR"btfsc STATUS,Zgoto _SALIR

movfwPORTBmovwfLEIDObsf STATUS,RP0 ;PASAMOS AL BANCO 1movlwb'00001111' ;PONEMOS RB4 A RB7 CONO SALIDASmovwfTRISB ;Y RB3 A RB0 CONO ENTRADASbcf STATUS,RP0 ;BANCO 0

movfwLEIDO ;CARGAMOS EL VALOR LEIDO EN WmovwfPORTBnop ;CICLOS PARA QUE SE EXTABLEZCA PORTBnop

Page 15: Informe Labo 3 - Micros II

btfss PORTB,0 ;BUSCAMOS 0 EN LA FILA0goto _FILA0

btfss PORTB,1 ;BUSCAMOS 0 EN LA FILA1goto _FILA1

btfss PORTB,2 ;BUSCAMOS 0 EN LA FILA2goto _FILA2

goto _FILA3 ;EL CERO TENDRA QUE ESTAR AQUI

_FILA0clrw ;SI EL 0 ESTA AQUI SE CARGA CEROSgoto _COLUMNA

_FILA1movlw0X01 ;SI EL 0 ESTA AQUI SE CARGA 1goto _COLUMNA

_FILA2movlw0X02 ;SI EL 0 ESTA AQUI SE CARGA 2goto _COLUMNA

_FILA3movlw0X03 ;SI EL 0 ESTA AQUI SE CARGA 3goto _COLUMNA

_COLUMNAbtfss PORTB,4 ;SI RB4 A 0 ES QUE ERA LA COLUMNA 4goto _COL3 ;VAMOS A COMPLETAR EL CODIGO

btfss PORTB,5 ;SI RB4 A 0 ES QUE ERA LA COLUMNA 4goto _COL2 ;VAMOS A COMPLETAR EL CODIGO

btfss PORTB,6 ;SI RB4 A 0 ES QUE ERA LA COLUMNA 4goto _COL1 ;VAMOS A COMPLETAR EL CODIGO

_COL0goto _CODIGO

_COL1iorlw b'00000100'goto _CODIGO

_COL2iorlw b'00001000'goto _CODIGO

_COL3iorlw b'00001100'goto _CODIGO

Page 16: Informe Labo 3 - Micros II

_CODIGOcall _BUSCAmovwfAUX

_SALIRmovfwPCLATH_tmpmovwfPCLATHswapf STATUS_tmp,Wmovwf STATUSswapf W_tmp,Fswapf W_tmp,Wgoto _BARRIDO

END

LAYOUT

Page 17: Informe Labo 3 - Micros II

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

U1

PIC16F877A

1 2 3

654

8 9

=

7

++CON 0

A

B

C

D

1 2 43

Q1BC557 Q2

BC557

Q3BC557

R14.7K

R24.7K R3

4.7K

R4

1.2KR5

1.2K

R6

1.2K

R6(2)

1

5. CUESTIONARIO.1. Explicar las diferencias de las interrupciones en los PIC de gama media y gama alta.

Las interrupciones entre los PICS de gama media y gama alta se diferencian de la manera en que en los de Gama alta se pueden realizar interrupciones el cualquiera de las pulsaciones de los distintos puertos, en cambio, los de gama baja únicamente pueden ser activados en el puerto de salida que tienen activadas esta opción, por ejemplo en el PIC

Page 18: Informe Labo 3 - Micros II

usado en el laboratorio el puerto B es el único puerto que puede recibir las interrupciones externas

2. Explicar las distintas formas que existen para conectar un teclado matricial a un microcontrolador.

Para poder conectar un teclado matricial a un microcontrolador, por ejemplo tomando como base el PIC usado en el laboratorio, se deben encender las resistencias pull-up del puerto B para que estas nos ayuden a diferenciar que tipo de botón fue la que el usuario apretó. Además de esto se debe definir qué tipo de lógica se utilizara para poder detectar el carácter que el usuario apretó, por ejemplo el de comparaciones sucesivas, o el de cambio de líneas altas por las bajas, y así poder determinar que tecla fue presionada.

6. CONCLUSIONES

Tras finalizar la práctica de laboratorio se lograron los objetivos que eran manejar las distintas interrupciones en los microcontroladores PIC. Manejar teclados matriciales para ampliar el rango de datos que se pueden introducir al microcontrolador. 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].