INSTITUTO POLITÉCNICO NACIONAL
Unidad Profesional Interdisciplinaria en Ingeniería y
Tecnologías Avanzadas
Programa académico: Ingeniería Mecatrónica
Unidad de aprendizaje:
Microcontroladores, Microprocesadores e Interfaz
Práctica 2.3: Conecta 4
Alumnos:
Cervantes Rodríguez Diego
Fernández Olvera Linda María
Gaitán Villegas Rodrigo Alejandro
Vidals Vazquez Ángel David
Profesor: David Arturo Gutiérrez Begovich
Grupo: 2MV1
Fecha de entrega: 08 de enero del 2021
Enlace del video
https://youtu.be/0fLDIJnraZQ
Código
/************************************************************************************
;* INSTITUTO POLITECNICO NACIONAL *
;* Unidad Profesional Iterdisciplinaria *
;* de Ingenieria y Tecnologias Avanzadas *
;* *
;* CALCULO DE VARIABLES *
;* *
;* Cervantes Rodríguez Diego *
;* Fernández Olvera Linda María *
;* Vidals Vazquez Angel David *
;* Gaitán Villegas Rodrigo Alejandro *
;* *
;* M. en C. DAVID ARTURO GUITIERREZ BEGOVICH *
;* *
;* FECHA: 26 DE NOVIEMBRE DE 2020 *
;* *
;*PARA: MICROCONTROLADOR PIC16F887 *
;*DESCRIPCION DEL EJERCICIO:SE REALIZO UN CODIGO EL CUAL PERMITE SIMULAR EL JUEGO *
;*DE CONECTA 4 PARA DOS PERSONAS, SE CUENTAN CON 8 BOTONES DIFERENTES PARA USAR *
;*EL TABLERO CADA BOTON REPRESENTA UNA COLUMNA QUE PERMITE SOLTAR LA FICHA DE FORMA *
;*ANIMADA EL JUEGO CONSISTE EN DOS MATRICES DE LEDS, UNA PARA CADA JUGADOR QUE *
;*PERMITIRA OBSERVAR LA CAIDA Y FICHAS DE CADA JUGADOR *
;************************************************************************************
;-----------------------------------JUGADOR 1----------------------
;-FILAS VAN DE 0X20-0X27
;-CONTADORES DE 0X20-0X27
;-----------------------------------JUGADOR 2----------------------
;FILAS VAN DE 0X30-0X37
;-CONTADORES DE 0X50-0X57
;------------------------------------------------------------------
INCLUDE <E:\Usuarios\Videos\Radeon
ReLive\micro\EJERCICIOS\ENCABEZADO.asm> ;B1. PA,PB Y PE=DIGITALES.
CLRF TRISA
CLRF TRISB
CLRF TRISD
CLRF STATUS ;B0
MOVLW .1
MOVWF 0X28
MOVLW .8
MOVWF 0X40
MOVWF 0X41
MOVWF 0X42
MOVWF 0X43
MOVWF 0X44
MOVWF 0X45
MOVWF 0X46
MOVWF 0X47
CLRF 0X20
CLRF 0X21
CLRF 0X22
CLRF 0X23
CLRF 0X24
CLRF 0X25
CLRF 0X26
CLRF 0X27
CLRF 0X30
CLRF 0X31
CLRF 0X32
CLRF 0X33
CLRF 0X34
CLRF 0X35
CLRF 0X36
CLRF 0X37
;************************************BOTONES*******************************
BOTONES: MOVLW .1
MOVWF 0X48
BTFSC PORTC,0 ; PC.0=0?
GOTO COLUM0
BTFSC PORTC,1 ; PC.1=0?
GOTO COLUM1
BTFSC PORTC,2 ; PC.2=0?
GOTO COLUM2
BTFSC PORTC,3 ; PC.3=0?
GOTO COLUM3
BTFSC PORTC,4 ; PC.4=0?
GOTO COLUM4
BTFSC PORTC,5 ; PC.5=0?
GOTO COLUM5
BTFSC PORTC,6 ; PC.6=0?
GOTO COLUM6
CALL MOSTRAR
GOTO BOTONES
GOTO $
;---------------------------------COLUMNA 0--------------------------------------
COLUMNA_0: CALL REBOTE
BTFSC PORTC,0 ; SALE DEL REBOTE AL SOLTAR EL
BOTON
GOTO $-1
CALL REBOTE
MOVF 0X40,W
MOVWF 0X50 ;CONTADOR DE LA FILA
BTFSC 0X28,0 ;J1 O J2
GOTO COL0_J1
GOTO COL0_J2
;COLUMNA 0 JUGADOOR 1
COL0_J1: CLRF 0X28 ;TURNO J2
MOVF 0X20,W
MOVWF 0X49 ;COLOCA EL REGISTRO PARA FILA DE J1
MOVLW 0X20
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W ;ACTUALIZA EL CONTADOR
MOVWF 0X40
GOTO BOTONES
;COLUMNA 0 JUGADOOR 2
COL0_J2: MOVLW 0X01
MOVWF 0X28 ;TURNO J1
MOVF 0X30,W
MOVWF 0X49 ;COLOCA EL REGISTRO PARA FJ2
MOVLW 0X30
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W ;ACTUALIZA EL CONTADOR
MOVWF 0X40
GOTO BOTONES
;ESTO LO HACE PARA CADA COLUMNA, VA TURNANDO EL CONTADOR ASI COMO EL REGISTRO PARA SIMULAR
LOS TURNOS
; SE REPITE EL PROCESO PARA LAS SIGUIENTES COLUMNAS
;---------------------------------COLUMNA 1--------------------------------------
COLUMNA_1: CALL REBOTE
BTFSC PORTC,1
GOTO $-1
CALL REBOTE
MOVF 0X41,W
MOVWF 0X50
BTFSC 0X28,0
GOTO COL1_J1
GOTO COL1_J2
COL1_J1: CLRF 0X28
MOVF 0X21,W
MOVWF 0X49
MOVLW 0X21
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X41
GOTO BOTONES
COL1_J2: MOVLW 0X01
MOVWF 0X28
MOVF 0X31,W
MOVWF 0X49
MOVLW 0X31
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X41
GOTO BOTONES
;---------------------------------COLUMNA 2--------------------------------------
COLUMNA_2: CALL REBOTE
BTFSC PORTC,2
GOTO $-1
CALL REBOTE
MOVF 0X42,W
MOVWF 0X50
BTFSC 0X28,0
GOTO COL2_J1
GOTO COL2_J2
COL2_J1: CLRF 0X28
MOVF 0X22,W
MOVWF 0X49
MOVLW 0X22
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X42
GOTO BOTONES
COL2_J2: MOVLW 0X01
MOVWF 0X28
MOVF 0X32,W
MOVWF 0X49
MOVLW 0X32
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X42
GOTO BOTONES
;---------------------------------COLUMNA 3--------------------------------------
COLUMNA_3: CALL REBOTE
BTFSC PORTC,3
GOTO $-1
CALL REBOTE
MOVF 0X43,W
MOVWF 0X50
BTFSC 0X28,0
GOTO COL3_J1
GOTO COL3_J2
COL3_J1: CLRF 0X28
MOVF 0X23,W
MOVWF 0X49
MOVLW 0X23
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X43
GOTO BOTONES
COL3_J2: MOVLW 0X01
MOVWF 0X28
MOVF 0X33,W
MOVWF 0X49
MOVLW 0X33
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X43
GOTO BOTONES
;---------------------------------COLUMNA 4--------------------------------------
COLUMNA_4: CALL REBOTE
BTFSC PORTC,4
GOTO $-1
CALL REBOTE
MOVF 0X44,W
MOVWF 0X50
BTFSC 0X28,0
GOTO COL4_J1
GOTO COL4_J2
COL4_J1: CLRF 0X28
MOVF 0X24,W
MOVWF 0X49
MOVLW 0X24
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X44
GOTO BOTONES
COL4_J2: MOVLW 0X01
MOVWF 0X28
MOVF 0X34,W
MOVWF 0X49
MOVLW 0X34
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X44
GOTO BOTONES
;---------------------------------COLUMNA 5--------------------------------------
COLUMNA_5: CALL REBOTE
BTFSC PORTC,5
GOTO $-1
CALL REBOTE
MOVF 0X45,W
MOVWF 0X50
BTFSC 0X28,0
GOTO COL5_J1
GOTO COL5_J2
COL5_J1: CLRF 0X28
MOVF 0X25,W
MOVWF 0X49
MOVLW 0X25
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X45
GOTO BOTONES
COL5_J2: MOVLW 0X01
MOVWF 0X28
MOVF 0X35,W
MOVWF 0X49
MOVLW 0X35
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X45
GOTO BOTONES
;---------------------------------COLUMNA 6--------------------------------------
COLUMNA_6: CALL REBOTE
BTFSC PORTC,6
GOTO $-1
CALL REBOTE
MOVF 0X46,W
MOVWF 0X50
BTFSC 0X28,0
GOTO COL6_J1
GOTO COL6_J2
COL6_J1: CLRF 0X28
MOVF 0X26,W
MOVWF 0X49
MOVLW 0X26
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X46
GOTO BOTONES
COL6_J2: MOVLW 0X01
MOVWF 0X28
MOVF 0X36,W
MOVWF 0X49
MOVLW 0X36
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X46
GOTO BOTONES
;---------------------------------COLUMNA 7--------------------------------------
COLUMNA_7: CALL REBOTE
BTFSC PORTC,7
GOTO $-1
CALL REBOTE
MOVF 0X47,W
MOVWF 0X50
BTFSC 0X28,0
GOTO COL7_J1
GOTO COL7_J2
COL7_J1: CLRF 0X28
MOVF 0X27,W
MOVWF 0X49
MOVLW 0X27
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X47
GOTO BOTONES
COL7_J2: MOVLW 0X01
MOVWF 0X28
MOVF 0X37,W
MOVWF 0X49
MOVLW 0X37
MOVWF FSR
CALL JUGADOR
MOVF 0X50,W
MOVWF 0X47
GOTO BOTONES
;************************MOSTRAR EN MATRIZ**************************************
;SE MUESTRA EL EFECTO DE LA CAIDA DE LAS FICHAS EN LAS MATRICES, CON EL TIEMPO DETERMINADO
DE 300MS PARA CADA COLUMNA
MOSTRAR MOVLW 0XFE ;COLUMNA 0
MOVWF PORTD
MOVF 0X20,W
MOVWF PORTA
MOVF 0X30,W
MOVWF PORTB
CALL ST300MS
MOVLW 0XFD ;COLUMNA 1
MOVWF PORTD
MOVF 0X21,W
MOVWF PORTA
MOVF 0X31,W
MOVWF PORTB
CALL ST300MS
MOVLW 0XFB ;COLUMNA 2
MOVWF PORTD
MOVF 0X22,W
MOVWF PORTA
MOVF 0X32,W
MOVWF PORTB
CALL ST300MS
MOVLW 0XF7 ;COLUMNA3
MOVWF PORTD
MOVF 0X23,W
MOVWF PORTA
MOVF 0X33,W
MOVWF PORTB
CALL ST300MS
MOVLW 0XEF ;COLUMNA4
MOVWF PORTD
MOVF 0X24,W
MOVWF PORTA
MOVF 0X34,W
MOVWF PORTB
CALL ST300MS
MOVLW 0XDF ;COLUMNA5
MOVWF PORTD
MOVF 0X25,W
MOVWF PORTA
MOVF 0X35,W
MOVWF PORTB
CALL ST300MS
MOVLW 0XBF ;COLUMNA6
MOVWF PORTD
MOVF 0X26,W
MOVWF PORTA
MOVF 0X36,W
MOVWF PORTB
CALL ST300MS
MOVLW 0X7F ;COLUMNA7
MOVWF PORTD
MOVF 0X27,W
MOVWF PORTA
MOVF 0X37,W
MOVWF PORTB
CALL ST300MS
DECFSZ 0X48,F
GOTO MOSTRAR
RETURN
;-------------------------------DECREMENTOS ----------------------------------------
;SE DECREMENTA EL REGISTRO DE LLENADO DE LAS COLUMNAS Y FILAS, ADEMAS SE VA ACTUALIZANDO
CONFORME PASAN LOS TURNOS
JUGADOR: MOVF 0X50,W ;LEE EL CONTADOR DE COLUMNA 1
MOVWF 0X29 ;VA A REG PROPOSITO GENERAL
DECF 0X50 ;SE DECREMENTA
CLRF 0X38
BSF STATUS,C
VJ1: RRF 0X38
MOVF 0X38,W
IORWF 0X49,W
MOVWF INDF ;SE COLOCA EN 0X20
MOVLW .18
MOVWF 0X48
CALL MOSTRAR
DECFSZ 0X29
GOTO VJ1
RETURN
;-------------------------------SUBTIEMPOS-----------------------------------------
;SECCION DE LOS TIEMPOS PARA UNA SUBRUTINA DE 300MS
ST300MS: MOVLW .3
MOVWF 0X61
MOVLW .98
MOVWF 0X62
CALL ST2V
RETURN
;-------------------------------REBOTE-----------------------------------------
REBOTE: MOVLW .88
MOVWF 0X61
MOVLW .35
MOVWF 0X62
CALL ST2V
RETURN
INCLUDE <E:\Usuarios\Videos\Radeon
ReLive\micro\EJERCICIOS\SUBTIEMPO.asm>
END