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
Informe realizado de la practica de microporcesadores en la universidad del valle para la Materia de Micropocesadores I
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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
_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].