You are on page 1of 13

ESCUELA SUPERIOR POLITCNICA DEL LITORAL FIEC Laboratorio de Microcontroladores REPORTE DE PROYECTO # 1 Tema #5 Torniquete Metrova Alumno Erick

Santiago Melgar Jara

Paralelo: # 2

Fecha de presentacin: 10/12/2013

2013 2 TRMINO

1.- ENUNCIADO DEL PROYECTO -El sistema deber contar con una botonera que ser controlada por el cobrador de pasajes -Cada que se active dicha botonera se sealizara despus de 3seg que ya pude pasar el usuario por medio del encendido de una luz verde mientras pasa dicho tiempo deber estar encendida una luz roja. -Por cada activacin de dicha botonera se deber llevar un conteo de la misma y deber ser presentado en display de 7 segmentos con el siguiente formato centenas, decenas, unidades(C D U). -El sistema tambin deber contar con un botn de reseteo para el conteo en los display.

2.- DIAGRAMA DE BLOQUES

ENTRADAS

PIC16F887

DISPLAY 7 SEGMENTOS

3.- DIAGRAMA DE FLUJO FUNCIONAL DEL PROGRAMA PRINCIPAL Y DE LAS SUBRUTINAS

INICIO

CONFIGURACION DE LOS PUERTOS

PORTB=W

W=0x55

NO

RA=0

SI

W=0xAA

4.- DESCRIPCIN DEL ALGORITMO O ESTRATEGIA UTILIZADA. a) b) c) d) Se configura los puertos A y B para empezar el trabajo. Se realiza la lectura del estado del RA. Si RA=0, W tendra el valor de 10101010. Si RA=1, W tendra el valor de 01010101.

e) PORTB se le asignara el valor de W. f) Se vuelve a repetir el lazo.

5.- LISTADO DEL PROGRAMA FUENTE EN LENGUAJE ENSAMBLADOR CON COMENTARIOS EN LAS LNEAS DE CDIGO QUE CONSIDERE FUNDAMENTALES
; PROYECTO 5: TORNIQUETE METROVIA ;***************************************************************************** ***************************************** ; AUTOR: ERICK SANTIAGO MELGAR JARA ; USA 3 DISPLAY DE 7 SEGMENTOS ;***************************************************************************** ***************************************** ; DESCRIPCION: ;-El sistema deber contar con una botonera que ser controlada por el cobrador de pasajes ;-Cada que se active dicha botonera se sealizara despus de 3seg que ya pude pasar el usuario por medio del encendido ; de una luz verde (1 seg) mientras pasa dicho tiempo deber estar encendida una luz roja. ;-Por cada activacin de dicha botonera se deber llevar un conteo de la misma y deber ser presentado en display de ;7 segmentos con el siguiente formato centenas, decenas, unidades(C D U). ;-El sistema tambin deber contar con un botn de reseteo para el conteo en los display. ;***************************************************************************** ***************************************** ;DIRECTIVAS INICIALES LIST p=16F887 ;Tipo de microcontrolador INCLUDE P16F887.INC ;Define los SFRs y bits del ;P16F887 __CONFIG _CONFIG1, _CP_OFF&_WDT_OFF&_XT_OSC ERRORLEVEL CBLOCK contador unidades uni_cod decenas dec_cod centenas cen_cod temp ENDC -302 0X020 ;Cuenta 300 interrupciones ;Setea par?metros de ;configuraci?n ;Deshabilita mensajes de ;advertencia por cambio ;bancos

;***************************************************************************** ***************************************** ;PROGRAMA ORG 0x00 ;Vector de RESET GOTO MAIN ORG 0x04 ;Vector de interrupcin GOTO Interrupcion ;Va a rutina de interrupcin GOTO MAIN ;DURANTE LA INTERRUPCION SE CUENTAN 300 INTERRUPCIONES ;PARA COMPLETAR 10x300=3000ms. (3seg) Interrupcion

bsf bcf

PORTA, 1 PORTA, 0

