Professional Documents
Culture Documents
Paralelo: # 2
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.
ENTRADAS
PIC16F887
DISPLAY 7 SEGMENTOS
INICIO
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.
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
;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
;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
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
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
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
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
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
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
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
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
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
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
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.
;Global ;GIE=0 (BIT interrupciones ;globales INTCON INTCON PIE1 b'00000001' PIE1
7);
habilita
;enabled
PORTB PORTB
loop
; Permanece en el lazo
;************************ INTERRUPT ROUTINE ********************** ; Inicio de rutina de interrupcin llamado desde org 0x04 ;******************************************************** *********** inter incf PORTB ; register PORTB by 1 Increments
;******************************************************** *********** ; 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
D1
D2
D3
D4
D5
D6
D7
D8
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)