Informe Labo 1 - Micros II

19
UNIVERSIDAD PRIVADA DEL VALLE FACULTAD DE INFORMATICA Y ELECTRONICA INGENIERIA ELECTRONICA CAMPUS TIQUIPAYA MICROPROCESADORES II Informe de Laboratorio Nº 1 PUERTOS DE ENTRADA Y SALIDA Grupo “A” Estudiante: Ariel Adrián Carvajal Pardo Docente: MSc. Ing. Gerson Pérez Villarroel Evaluación

description

Informe realizado de la practica de microporcesadores en la universidad del valle para la Materia de Micropocesadores I

Transcript of Informe Labo 1 - Micros II

UNIVERSIDAD PRIVADA DEL VALLEFACULTAD DE INFORMATICA Y ELECTRONICAINGENIERIA ELECTRONICA CAMPUS TIQUIPAYA

MICROPROCESADORES II

Informe de Laboratorio Nº 1

PUERTOS DE ENTRADA Y SALIDA

Grupo “A”

Estudiante: Ariel Adrián Carvajal Pardo

Docente: MSc. Ing. Gerson Pérez Villarroel

Cochabamba 12 de Marzo

Gestión I – 2015UNIVERSIDAD PRIVADA DEL VALLE

SERVICIOS DE LABORATORIO

LABORATORIOS DE DISEÑO ELECTRONICO II

Evaluación

PRACTICA Nº 1

PUERTOS DE ENTRADA Y SALIDA

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. Manejará y entenderá el funcionamiento de los pulsadores de acción momentánea y su

utilización con los microcontroladores. Manejará el concepto de tablas en la programación de microcontroladores en lenguaje

ensamblador.

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

4. PROCEDIMIENTO.

Parte 1.1Configurar dos puertos como entrada y un puerto como salida y realizar un programa que sume los datos ingresado en los puertos de entrada y muestre el resultado en el puerto configurado como salida.

CODIGO

list p=16F877Ainclude <P16F877A.INC>DATOB EQU 0X20

ORG 0X00nopnop

bsf STATUS,RP0 ;MOVIENDO AL BANCO 1bcf STATUS,RP1

movlw 0XFF ;CONFIGURANDO AL PUERTO B COMO ENTRADAmovwf TRISBmovlw 0XFF ;CONFIGURANDO AL PUERTO C COMO ENTRADAmovwf TRISCmovlw 0X06 ;CONFIGURANDO AL PUERTO A COMO DIGITALmovwf ADCON1movlw 0X00 ;CONFIGURANDO AL PUERTO A COMO SALIDAmovwf TRISAbcf STATUS,RP0 ;MOVIENDO AL BANCO 0bcf STATUS,RP1clrf PORTB ;LIMPIANDO LOS PUERTOS DE ENT Y SAL clrf PORTAclrf PORTC

_PRESIONARbtfss PORTB,7; ;SALTA SI ES 1goto _PRESIONAR

_SOLTAR

btfsc PORTB,7; ;SALTA SI ES 0goto _SOLTAR

_SUMAmovfwPORTB ;COPIANDO EL DATO LEIDO EN B AL REGISTROmovwfDATOBmovfwPORTC ;COPIANDO EL DATO LEIDO EN C AL REGISTROaddwf DATOB,W ;REALIZANDO LA SUMA DE LOS REGISTROSmovwfPORTA ;MOSTRANDO EL RESULTADO POR EL PUERTO Agoto _PRESIONAR

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

U2

PIC16F877A

0110000

11000000

001001

R210k

Parte 1.2Realizar un programa que compare los nibbles alto y bajo de un puerto configurado como entrada y muestre el resultado en tres LEDs conectados a otro puerto configurado como salida.Considere el puerto de entrada:

Nibble Alto Nibble BajoBit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0B3 B2 B1 B0 A3 A2 A1 A0

Y el puerto de salida:Condición LED 2 LED 1 LED 0

A<B 0 0 1A=B 0 1 0A>B 1 0 0

CODIGO

LIST P=16F877AINCLUDE <P16F877A.INC>DATO_B EQU 0X20DATO_A EQU 0X19CON_AD1 EQU b'00000110' ;SIEMPRE TIENE QUE SER EL VALOR 6, PARA CONFIGURAR EL ADCON1

ORG 0X00nopnop

bsf STATUS,RP0 ;MOVIENDO AL BANCO 1bcf STATUS,RP1movlw CON_AD1movwf ADCON1 ;PUERTO A COMO DIGITALmovlwb'00100000'movwfTRISA movlw B'11111111'movwf TRISB ;DEFINIENDO AL PUERTO B COMO ENTTRADAbcf STATUS,RP0 ;MOVIENDO AL BANCO 0bcf STATUS,RP1

_BUCLE

_PRESIONARbtfss PORTA,5; ;SALTA SI ES 1goto _PRESIONAR

_SOLTARbtfsc PORTA,5; ;SALTA SI ES 0goto _SOLTAR

movfw PORTB ;LEEMOS EL DATO DEL PUERTO B Y SE LO CARGA AL TRABAJO

movwfDATO_B ;MOVEMOS EL TRABAJO AL REGISTRO DATO_B

movwfDATO_Aandlw b'00001111' ;INTODUCIMOS EL LITERAL '00001111'movwfDATO_Bswapf DATO_A,FmovfwDATO_Aandlw b'00001111' ;INTODUCIMOS EL LITERAL '11110000'subwf DATO_B ;RESTANDO EL DATO_B CON EL TRABAJO (NIBBLE BAJO -

NIBBLE ALTO)

