BSF STATUS,5 ;SE PASA AL BANCO 1 DE RAM CLRF TRISA ;SE PROGRAMA EL PUERTO A COMO SALIDA MOVLW 0XF MOVWF TRISB ;PARTE ALTA COMO SALIDA Y BAJA COMO ENTRADA BCF OPTIONR,7 ;SE HABILITAN RESISTENCIAS DEL PULL UP BCF STATUS,5 SE PASA AL BANCO CERO DE RAM LOOP: COMF PORB,0 ;SE LEE EL PUERTO B,SE COMPLETA SU VALOR Y EL PASA A W. MOVWF PORTA ; SE PASA RESULTADO DE W AL PUERTO A GOTO LOOP ;EJECUTA UN CICLO INFINITO END
;rutina de display dinmico de dos dgitos)
;RITUTNA DE DISPLAY DINAMICO DE DOS DIGITOS #DEFINE BANK0 BCF STATUS,RP0 #DEFINE BANK1 BSF STATUS,RP0
DISPLAY BANK1 CLRF TRISA ;PUERTO A COMO SALIDA CLRF TRISB ;PUERTO B COMO SALIDA BANK0 MOVLW 0X03 ;INHABILITAR TRANSISTORES MOVWF PORTA MOVLW .10 ;VALOR DE REPETICIONES MOVWF CONT2 LOOPDISP ;SACAR AL PUERTO EL DATO 1 POR UN TIEMPO ESPECIFICADO MOVF DATO1,W ;DATO PARA DECODIFICAR CALL TABLA ;DECODIFICACION DEL DATO MOVWF PORTB ;DATO DECODIFICADO AL PUERTO BCF PORTA,0 ;HABILITA Q DATO 1 CALL RETDIG ;RETARDO DE DIGITO BSF PORTA0 ;INHABILITA Q DATO 1 NOP ;RETARDO DE APAGADO NOP NOP NOP NOP NOP
DECFSZ CONT2,F ;DECREMENTA CONT2, ELUDE SIG. SI CERO GOTO LOOPDISP ;REPITE CICLO RETURN
TABLA ADDWF PCL,F RETLW 0X01 ;CUANDO EL DIGITO ES 0 RETLW 0X4F ;CUANDO EL DIGITO ES 1 RETLW 0X12 ;CUANDO EL DIGITO ES 2 RETLW 0X06 ;CUANDO EL DIGITO ES 3 RETLW 0X4C ;CUANDO EL DIGITO ES 4 RETLW 0X24 ;CUANDO EL DIGITO ES 5 RETLW 0X20 ;CUANDO EL DIGITO ES 6 RETLW 0X0F ;CUANDO EL DIGITO ES 7 RETLW 0X00 ;CUANDO EL DIGITO ES 8 RETLW 0X04 ;CUANDO EL DIGITO ES 9 RETLW 0X08 ;CUANDO EL DIGITO ES A RETLW 0X60 ;CUANDO EL DIGITO ES B RETLW 0X31 ;CUANDO EL DIGITO ES C RETLW 0X42 ;CUANDO EL DIGITO ES D RETLW 0X30 ;CUANDO EL DIGITO ES E RETLW 0X38 ;CUANDO EL DIGITO ES F
;Programa para realizar el apagado y encendido de un LED colocado en el ;Puerto A0 basado en la interrupcin externa INT (RB0) LIST P=16F84 STATUS EQU 0X03 PORTA EQU 0X05 PORTB EQU 0X06 INTCON EQU 0X0B OPTIONR EQU 0X81 TRISA EQU 0X85 TRISB EQU 0X86
ORG 0 ;INDICA AL ENSAMBLADOR LA DIRECCION DE MEMORIA DE LA SIGUIENTE INSTRUCCION GOTO INICIO ORG 0X04 ; INDICA AL ENSAMBLADOR LA DIRECCION DE MEMORIA DE LA SIGUIENTE INSTRUCCION
INTRERRUPCION BTFSS INTCON,1 ;ES INTERRUPCION INT? RETFIE ;RETORNA DE INTERRUPCION Y GIE=1 BTFSC PORTA,0 ;PROBAR ESTADO ACTUAL DEL LED GOTO PRENDER ; VA A ENCENDER EL LED APAGAR BSF PORTA,0 ;APAGA EL LED GOTO ESPERA PRENDER BCF PORTA,0 ;ENCIENDE EL LED ESPERA BTFSS PORTB,0 ;ESPERA A QUE SE SUELTE EL PULSADOR GOTO ESPERA BCF INTCON,1 ;BORRA BANDERA INT RETFIE ;RETORNA DE INTERRUPCION Y GIE=1
;PROGRAMA PRINCIPAL INICIO BANK1 ;SELECCION DEL BANCO 1 BCF TRISA,0 ;SELECCION PORTA, 0 BANK0 ;SELECCION DEBANCO 0 BSF PORTA,0 ;APAGAR LED ;PROGRAMACION DE INTERRUPCION BSF INTCON,4 ;ACTIVAR INTERRUPCION INT BANK1 SELECCION BANCO 1 BCF OPTIONR,6 ;SELECCION DEL FLANCO DE BAJADA EN EL PIN BANK0 BSF INTCON,7 ;HABILITAR INTERRUPCIONES GLOBALES GOTO $ ;QUEDA A LA ESPERA DE INTERRUPCION END
PIC PRIMERA PARTE 16F84
LIST P=16F84 RADIX HEX
W EQU 0 F EQU 1 TMR_OPT EQU 0X01 ;TMR0 EN BANCO 0 OPTION EN BANCO 1 ESTADO EQU 0X03 PUERTAA EQU 0X05 ;PA EN BANCO 0 TRISA EN BANCO1 PUERTAB EQU 0X06 ;PB EN BANCO 0 TRISB EN BANCO1 INTCON EQU 0X0B CONTA EQU 0X10 ;CONTADOR AUXILIAR
ORG 0 ;VECTOR DE RESET GOTO INICIO ORG 4 ;VECTOR DE INTERRUPCION GOTO INTER ;SALTA A COMIENZO DE RUTINA DE INTERRUPCION ORG 5
INICIO BSF ESTADO,5 ;SELECCION DEL BANCO 1 CLRF PUERTAB ;CONFIGURACION PUERTA B COMO SALIDA MOVLW b00000011 ;CONF RA0, RA1 COMO ENTRADAS MOVWF PUERTAA MOVLW b00000111 MOVWF TMR0_OPT BCF ESTADO,5 ;BANCO 0 MOVLW b10100000 ;SE PERMITE INTERRUPCION DEL TMR0 Y LA ;GLOBAL (GIE)
MOVWF INTCON MOVLW 0X10 MOVWF CONTA ;SE CARGA CONTA CON 16 DECIMALES MOVLW 0X0C MOVWF TMR0_OPT ;SE CARGA TMR0 CON 12 DECIMALES BUCLE BTFSC PUERTAA,0 ;EXPLORA RA0 Y BRINCA SI 0, SALTA A ;RA0_1 GOTO RA0_1 BCF PUERTAB,0 ;SI RA0 = RB0 = 0 GOTO RALX ;A EXPLORAR RA1 RA0_1 BSF PUERTAB,0 ;SI RA0 = 1 SE SACA POR RB0 UN 1 RALX BTFSC PUERTAA,1 ;EXAMINA RAL Y BRINCO SI 0 GOTO RA0_1 ;SALTA SI RA1 = 1 BCF PUERTASB,1 ;SI RA1 = 0, RB1 = 0 GOTO BUCLE2 RA1_1 BSF PUERTAB,1 ;SI RA1 = 1, RB1 = 1 BUCLE2 GOTO BUCLE ;BUCLE INDEFINIDO, SE SALE POR INTER INTER DECFSZ CONTA,1 ;RSI. DECREMENTA CONTA Y BRINCO SI 0 GOTO SEGUIR CONTA_0 MOVLW 0X10 ;SI CONTA = 0 SE CARGA MOVWF CONTA BTFSC PUERTAB,7 ;SI RB7 = 0, BRINCO GOTO RB7_1 BSF PUERTAB,7 ;SI RB7 = 0 SE INVIERTE GOTO SEGUIR RB7_1 BCF PUERTAB,7 ;SI RB7 = 1, SE INVIERTE SEGUIR MOVLW b10100000 ;SE RESTAURA INTCON MOVWF INTCON MOVLW 0X0C MOVWF TMR_OPT ;SE RECARGA TMR0 CON 12 RETFIE END
INTERRUPCIONES PAG. (198)
LIST P=16F84
RADIX HEX
W EQU 0 F EQU 1 ESTADO EQU 0X03 PUERTAA EQU 0X05 PUERTAB EQU 0X06 INTCON EQU 0X0B
MOVLW b10011000 ;SE ACTIVA GIE, INT EXT E INT X CAM DE PB MOVWF INTCON BUCLE GOTO BUCLE
INTER BTFSS INTCON,0 ;EXPLORA FLAG DE IN POR CAMBIO RB4 RB7 GOTO PARAR GOTO ALARMA ALARMA CLRF PUERTAB MOVLW b10011000 ;se activan GIE INT EXTERNA MOVWF INTCON ;E INT POR CAMBIO DE PB BUZZER BSF PUERTAA,0 NOP BCF PUERTAA,0 BSF PUERTAA,1 NOP BCF PUERTAA,1 GOTO BUZZER PARAR CLRF PUERTAA BCF PUERTAB,0 MOVLW b10011000 ;SE ACTIVA GIE, INT EXTERNA E INT POR ;CAMBIO DE PB MOVWF INTCON GOTO BUCLE END