Está en la página 1de 11

DESARROLLO DE LOS EJERCICIOS

Ejercicio 1
A. Planteamiento del problema
se desea configurar el encendido intermitente en forma intercalada de 6 led (2 grupos de tres
leds) de tal forma que si el grupo 1 esta encendido el grupo 2 está apagado y así sucesivamente
de forma automática utilizando el PIC 16F887

B. Cuadro de entradas y salidas


Nro. bit configuración función
01 MCLR ENTRADA RESET
02 RBO,RB1,RB2 SALIDAS ENCENDIDO DE LEDS
03 RB5,RB6,RB7 SALIDAS APAGADO DE LEDS

C. Diagrama de flujo

Inicio
RETARDO

Configuración de salida del


puerto B

CONTADOR2= 0x21
CONTADOR1 = 0x64
Enviar 1 a las salidas CONTADOR0 = 0x64
RBO, RB1, RB2
Enviar 0 a las salidas
Decrementar
RB5, RB6,RB7
CONTADOR0

NO
Llamada RETARDO
Decrementar
CONTADOR 0

Enviar 0 a las salidas SI


Decrementar
RBO, RB1, RB2 CONTADOR0
Enviar 1 a las salidas
RB5, RB6,RB7

Contador 0
NO

Llamada RETARDO SI

Decrementar
CONTADOR0

FIN

Contador 0 NO

SI

D. Programa RETORNO
#include "p16f887.inc"
List p=16f887
; CONFIG1
; __config 0xEFF1
__CONFIG _CONFIG1, _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON &
_CP_OFF & _CPD_OFF & _BOREN_ON & _IESO_ON & _FCMEN_ON & _LVP_OFF
; CONFIG2
; __config 0xFFFF
__CONFIG _CONFIG2, _BOR4V_BOR40V & _WRT_OFF
;** INICIALIZACION DE REGISTROS PARA LOS CONTADORES **************
CONTADOR0 EQU 0X22
CONTADOR1 EQU 0X21
CONTADOR2 EQU 0X20
;************************ INICIO DE PROGRAMA ************************
org 0x00 ; Direccion de la Primera Instruccion
goto PRINCIPAL ; Ir a "PRINCIPAL"
;****************** PROGRAMA PRINCIPAL ******************************
PRINCIPAL ; inicio del programa principal
BSF STATUS,RP0
CLRF TRISB ;configuracion del puerto B
BCF STATUS, RP0
SECUENCIA ; inicio de la secuencia de encendido y apagado
;DIVIDIMOS LOS BITS EN DOS GRUPOS DE 4 YA QUE SON 8
movlw B'11100000' ;la mitad de los bits esta iniciandose encendido y el otro
apagado
movwf PORTB
call RETARDO ;hace un llamado a la subrutina
movlw B'00000111' ;es lo contrario al anterior
movwf PORTB
call RETARDO ;hace un llamado a la subrutina
goto SECUENCIA ;Da comienzo al bucle

; **************subrutina de retardo de 1 segundo******************


; ******************del contador*******************************
RETARDO
movlw 0x21 ; w = 33
movwf CONTADOR2 ; contador2 = w
RETA2
movlw 0x64 ; w = 100
movwf CONTADOR1 ; contador1 = w
RETA1
movlw 0x64 ; w = 100
movwf CONTADOR0 ; contador0 = w
RETA0
decfsz CONTADOR0, 1 ; decrementa contador0 (si es 0 salta a la siguiente
instruccion)
goto RETA0
decfsz CONTADOR1, 1

goto RETA1
decfsz CONTADOR2, 1
goto RETA2
return ; regresa al programa principal
end ; fin de lA programación

E. Simulación:
EJERCICIO 3
A. Planteamiento del problema

se desea configurar la programación de dos semáforos en un cruce de dos vías (semáforo para
autos y semáforos para peatones) tal que para el semáforo de autos tal que para el semáforo de
autos: La luz roja debe durar 10 segundos, verde 8 segundos y verde-ámbar 2 segundos. de
forma inversa para el otro semáforo de autos y equivalente para el semáforo de personas.

Implementar el circuito utilizando el PIC 16F887.


tiempo Semáforo 1 Semáforo 2

autos peatones autos peatones

T1=8s verde rojo rojo Verde

T2 = 2s Verde-ámbar rojo rojo Rojo

T3=8s rojo verde Verde Verde

T4=2s rojo rojo Verde - ámbar rojo

Cíclico – pasa al tiempo 1

B. Cuadro de entradas y salidas

N° bit configuración función

01 RA3 ENTRADA

02 RC1,RC2,RC3 SALIDAS Semáforo 1 vial

03 RC4,RC5 SALIDAS Semáforo 1 peatonal

04 RD0,RD1,RD2 SALIDAS Semáforo 2 vial

05 RD3,RD4 SALIDAS Semáforo 2 peatonal

C. Diagrama de flujo
Inicio

Semaforo, verde, Tiempo

Sí No
Semáforo=verde