btfsc temp, 0 goto loop2 loop btfsc PORTA, 3 goto loop loop2 btfss PORTA, 3 goto loop2 bsf bsf bcf movf call movwf movf movwf movf call movwf movf movwf movf call movwf movf movwf decfsz goto bcf INCF movlw subwf btfss goto clrf incf movlw subwf btfss goto clrf clrf incf movlw subwf btfss goto clrf cont movlw .300 movwf contador Seguir bcf INTCON,T0IF movlw .217 movwf TMR0 retfie MAIN ;Repone flag del TMR0 ;Repone el TMR0 con ~.39 ;Retorno de interrupcin ;Precarga contador con 300 temp, 0 PORTA, 0 PORTA, 1 unidades,w tabla uni_cod uni_cod,w PORTB decenas,w tabla dec_cod dec_cod,w PORTC centenas, w tabla cen_cod cen_cod, w PORTD contador,f Seguir temp, 0 unidades,f .10 unidades,w STATUS,2 cont unidades decenas .10 decenas,w STATUS,2 cont decenas unidades centenas .10 centenas,w STATUS,2 cont centenas

;Cuenta espacios de 10ms ;An, no son 300 interrupciones ;Ahora s 10x300=3000ms=3seg

;SETEO DE PUERTOS BANKSEL CLRF CLRF BANKSEL CLRF BSF CLRF CLRF CLRF ;INICIALIZACION BANKSEL CLRF CLRF CLRF CLRF CLRF CLRF bsf bcf bsf

ANSEL ANSEL ANSELH TRISB TRISA TRISA,3 TRISB TRISC TRISD PORTB PORTB PORTC PORTD unidades decenas centenas PORTA, 1 PORTA, 0 temp,0

;Selecciona el Bank1 ;PORTB configurado como ;PORTA 3 ENTRADA ;PORTB configurado como ;PORTC configurado como ;PORTD configurado como

salida salida salida salida

;Selecciona el Bank0 ;Borra latch de salida de PORTB ;Borra latch de salida de PORTC ;Borra latch de salida de PORTC

;El valor calculado para cargar en TMR0 es de 217 con un ;preescaler de 256 y a una frecuencia de 4MHz, para obtener ;una interrupcin cada 10mS. Clculo al final del ejercicio. ;PROGRAMACION DEL TMR0 banksel OPTION_REG movlw b'00000111' ;TMR0 como temporizador movwf OPTION_REG ;con preescaler de 256 BANKSEL TMR0 movlw .217 ;Valor decimal 217 movwf TMR0 ;Carga el TMR0 con 217

;PROGRAMACION DE INTERRUPCION movlw b'10100000' movwf INTCON movlw .300 movwf contador Loop nop goto Loop

;Activa la interrupcin del TMR0 ;Cantidad de interrupciones a contar ;N de veces a repetir la interrupcin

; TABLA DE CONVERSION tabla ADDWF ; PCL + W -> PCL ; El PCL se incrementa con el ; valor de W proporcionando un ; salto 0x3F ; Retorna con el cdigo del 0 0x06 ; Retorna con el cdigo del 1 0x5B ; Retorna con el cdigo del 2 0x4F ; Retorna con el cdigo del 3 0x66 ; Retorna con el cdigo del 4 0x6D ; Retorna con el cdigo del 5 0x7D ; Retorna con el cdigo del 6 0x07 ; Retorna con el cdigo del 7 0x7F ; Retorna con el cdigo del 8 0x67 ; Retorna con el cdigo del 9 ; Fin del programa fuente PCL,F

RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW END

;CALCULO DEL VALOR A CARGAR EN TMR0 A 4MHz ;PARA OBTENER TEMPORIZACION DE 10 MILISEGUNDOS

;CON PREESCALADOR DE 1:256 ;Temporizacin=(4Tosc)(256-ValorTMR0)(preescalador) ;0.010=(4Tosc)(256-ValorTMR0)(256) ;ValorTMR0=217

6.- COPIA IMPRESA DEL CIRCUITO ARMADO EN PROTEUS PARA LA SIMULACIN EN EL MOMENTO DE SU EJECUCIN AL INICIO

TORNIQUETE METROVIA
R26
RESET 10k

R27
10k

CENTENAS

DECENAS RC0 RC1 RC2 RC3 RC4 RC5 RC6 RB0 RB1 RB2 RB3 RB4 RB5 RB6

UNIDADES

U1
1 RA0 RA1 2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40 RE3/MCLR/VPP RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1 RA1/AN1/C12IN1RC3/SCK/SCL RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA RA3/AN3/VREF+/C1IN+ RC5/SDO RA4/T0CKI/C1OUT RC6/TX/CK RA5/AN4/SS/C2OUT RC7/RX/DT RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RD0 RD1 RB0/AN12/INT RD2 RB1/AN10/C12IN3RD3 RB2/AN8 RD4 RB3/AN9/PGM/C12IN2RD5/P1B RB4/AN11 RD6/P1C RB5/AN13/T1G RD7/P1D RB6/ICSPCLK RB7/ICSPDAT RE0/AN5 RE1/AN6 RE2/AN7 PIC16F887 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10

