Está en la página 1de 12

INSTITUTO POLITECNICO NACIONAL

UNIDAD PROFESIONAL
INTERDISCIPLINARIA DE INGENIERIA Y
CIENCIAS SOCIALES Y
ADMINISTRATIVAS

Dispositivos Programables

Multiplexor Múltiplos de 3, 5, 4 y los números


pares

Alumnos:
Rodriguez Arias Joahan

Grupo:
3NV40

Profesor:
Morales Castillo Victor
Desarrollo de la practica
La continuación de la práctica número seis también fue realizar un multiplexor, esta vez con otras
funciones, las son: mostrar los múltiplos de 3, los múltiplos de 5, los múltiplos de 4 y los pares en
hexadecimal.
Código
LIST P=18F4550 ;directive to define processor
#include <P18F4550.INC> ;processor specific variable definitions
;CONFIG1L dir 300000h 20
CONFIG PLLDIV=1 ;
CONFIG CPUDIV=OSC1_PLL2 ;CUANDO SE USA
CONFIG USBDIV=2
;CONFIG1H dir 300001h 08
CONFIG FOSC=INTOSCIO_EC ;OSCILADOR INTERNO, RA6 COMO
PIN, USB USA OSC EC
CONFIG FCMEN=OFF ;DESHABILITDO EL MONITOREO DEL
RELOJ
CONFIG IESO=OFF
;CONFIG2L DIR 300002H 38
CONFIG PWRT=ON ;PWRT HABILITADO
CONFIG BOR=OFF ;BROWN OUT RESET
DESHABILITADO
CONFIG BORV=3 ;RESET AL MINIMO VOLTAJE NO
UTILZADO EN ESTE CASO
CONFIG VREGEN=ON ;REULADOR DE USB ENCENDIDO
;CONFIG2H DIR 300003H 1E
CONFIG WDT=OFF ;WACH DOG DESHABILITADO
CONFIG WDTPS=32768 ;TIMER DEL WATCHDOG
;CONFIG3H DIR 300005H 81
CONFIG CCP2MX=ON ;CCP2 MULTIPLEXADAS CON RC1
CONFIG PBADEN=OFF ;PUERTO B PINES DEL 0 AL 4 ENTRADAS
DIGITALES
CONFIG LPT1OSC=OFF ;TIMER1 CONFIURADO PARA
OPERAR EN BAJA POTENCIA
CONFIG MCLRE=ON ;MASTER CLEAR HABILITADO
;CONFIG4L DIR 300006H 81
CONFIG STVREN=ON ;SI EL STACK SE LLENA CAUSE
RESET
CONFIG LVP=OFF ;PROGRAMACIÒN EN BAJO
VOLTAJE APAGADO
CONFIG ICPRT=OFF ;REGISTRO ICPORT DESHABILITADO
CONFIG XINST=OFF ;SET DE EXTENCION DE
INSTRUCCIONES Y DIRECCIONAMIENTO INDEXADO DESHABILITADO
;CONFIG5L DIR 300008H 0F
CONFIG CP0=OFF ;LOS BLOQUES DEL CÒDIGO
DE PROGRAMA
CONFIG CP1=OFF ;NO ESTAN PROTEGIDOS
CONFIG CP2=OFF
CONFIG CP3=OFF
;CONFIG5H DR 300009H 80
CONFIG CPB=ON ;SECTOR BOOT ESTA
PROTEGIDO
CONFIG CPD=OFF ;EEPROM N PROTEGIDA
;CONFIG6L DIR 30000AH 0F
CONFIG WRT0=OFF ;BLOQUES NO PROTEGIDOS CONTRA
ESCRITURA
CONFIG WRT1=OFF
CONFIG WRT2=OFF
CONFIG WRT3=OFF
;CONFIG6H DIR 30000BH A0
CONFIG WRTC=OFF ;CONFIGURACION DE REGISTROS NO
PROTEGIDO
CONFIG WRTB=ON ;BLOQUE BOOTEBLE NO PROTEGIDO
CONFIG WRTD=OFF ;EEPROMDE DATOS NO PROTGIDA
;CONFIG7L DIR 30000CH 0F
CONFIG EBTR0=OFF ;TABLAS DE LETURA NO
PROTEGIDAS
CONFIG EBTR1=OFF
CONFIG EBTR2=OFF
CONFIG EBTR3=OFF
;CONFIG7H DIR 30000DH 40
CONFIG EBTRB=OFF ;TABLAS NO PROTEGIDAS
CBLOCK 0x0 ; PARA VARIABLES
ENDC
org 0 ; DIRECCION 0 DE LA MEMORIA
;-------------------------------------------------------------
; CONFIGURACION DE PUERTOS
MOVLW 0X7F
MOVWF TRISA ;
clrf TRISB
clrf TRISC ;
clrf TRISD
clrf TRISE
;//------------------------------------------------------
; ahora viene la deshabilitación de modulos (pheriperals)
;*******************************************************
clrf ADCON0 ; desactiva el CAD
movlw 0x0F
movwf ADCON1 ; todas las entradas digitales
movlw 0x07
movwf CMCON ;desactiva el modulo comparador
;MOVLW 0XFF
;MOVWF OSCCON
;//-------------------------------------------
; CUERPO DE PROGRAMA
;CONFIGURAMOS EL TIMER
CON EQU 0X0C
CONS EQU 0X0D
CONS_1 EQU 0X0E
CON_2 EQU 0X0F
BRA INI
TABLA ADDWF PCL,F
RETLW 0X3F ;0
RETLW 0X06 ;1
RETLW 0X5B ;2
RETLW 0X4F ;3
RETLW 0X66 ;4
RETLW 0X6D ;5
RETLW 0X7D;6
RETLW 0X47;7
RETLW 0X7F ;8
RETLW 0X67 ;9
RETLW 0X77 ;A
RETLW 0X7C ;B
RETLW 0X39 ;C
RETLW 0X5F ;D
RETLW 0X79 ;E
RETLW 0X71 ;F
INI
PRE_0 MOVF PORTA,W
ANDLW B'00000011'
SUBLW 0X00
BTFSS STATUS,Z
BRA PRE_1
BRA Mul_3_ASC
PRE_1 MOVF PORTA,W
ANDLW B'00000011'
SUBLW 0X01
BTFSS STATUS,Z
BRA PRE_2
BRA Mul_5_DESC
PRE_2 MOVF PORTA,W
ANDLW B'00000011'
SUBLW 0X02
BTFSS STATUS,Z
BRA PRE_3
BRA Mul_4_DESC
PRE_3 MOVF PORTA,W
ANDLW B'00000011'
SUBLW 0X03
BTFSS STATUS,Z
BRA PRE_0
BRA Mul_2_ASC
Mul_3_ASC CLRF CON
INI_Mul_3 MOVF CON,W
CALL TABLA
MOVWF PORTB
CALL RET_S
MOVF CON,W
SUBLW 0X1E
BTFSS STATUS,Z
BRA INCRE_3
BRA PRE_0
INCRE_3 MOVLW 0X03
MOVWF CON_2
INCRE_3_INI CALL INCRE
DECFSZ CON_2,F
BRA INCRE_3_INI
BRA INI_Mul_3
Mul_5_DESC MOVLW 0X1E
MOVWF CON
INI_Mul_5 MOVF CON,W
CALL TABLA
MOVWF PORTB
CALL RET_S
MOVF CON,W
SUBLW 0X00
BTFSS STATUS,Z
BRA DECRE_5
BRA PRE_0
DECRE_5 MOVLW 0X05
MOVWF CON_2
DECRE_5_INI CALL DECRE
DECFSZ CON_2,F
BRA DECRE_5_INI
BRA INI_Mul_5
Mul_4_DESC MOVLW 0X18
MOVWF CON
INI_Mul_4 MOVF CON,W
CALL TABLA
MOVWF PORTB
CALL RET_S
MOVF CON,W
SUBLW 0X00
BTFSS STATUS,Z
BRA DECRE_4
BRA PRE_0
DECRE_4 MOVLW 0X04
MOVWF CON_2
DECRE_4_INI CALL DECRE
DECFSZ CON_2,F
BRA DECRE_4_INI
BRA INI_Mul_4
Mul_2_ASC CLRF CON
INI_Mul_2 MOVF CON,W
CALL TABLA
MOVWF PORTB
CALL RET_S
MOVF CON,W
SUBLW 0X1C
BTFSS STATUS,Z
BRA INCRE_2
BRA PRE_0
INCRE_2 MOVLW 0X02
MOVWF CON_2
INCRE_2_INI CALL INCRE
DECFSZ CON_2,F
BRA INCRE_2_INI
BRA INI_Mul_2
INCRE INCF CON,F
INCF CON,F
RETURN
DECRE DECF CON,F
DECF CON,F
RETURN
;RET_7S MOVLW D'7'
; MOVWF CONS_2
RET_S MOVLW D'1000'
MOVWF CONS_1
RET_M MOVLW D'498'
MOVWF CONS
BUCLE NOP
DECFSZ CONS,F
BRA BUCLE
DECFSZ CONS_1,F
BRA RET_M
;DECFSZ CONS_2,F
;BRA RET_S
RETURN
END
Fotos del circuito
Comentarios de la practica
El único problema es saber que realiza cada una de las operaciones y hacia donde se tiene dirigir
cada función del código.
Conclusiones
Es interesante ver las operaciones que realiza nuestro multiplexor y las secuencias que
sigue, como que deja terminar las operaciones para poder realizar la otra que nosotros
indiquemos.

También podría gustarte