_COMP1btfsc STATUS,C ;COMPARANDO SI C==1 SALTA SI ES 0goto _COMP2 ;SALTA SI C ==0movlwb'00000100'goto _ESCRIBIR

_COMP2btfss STATUS,Z ;COMPARANDO SI Z==1 SALTA SI ES 0goto _COMP3 ;SALTA SI Z ==0movlwb'00000010'goto _ESCRIBIR

_COMP3movlwb'00000001' ;SI NINGUNO DE LOS ANTERIORES SE CUMPLE SE TIENE

EL TERCER CASO, Y SE CARGA SU VALOR

_ESCRIBIRmovwf PORTAgoto _BUCLE

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/CCP2 16

RC2/CCP1 17

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

24RC4/SDI/SDA

23

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI15

MCLR/Vpp/THV1

U3

PIC16F877A

000

0000

0000

R310k

Parte 1.3Realizar un programa que rote a la izquierda el encendido de uno de ocho LEDs conectados a un puerto configurado como salida. La rotación se efectuará cada vez que se presione un pulsador conectado a otro puerto configurado como salida.

CODIGO

list p=16f887Ainclude <p16f877A.INC>

ORG 0X00nopnop

bsf STATUS,RP0 ;NOS MOVEMOS AL BANCO 1bcf STATUS,RP1

movlw b'00000000' ;DEFINIENDO PUERTO B COMO SALIDAmovwfTRISBmovlw 0X06 ;PUERTO A COMO DIGITALmovwf ADCON1movlw b'000001' ;DEFINIENDO PUERTO A COMO ENTRADAmovwfTRISAbcf STATUS,RP0 ;NOS MOVEMOS AL BANCO 0bcf STATUS,RP1bcf PORTA,0 ;VACIAMOS EL BIT 0 DEL PUERTO A

_INICIO;clrf PORTB

call _PRESIONARmovlwb'00000001' ;SE PRENDE LED DEL BIT 0movwfPORTBcall _PRESIONARmovlwb'00000010' ;SE PRENDE LED DEL BIT 1movwfPORTBcall _PRESIONARmovlwb'00000100' ;SE PRENDE LED DEL BIT 2movwfPORTBcall _PRESIONARmovlwb'00001000' ;SE PRENDE LED DEL BIT 3movwfPORTBcall _PRESIONARmovlwb'00010000' ;SE PRENDE LED DEL BIT 4movwfPORTBcall _PRESIONARmovlwb'00100000' ;SE PRENDE LED DEL BIT 5movwfPORTBcall _PRESIONARmovlwb'01000000' ;SE PRENDE LED DEL BIT 6movwfPORTBcall _PRESIONARmovlwb'10000000' ;SE PRENDE LED DEL BIT 7movwfPORTBgoto _INICIO

_PRESIONARbtfss PORTA,0 ;SALTA CUANDO SE PRESIONAgoto _PRESIONAR

_SOLTARbtfsc PORTA,0 ;SALTA SI ES CEROgoto _SOLTARreturn

ENDLAYOUT

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

U4

PIC16F877A

10000000

R410k

Parte 1.4Desarrollar un programa, utilizando el concepto de tablas, que cuente las veces que se presiona un pulsador. El conteo debe mostrarse 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=16f887Ainclude <p16f877A.INC>CONT EQU 0X20

ORG 0X00nopnop

bsf STATUS,RP0 ;NOS MOVEMOS AL BANCO 1bcf STATUS,RP1

movlw .6 ;CONFIGURAMOS EL PUERTO A COMO DIGITALmovwf ADCON1movlw b'00000001'movwf TRISAclrf TRISB

bcf STATUS,RP0 ;NOS MOVEMOS AL BANCO 0bcf STATUS,RP1clrf PORTBclrf CONT

_INICIO

_PRESIONARbtfss PORTA,0 ;SE BLOQUEA SI SE PRESIONO EL BOTONgoto _PRESIONAR

_SOLTARbtfsc PORTA,0 ;SOLO DEJA PASAR CUANDO SE SUELTA EL

BOTONgoto _SOLTAR

movfw CONTcall _TABLAmovwf PORTBincf CONTgoto _INICIO

_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

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

R110k

5. CUESTIONARIO.1. Explicar los algoritmos utilizados en los distintos programas de la práctica.

1 – El algoritmo que se diseñó para el primer caso simplemente suma dos datos ingresados por el puerto B y el puerto C y los muestra por el puerto A2-- El segundo diseño se encarga de comprar los nibbles altos y bajos de un puerto de entrada B y se los muestra por el puerto A, este programa se lo hizo mediante el uso del comando Swap, que intercambia los nibbles de las variables.3 – El tercer programa se encarga de hacer que la luz de un led se mueva hacia la izquierda siempre y cuando se le mande un pulso por la entrada.4 – El cuarto programa se lo diseño mediante el uso de tablas, y se encarga de mostrar los distintos valores (desde 0 – F) siempre y cuando se le mande el pulso de iniciación.

2. Explicar los diagramas de los circuitos utilizados en la práctica.

Los diagramas que se realizaron para diseñar los programas fueron más mentales, y fueron de poca referencia a la hora de programar, ya que simplemente se pensaron en los pasos que se debían realizar, como se los podían realizar, y se los ejecutaba. Y si existía algún error en el momento de la prueba del código, simplemente se modificaba dónde estaba el error, y se lo volvía a probar.

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. Manejar y entender el funcionamiento de los pulsadores de acción momentánea y su utilización con los microcontroladores. Y manejar el concepto de tablas en la programación de microcontroladores en lenguaje ensamblador. Habiendo culminados los objetivos que se buscaban cubrir se da por terminada esta práctica de laboratorio.

7. WEBGRAFÍA

8.

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].