HABILITADOR

R1 R2 330 R3 330 R4 330 R5 330 R6 330 R7


330 330

RC0 RC1 RC2 RC3 RC4 RC5 RC6

RD0 RD1 RD2 RD3 RD4 RD5 RD6

RB0 RB1 RB2 RB3 RB4 RB5 RB6

R8 R9 330 R10 330 R11 330 R12 330 R13 R14 330
330 330

R15 R16 330 R17 330 R18 330 R19 330 R20 330 R21
330 330

RD0 RD1 RD2 RD3 RD4 RD5 RD6

RA0

R22
330

RA1

R23
330

D1
PASE

D2
ALTO

AL ACTIVAR LA BOTONERA

TORNIQUETE METROVIA
R26
RESET 10k

R27
10k

CENTENAS

DECENAS RC0 RC1 RC2 RC3 RC4 RC5 RC6 RB0 RB1 RB2 RB3 RB4 RB5 RB6

UNIDADES

U1
1 RA0 RA1 2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40 RE3/MCLR/VPP RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1 RA1/AN1/C12IN1RC3/SCK/SCL RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA RA3/AN3/VREF+/C1IN+ RC5/SDO RA4/T0CKI/C1OUT RC6/TX/CK RA5/AN4/SS/C2OUT RC7/RX/DT RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RD0 RD1 RB0/AN12/INT RD2 RB1/AN10/C12IN3RD3 RB2/AN8 RD4 RB3/AN9/PGM/C12IN2RD5/P1B RB4/AN11 RD6/P1C RB5/AN13/T1G RD7/P1D RB6/ICSPCLK RB7/ICSPDAT RE0/AN5 RE1/AN6 RE2/AN7 PIC16F887 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10

HABILITADOR

R1 R2 330 R3 330 R4 330 R5 330 R6 330 R7


330 330

RC0 RC1 RC2 RC3 RC4 RC5 RC6

RD0 RD1 RD2 RD3 RD4 RD5 RD6

RB0 RB1 RB2 RB3 RB4 RB5 RB6

R8 R9 330 R10 330 R11 330 R12 330 R13 R14 330
330 330

R15 R16 330 R17 330 R18 330 R19 330 R20 330 R21
330 330

RD0 RD1 RD2 RD3 RD4 RD5 RD6

RA0

R22
330

RA1

R23
330

D1
PASE

D2
ALTO

LUEGO DE LOS 3 SEG

TORNIQUETE METROVIA
R26
RESET 10k

R27
10k

CENTENAS

DECENAS RC0 RC1 RC2 RC3 RC4 RC5 RC6 RB0 RB1 RB2 RB3 RB4 RB5 RB6

UNIDADES

U1
1 RA0 RA1 2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40 RE3/MCLR/VPP RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1 RA1/AN1/C12IN1RC3/SCK/SCL RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA RA3/AN3/VREF+/C1IN+ RC5/SDO RA4/T0CKI/C1OUT RC6/TX/CK RA5/AN4/SS/C2OUT RC7/RX/DT RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RD0 RD1 RB0/AN12/INT RD2 RB1/AN10/C12IN3RD3 RB2/AN8 RD4 RB3/AN9/PGM/C12IN2RD5/P1B RB4/AN11 RD6/P1C RB5/AN13/T1G RD7/P1D RB6/ICSPCLK RB7/ICSPDAT RE0/AN5 RE1/AN6 RE2/AN7 PIC16F887 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10

HABILITADOR

R1 R2 330 R3 330 R4 330 R5 330 R6 330 R7


330 330

RC0 RC1 RC2 RC3 RC4 RC5 RC6

RD0 RD1 RD2 RD3 RD4 RD5 RD6

RB0 RB1 RB2 RB3 RB4 RB5 RB6

R8 R9 330 R10 330 R11 330 R12 330 R13 R14 330
330 330

R15 R16 330 R17 330 R18 330 R19 330 R20 330 R21
330 330

RD0 RD1 RD2 RD3 RD4 RD5 RD6

RA0

R22
330

RA1

R23
330

D1
PASE

D2
ALTO

CUENTA EN UNIDADES, DECENAS Y CENTENAS

