Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
INSTITUTO TECNOLÓGICO DE LA LAGUNA PRÁCTICA 5 MICROCONTROLADORES Ingeniería Mecatrónica Semestre 6 Alumno: Christian Enrique González Robles No. Control: 19131206 2 INSTITUTO TECNOLÓGICO DE LA LAGUNA Práctica 5 Utilizando el PIC 16F877, hacer un programa que genere las siguientes secuencias de acuerdo a la posición de los interruptores 0 y 1. Considerando la arquitectura del microcontrolador determine los puertos a utilizar. Una vez que haya obtenido el código binario simule su funcionamiento en el PROTEUS. LED 7 LED 6 LED 5 LED 4 LED 3 LED 2 LED 1 LED 0 Bit 1 Bit 2 Secuencia 0 0 1 0 1 2 1 0 3 1 1 4 Secuencia 1 Secuencia 3 Secuencia 2 Secuencia 2 Secuencia 3 Secuencia 4 3 INSTITUTO TECNOLÓGICO DE LA LAGUNA Diagrama de Flujo Inicio Qué bit hay en la primera entrada? Qué bit hay en la segunda entrada? Qué bit hay en la segunda entrada? Secuencia 1 Secuencia 2 Secuencia 4 Secuencia 3 MOVLW B'00000001' MOVWF PORTB CALL RETARDO MOVLW B'00000010' MOVWF PORTB CALL RETARDO MOVLW B'00000100' MOVWF PORTB CALL RETARDO MOVLW B'00001000' MOVWF PORTB CALL RETARDO MOVLW B'00010000' MOVWF PORTB CALL RETARDO MOVLW B'00100000' MOVWF PORTB CALL RETARDO MOVLW B'01000000' MOVWF PORTB CALL RETARDO MOVLW B'10000000' MOVWF PORTB CALL RETARDO GOTO ENTRADAS MOVLW B'00011000' MOVWF PORTB CALL RETARDO MOVLW B'00100100' MOVWF PORTB CALL RETARDO MOVLW B'01000010' MOVWF PORTB CALL RETARDO MOVLW B'10000001' MOVWF PORTB CALL RETARDO MOVLW B'10000001' MOVWF PORTB CALL RETARDO MOVLW B'01000010' MOVWF PORTB CALL RETARDO MOVLW B'00100100' MOVWF PORTB CALL RETARDO MOVLW B'00011000' MOVWF PORTB CALL RETARDO MOVLW B'10000000' MOVWF PORTB CALL RETARDO MOVLW B'01000000' MOVWF PORTB CALL RETARDO MOVLW B'00100000' MOVWF PORTB CALL RETARDO MOVLW B'00010000' MOVWF PORTB CALL RETARDO MOVLW B'00001000' MOVWF PORTB CALL RETARDO MOVLW B'00000100' MOVWF PORTB CALL RETARDO MOVLW B'00000010' MOVWF PORTB CALL RETARDO MOVLW B'00000001' MOVWF PORTB CALL RETARDO 0 1 0 1 0 1 Fin 4 INSTITUTO TECNOLÓGICO DE LA LAGUNA Código Fuente LIST P=16F877A INCLUDE <p16F877a.inc> ; Incluimos la librería del PIC para no tener que definir de manera manual los registros DE1 EQU 0X20 DE2 EQU 0X21 DE3 EQU 0X22 ORG 0 ; Se establece la configuración de los puertos BSF STATUS,5 ; Definimos el bit 5 del STATUS como uno para hacer referencia a que nos dirigiremos al banco 1 CLRF TRISB ; Limpiamos el Registro TRISB definiendo el puerto B como salidas MOVLW B'11' ; Asignamos el binario 11 al registro TRISD definiendo dos pines como entradas MOVWF TRISD BCF STATUS,5 ; Regresamos al banco 0 CLRF PORTB ;Limpiamos los puertos para asegurarnos de que no se afecten las señales de entrada por señales previas CLRF PORTD ENTRADAS ; Se declaran las secuencias de bits que deben de entrar en los puertos que posteriormente definirán la secuencia que terminará por ejecutarse MOVLW B'00' SUBWF PORTD,W BTFSC STATUS,Z GOTO ENTRADA1 MOVLW B'01' SUBWF PORTD,W BTFSC STATUS,Z GOTO ENTRADA2 MOVLW B'10' SUBWF PORTD,W BTFSC STATUS,Z GOTO ENTRADA3 MOVLW B'11' SUBWF PORTD,W BTFSC STATUS,Z GOTO ENTRADA4 GOTO ENTRADAS ENTRADA1 ; Se carga cada binario para la secuencia visual de los leds en el registro W y posteriormente se mueve a la salida en el puerto B MOVLW B'00000001' MOVWF PORTB CALL RETARDO ; La llamada a retardo permite que los movimientos se ralentizen lo suficiente como para poder percibirlos de manera cómoda en los leds MOVLW B'00000010' MOVWF PORTB CALL RETARDO MOVLW B'00000100' MOVWF PORTB CALL RETARDO MOVLW B'00001000' MOVWF PORTB CALL RETARDO MOVLW B'00010000' MOVWF PORTB CALL RETARDO MOVLW B'00100000' MOVWF PORTB CALL RETARDO MOVLW B'01000000' MOVWF PORTB CALL RETARDO MOVLW B'10000000' MOVWF PORTB CALL RETARDO GOTO ENTRADAS ; Una vez terminada la secuencia se realiza un regreso a leer nuevamente las entradas para verificar que secuencia se debe realizar después ; Este proceso se repite con las demás secuencias ENTRADA2 MOVLW B'00011000' MOVWF PORTB CALL RETARDO MOVLW B'00100100' 5 INSTITUTO TECNOLÓGICO DE LA LAGUNA MOVWF PORTB CALL RETARDO MOVLW B'01000010' MOVWF PORTB CALL RETARDO MOVLW B'10000001' MOVWF PORTB CALL RETARDO GOTO ENTRADAS ENTRADA3 MOVLW B'10000001' MOVWF PORTB CALL RETARDO MOVLW B'01000010' MOVWF PORTB CALL RETARDO MOVLW B'00100100' MOVWF PORTB CALL RETARDO MOVLW B'00011000' MOVWF PORTB CALL RETARDO GOTO ENTRADAS ENTRADA4 MOVLW B'10000000' MOVWF PORTB CALL RETARDO MOVLW B'01000000' MOVWF PORTB CALL RETARDO MOVLW B'00100000' MOVWF PORTB CALL RETARDO MOVLW B'00010000' MOVWF PORTB CALL RETARDO MOVLW B'00001000' MOVWF PORTB CALL RETARDO MOVLW B'00000100' MOVWF PORTB CALL RETARDO MOVLW B'00000010' MOVWF PORTB CALL RETARDO MOVLW B'00000001' MOVWF PORTB CALL RETARDO GOTO ENTRADAS RETARDO ; Estos retardos y sub retardos están hechos para hacer una cuenta de (255)*(255)*(5) pulsos para que se visualicen de manera cómoda las secuencias MOVLW 5 MOVWF DE3 RETARDO3 MOVLW 255 MOVWF DE2 RETARDO2 MOVLW 255 MOVWF DE1 RETARDO1 DECFSZ DE1,1 GOTO RETARDO1 DECFSZ DE2,1 GOTO RETARDO2 DECFSZ DE3,1 GOTO RETARDO3 RETURN END
Compartir