Semáforo 1 = Verde Tiempo = Tiempo + 8 Fin


Semáforo 2 = Rojo
Semáforo 1 = Amarillo
Semáforo 2 = Rojo

Tiempo = + 2

Semáforo 1 = Rojo
Semáforo 2 = Rojo

Tiempo = 0

Tiempo = + 2

Semáforo 1 = Rojo
Semáforo 2 = Amarillo

Tiempo = + 2

Semáforo 1 = Rojo
Semáforo 2 = Verde

Tiempo = + 8

Semáforo 1 = Rojo
Semáforo 2 = Amarillo

Tiempo = + 2

Semáforo 1 = Rojo
Semáforo 2 = Rojo

Tiempo = 0

Tiempo = + 2

Tiempo = + 2

Semáforo 1 = Rojo
Semáforo 2 = Rojo

D. Programa
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOREN_OFF &
_CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDTE_OFF &
_FOSC_INTRC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF;

LIST P=16F887
INCLUDE "P16F887.INC"

;ASIGNACION DE VARIABLES--------------------------
CONTADOR1 EQU 0X0C ; Registro auxiliar
CONTADOR2 EQU 0X0D
CONTADOR3 EQU 0X0F
;INICIO DEL PROGRAMA ---------------------------
ORG 0x00
GOTO INICIO
;SETEO DE PUERTOS ------------------------------------
INICIO
CLRF CONTADOR1
CLRF CONTADOR2
CLRF CONTADOR3
BANKSEL PORTA ;
CLRF PORTA ;
BANKSEL ANSEL ;
CLRF ANSEL ; DIGITAL I/O
BANKSEL TRISA ;
MOVLW b'11111111' ; PORT A ENTRAD
MOVWF TRISA ;
BANKSEL PORTC
CLRF PORTC ; Puerta C como salida
BANKSEL TRISC ;
MOVLW b'00000000' ;
MOVWF TRISC ; CLRF TRISC
BANKSEL PORTD
CLRF PORTD ; Puerta D como salida
BANKSEL TRISD ; Configuro el Puerto D como salida
MOVLW b'00000000' ;
MOVWF TRISD ;
; PARTE PRINCIPAL DEL PROGRAMA ------------------------
ONOFF
BANKSEL PORTA
BTFSC PORTA,5 ;PREGUNTO POR BOTON PREGUNTO SI RA5 ==0 ES CERO
GOTO ONOFF ; FALSO NO ES CERO RA3==1

SWITCH
BANKSEL PORTA
BTFSS PORTA,3 ; RA3==1 PREGUNTO POR ON/OF
GOTO MODO_DIA ; VERDAD RA3==1

MODO_DIA
BSF PORTC,1 ; ROJO PRINCIPAL
BSF PORTC,5 ;PASO PEATON PRINCIPAL
BSF PORTD,2 ;VERDE SECUNDARIA
BSF PORTD,3 ;ALTO PEATON SECUNDARIA
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS

BCF PORTC,1
CLRF PORTC ;PRINCIPAL
CLRF PORTD ;SECUNDARIA
BSF PORTC,1 ;ROJO
BSF PORTC,5 ;PASO PEATON PRINCIPAL
BSF PORTC,2 ;AMARILLO
BSF PORTC,5 ;PASO PEATON PRINCIPAL
BSF PORTD,3 ;ALTO PEATON SECUNDARIA
BSF PORTD,1 ;AMARILLO SECUNDARIA
BSF PORTD,3 ;ALTO PEATON SECUNDARIA
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS

BCF PORTC,1
CLRF PORTC
CLRF PORTD
BSF PORTC,3 ;VERDE
BSF PORTC,4 ;ALTO PEATON PRINCIPAL
BSF PORTD,0 ;ROJO
BSF PORTD,4 ;PASO PEATON SECUNDARIA
BSF PORTC,4 ;ALTO PEATON PRINCIPAL
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS

BCF PORTC,1
CLRF PORTC
CLRF PORTD
BSF PORTC,2 ;AMARILLO PRINCIPAL
BSF PORTC,4 ;ALTO PEATON PRINCIPAL
BSF PORTD,4 ;PASO PEATON SECUNDARIA
BSF PORTD,0 ;ROJO SECUNDARIA
BSF PORTD,1 ;AMARILLO SECUNDARIA
BSF PORTD,4 ;PASO PEATON SECUNDARIA
BSF PORTC,4 ;ALTO PEATON PRINCIPAL
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
CALL RETARDO_400MS
BCF PORTC,1
CLRF PORTC
CLRF PORTD
GOTO SWITCH
RETARDO_400MS
MOVLW 0X0
MOVWF CONTADOR1
MOVLW 0X08
MOVWF CONTADOR2
MOVLW 0X08
MOVWF CONTADOR3
RETARDO1
DECFSZ CONTADOR1,F
GOTO RETARDO1
DECFSZ CONTADOR2,F
GOTO RETARDO1
DECFSZ CONTADOR3,F
GOTO RETARDO1
RETURN

END

E. Simulación

También podría gustarte