TORNIQUETE METROVIA
R26
RESET 10k

R27
10k

CENTENAS

DECENAS RC0 RC1 RC2 RC3 RC4 RC5 RC6 RB0 RB1 RB2 RB3 RB4 RB5 RB6

UNIDADES

U1
1 RA0 RA1 2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40 RE3/MCLR/VPP RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1 RA1/AN1/C12IN1RC3/SCK/SCL RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA RA3/AN3/VREF+/C1IN+ RC5/SDO RA4/T0CKI/C1OUT RC6/TX/CK RA5/AN4/SS/C2OUT RC7/RX/DT RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RD0 RD1 RB0/AN12/INT RD2 RB1/AN10/C12IN3RD3 RB2/AN8 RD4 RB3/AN9/PGM/C12IN2RD5/P1B RB4/AN11 RD6/P1C RB5/AN13/T1G RD7/P1D RB6/ICSPCLK RB7/ICSPDAT RE0/AN5 RE1/AN6 RE2/AN7 PIC16F887 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10

HABILITADOR

R1 R2 330 R3 330 R4 330 R5 330 R6 330 R7


330 330

RC0 RC1 RC2 RC3 RC4 RC5 RC6

RD0 RD1 RD2 RD3 RD4 RD5 RD6

RB0 RB1 RB2 RB3 RB4 RB5 RB6

R8 R9 330 R10 330 R11 330 R12 330 R13 R14 330
330 330

R15 R16 330 R17 330 R18 330 R19 330 R20 330 R21
330 330

RD0 RD1 RD2 RD3 RD4 RD5 RD6

RA0

R22
330

RA1

R23
330

D1
PASE

D2
ALTO

TORNIQUETE METROVIA
R26
RESET 10k

R27
10k

CENTENAS

DECENAS RC0 RC1 RC2 RC3 RC4 RC5 RC6 RB0 RB1 RB2 RB3 RB4 RB5 RB6

UNIDADES

U1
1 RA0 RA1 2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40 RE3/MCLR/VPP RC0/T1OSO/T1CKI RC1/T1OSI/CCP2 RA0/AN0/ULPWU/C12IN0RC2/P1A/CCP1 RA1/AN1/C12IN1RC3/SCK/SCL RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA RA3/AN3/VREF+/C1IN+ RC5/SDO RA4/T0CKI/C1OUT RC6/TX/CK RA5/AN4/SS/C2OUT RC7/RX/DT RA6/OSC2/CLKOUT RA7/OSC1/CLKIN RD0 RD1 RB0/AN12/INT RD2 RB1/AN10/C12IN3RD3 RB2/AN8 RD4 RB3/AN9/PGM/C12IN2RD5/P1B RB4/AN11 RD6/P1C RB5/AN13/T1G RD7/P1D RB6/ICSPCLK RB7/ICSPDAT RE0/AN5 RE1/AN6 RE2/AN7 PIC16F887 15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10

HABILITADOR

R1 R2 330 R3 330 R4 330 R5 330 R6 330 R7


330 330

RC0 RC1 RC2 RC3 RC4 RC5 RC6

RD0 RD1 RD2 RD3 RD4 RD5 RD6

RB0 RB1 RB2 RB3 RB4 RB5 RB6

R8 R9 330 R10 330 R11 330 R12 330 R13 R14 330
330 330

R15 R16 330 R17 330 R18 330 R19 330 R20 330 R21
330 330

RD0 RD1 RD2 RD3 RD4 RD5 RD6

RA0

R22
330

RA1

R23
330

D1
PASE

D2
ALTO

7.- CONCLUSIONES Se pudo comprobar y observar que la funcin de timer0 hace la misma funcin de un delay, dado que da un retardo, cambia la forma de uso ya que podemos modificar la forma, como para retardos o contador. Esto lo

hace mediante el desborde de un puerto a su mximo valor dado aqu el tiempo de retardo. Al realizar los cambios respectivos de la practica, pudimos observar y comprobar que la funcin del timer0 puede realizar la misma funcin del timer1, siempre y cuando configuremos los registros como lo seala el datasheet, ya sean habilitando los enable, como dar el respectivo uso de las banderas. Pudimos observar que al realizar la segunda parte, podemos ver que se puede trabajar con un reloj externo, donde me da el tiempo y frecuencia de las luces de los leds, donde pudimos compara con la botonera que le dimos la velocidad de la luz de leds sea muy lenta ya que va avanzando con cada vez que presiono la botonera.

