Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
LIST P=16F84A
INCLUDE <P16F84A.inc>
RADIX HEX
STATUS EQU 03h ; REGISTRO ESTADO
PORTA EQU 05h ; PUERTO A
PORTB EQU 06h ; PUERTO B
OPTION_REG EQU 81h ; REGISTRO DE INTERRUPCION
INTCON EQU 0bh
TRISA EQU 85h ; REGISTRO CONFIGURACION PUERTO A
TRISB EQU 86h ; REGISTRO CONFIGURACION PUERTO B
CONTA EQU 0X0D ;Damos el nombre de CONTA a dir. 0Dh(USO GENERAL)
CONTB EQU 0X0E ;Damos el nombre de CONTB a dir. 0Eh(USO GENERAL)
CONTC EQU 0X0F ;Damos el nombre de CONTC a dir. 0Fh(USO GENERAL)
ORG 00h ; INDICA AL COMPILADOR DONDE COMIENZA EL PROGRAMA
GOTO INICIO ; VA A SUBRUTINA INICIO
ORG 04h
INICIO
BSF STATUS,5
MOVLW B'11111' ; CARGA '11111' EN EL REGISTRO DE TRABAJO 'W'
MOVWF TRISA ; CARGA 'W' EN EL PUERTO A
MOVLW B'00000000' ; CARGA '00000000' EN EL REGISTRO DE TRABAJO 'W'
MOVWF TRISB ; CARGA 'W' EN EL PUERTO B
MOVLW B'00000111' ; CARGA '00000111' EN EL REGISTRO DE TRABAJO 'W'
MOVWF OPTION_REG ; CONFIGURAMOS TMR0 COMO CONTADOR DESCENDENTE
BCF STATUS,5 ; VUELVE A 0
CLRF PORTA
CLRF PORTB
GIRO
BTFSC PORTA,0 ; EN ESTE PUERTO DA EL GIRO A LA IZQUIERDA
GOTO GIRO1
GOTO IZQUIERDA
GIRO1
BTFSC PORTA,1 ; EN ESTE PUERTO DA EL GIRO A LA DERECHA
GOTO GIRO2
GOTO DERECHA
GIRO2
BTFSC PORTA,2 ; EN ESTE PUERTO ABRE
GOTO GIRO3
GOTO ABRE
GIRO3
BTFSC PORTA,3 ; EN ESTE PUERTO CIERRA
GOTO GIRO
GOTO CIERRA
DERECHA
MOVLW B'00001100' ; PRIMER PASO.
MOVWF PORTB
CALL TIEMPO ; TEMPORIZACIÓN ANTES DE PASAR AL SIGIENTE PASO
MOVLW B'00000110' ; SEGUNDO PASO
MOVWF PORTB
CALL TIEMPO
MOVLW B'00000011' ; TERCER PASO
MOVWF PORTB
CALL TIEMPO
MOVLW B'00001001' ; CUARTO PASO
MOVWF PORTB
CALL TIEMPO
GOTO GIRO ; SE VUELE A GIRO PARA MIRAR EL ESTADO DEL BIT
IZQUIERDA
MOVLW B'00001001' ; PRIMER PASO
MOVWF PORTB
CALL TIEMPO ; TEMPORIZACIÓN ANTES DE PASAR AL SIGIENTE PASO
MOVLW B'00000011' ; SEGUNDO PASO
MOVWF PORTB
CALL TIEMPO
MOVLW B'00000110' ; TERCER PASO
MOVWF PORTB
CALL TIEMPO
MOVLW B'00001100' ; CUARTO PASO
MOVWF PORTB
CALL TIEMPO
GOTO GIRO ; SE VUELVE A GIRO PARA MIRAR EL ESTADO DEL BIT
CIERRA
MOVLW B'11000000' ; PRIMER PASO.
MOVWF PORTB
CALL TIEMPO ; TEMPORIZACIÓN ANTES DE PASAR AL SIGIENTE PASO
MOVLW B'01100000' ; SEGUNDO PASO
MOVWF PORTB
CALL TIEMPO
MOVLW B'00110000' ; TERCER PASO
MOVWF PORTB
CALL TIEMPO
MOVLW B'10010000' ; CUARTO PASO
MOVWF PORTB
CALL TIEMPO
GOTO GIRO ; SE VUELE A GIRO PARA MIRAR EL ESTADO DEL BIT
ABRE
MOVLW B'10010000' ; PRIMER PASO
MOVWF PORTB
CALL TIEMPO ; TEMPORIZACIÓN ANTES DE PASAR AL SIGIENTE PASO
MOVLW B'00110000' ; SEGUNDO PASO
MOVWF PORTB
CALL TIEMPO
MOVLW B'01100000' ; TERCER PASO
MOVWF PORTB
CALL TIEMPO
MOVLW B'11000000' ; CUARTO PASO
MOVWF PORTB
CALL TIEMPO
GOTO GIRO ; SE VUELVE A GIRO PARA MIRAR EL ESTADO DEL BIT
TIEMPO
movwf PORTB ;sacamos los pasos por el PORTb
call Retardo_100ms ;realizamos el llamado para el retardo
return ;retorno de donde fue llamado
Retardo_100ms ;retardo de 100 milisegundos
movlw d'1000' ;OJO d100=100mlsegundos cambio otros valores como ejemplo d50=50mlsegundos
goto Retardos_ms
Retardos_ms
movwf CONTB
R1ms_BucleExterno
movlw d'249'
movwf CONTA
R1ms_BucleInterno
nop
decfsz CONTA,F
goto R1ms_BucleInterno
decfsz CONTB,F
goto R1ms_BucleExterno
return
END
Hola creo que ya es muy tarde pero yo hice un programa para mover un motor de cd
con un un 16fxxx y esta simulado en proteus no se si todavia te sriva??
la programacion esta hecha en C
Mira este es el control de motor, cambio de giro, automático y manual, también si le pones dedicación esta para ser controlado en una forma remota todo viene en el .RAR.
Saludos!!!![]()
; ZONA DE DATOS **********************************************************************
LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0x0C
ENDC
#DEFINE Pulsador_1 PORTA,4 ; Pulsador conectado a RA4.
#DEFINE Pulsador_2 PORTA,3 ; Pulsador conectado a RA3.
#DEFINE Pulsador_3 PORTA,2 ; Pulsador conectado a RA2.
#DEFINE Motor PORTB,1 ; Línea donde se conecta el diodo Motor.
; ZONA DE CÓDIGOS ********************************************************************
ORG 0 ; El programa comienza en la dirección 0.
Inicio
bsf STATUS,RP0 ; Acceso al Banco 1.
bsf Pulsador_1 ; La línea RA4 se configura como entrada.
bcf Motor ; Se configura como salida.
bcf STATUS,RP0 ; Acceso al Banco 0.
bcf Motor ; En principio diodo Motor apagado.
Principal
btfsc Pulsador_1 ; ¿Pulsador presionado?, ¿(Pulsador)=0?
goto Fin ; No. Vuelve a leerlo.
call Retardo_20ms ; Espera que se estabilicen los niveles de tensión.
btfsc Pulsador_1 ; Comprueba si es un rebote.
goto Fin ; Era un rebote y sale fuera.
btfsc Motor ; Testea el último estado del Motor.
goto EstabaEncendido
EstabaApagado
bsf Motor ; Estaba apagado y lo enciende.
goto EsperaDejePulsar
EstabaEncendido
bcf Motor ; Estaba encendido y lo apaga.
EsperaDejePulsar
btfss Pulsador_1 ; ¿Dejó de pulsar?. ¿(Pulsador)=1?
goto EsperaDejePulsar ; No. Espera que deje de pulsar.
; Pulsador 2.
btfsc Pulsador_2 ; ¿Pulsador presionado?, ¿(Pulsador)=0?
goto Fin ; No. Vuelve a leerlo.
call Retardo_20ms ; Espera que se estabilicen los niveles de tensión.
btfsc Pulsador_2 ; Comprueba si es un rebote.
goto Fin ; Era un rebote y sale fuera.
btfsc Motor ; Testea el último estado del Motor.
goto EstabaEncendido2
EstabaApagado2
bsf Motor ; Estaba apagado y lo enciende.
goto EsperaDejePulsar2
EstabaEncendido2
bcf Motor ; Estaba encendido y lo apaga.
EsperaDejePulsar2
btfss Pulsador_2 ; ¿Dejó de pulsar?. ¿(Pulsador)=1?
goto EsperaDejePulsar2 ; No. Espera que deje de pulsar.
; Pulsador 3.
btfsc Pulsador_3 ; ¿Pulsador presionado?, ¿(Pulsador)=0?
goto Fin ; No. Vuelve a leerlo.
call Retardo_20ms ; Espera que se estabilicen los niveles de tensión.
btfsc Pulsador_3 ; Comprueba si es un rebote.
goto Fin ; Era un rebote y sale fuera.
btfsc Motor ; Testea el último estado del Motor.
goto EstabaEncendido
EstabaApagado3
bsf Motor ; Estaba apagado y lo enciende.
goto EsperaDejePulsar3
EstabaEncendido3
bcf Motor ; Estaba encendido y lo apaga.
EsperaDejePulsar3
btfss Pulsador_3 ; ¿Dejó de pulsar?. ¿(Pulsador)=1?
goto EsperaDejePulsar3 ; No. Espera que deje de pulsar.
Fin
goto Principal
; ZONA DE SUBRRUTINAS ****************************************************************
Retardo_20ms
cblock
RAM
RAM_1
endc
Delay
;199993 cycles
movlw 0x3E
movwf RAM
movlw 0x9D
movwf RAM_1
Delay_0
decfsz RAM, f
goto $+2
decfsz RAM_1, f
goto Delay_0
;3 cycles
goto $+1
nop
;4 cycles (including call)
return
END