8.- RECOMENDACIONES Tomar en cuenta las lneas de cdigos de Mplab, que al pedir cambios de timer0 a timer1 como nos pide en la primera parte, tomar en consideracin los bancos seleccionados ya que no se encuentran en el mismo banco. Para mayor compresin de las lneas de cdigo se recomienda ver el datasheet y dirigirse a los comando que usa tmer0 para poder saber que enables debo habilitar y que banderas deben estar. Para evitar confusiones se recomienda que a cada resistencia le d su respectiva etiqueta similar a la salida del PIC 16f887, as podr tener una mayor visualizacin de cada resistencia y leed, y ser ms ordenado.

ANEXO DE RESPUESTAS A PRACTICA 4 INTEGRANTE 1: ERICK SANTIAGO MELGAR JARA

INTEGRANTE 2: DANNY FERNANDO CRUZ PALAQUIBAY PARALELO: 2 GRUPO: 1 RESPONDER


1) Modifique el programa de la parte 1 de tal manera que el funcionamiento sea el mismo pero la temporizacin venga dada por el TMR1 y ya no por el TMR0. ;SETEO DE PUERTOS Y REGISTROS main banksel TRISB ;Selects bank containing register TRISB clrf TRISB ;All port B pins are configured as outputs banksel ANSEL ;Bank containing register ANSEL clrf ANSEL ;Clears registers ANSEL and ANSELH clrf ANSELH ;All pins are digital banksel ;TMR0 divisor ;al TMR0 ;TOCS=0 (BIT 5); TMR0 origen de pulsos ;Fosc/4 bsf movlw T1CON ; Bank containing register OPTION_REG ;PSA =0 (BIT 3); se aplica el

T1CON,TMR1ON b'11000000' Timer 0 y

;habilita interrupcin por

banksel movwf banksel movlw movwf

;Global ;GIE=0 (BIT interrupciones ;globales INTCON INTCON PIE1 b'00000001' PIE1

7);

habilita

;enabled

banksel clrf loop nop goto

PORTB PORTB

; Bank containing register PORTB ; Clears Port B

loop

; Permanece en el lazo

;************************ INTERRUPT ROUTINE ********************** ; Inicio de rutina de interrupcin llamado desde org 0x04 ;******************************************************** *********** inter incf PORTB ; register PORTB by 1 Increments

BANKSEL PIR1 bcf PIR1,TMR1IF retfie routine

; Clears interrupt Return from interrupt

;******************************************************** *********** ; IMPORTANTE: rutina de interrupcin termina en retfie ;******************************************************** *********** End ; Fin de programa

R9
10k

U1
15 16 17 18 23 24 25 26 19 20 21 22 27 28 29 30 8 9 10 RC0/T1OSO/T1CKI RE3/MCLR/VPP RC1/T1OSI/CCP2 RC2/P1A/CCP1 RA0/AN0/ULPWU/C12IN0RC3/SCK/SCL RA1/AN1/C12IN1RC4/SDI/SDA RA2/AN2/VREF-/CVREF/C2IN+ RC5/SDO RA3/AN3/VREF+/C1IN+ RC6/TX/CK RA4/T0CKI/C1OUT RC7/RX/DT RA5/AN4/SS/C2OUT RA6/OSC2/CLKOUT RD0 RA7/OSC1/CLKIN RD1 RD2 RB0/AN12/INT RD3 RB1/AN10/C12IN3RD4 RB2/AN8 RD5/P1B RB3/AN9/PGM/C12IN2RD6/P1C RB4/AN11 RD7/P1D RB5/AN13/T1G RB6/ICSPCLK RE0/AN5 RB7/ICSPDAT RE1/AN6 RE2/AN7 PIC16F887
RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

1 2 3 4 5 6 7 14 13 33 34 35 36 37 38 39 40 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7

D1

D2

D3

D4

D5

D6

D7

D8

LED-GREEN LED-GREEN LED-GREEN LED-GREEN LED-GREEN LED-GREEN LED-GREEN LED-GREEN

R1
1k

R2
1k

R3
1k

R4
1k

R5
1k

R6
1k

R7
1k

R8
1k

2)

Modifique el programa de la parte 2 de tal forma que cada 20 pulsos en RC0 se genere un cambio de estado en PORTB. (Los pulsos en RC0 obligan a usar el TMR1 en modo contador)

You might also like