Hola soy nuevo en los foros y también soy nuevo en la electrónica, me gustaría que me ayudaran con un error en el siguiente programa escrito para el PIC 16F84A en ASM
Este código se supone que va a servir para controlar un invernadero automatizado, en el establezco de RA0 a RA3 como puertos de entrada y todos los puertos de RB como salida. Las secuencias del 1 al 3 deben de reflejar las entradas de RA0 a RA2 en RB0 a RB2 respectivamente y la Secuencia_04 es para encender un motor a pasos. El problema que tengo es que una vez que RA0 se encuentra lo refleja en RB0 pero cuando lo bajo el LED de RB0 no cambia siempre se encuentra en alto.
Agradecería mucho su ayuda para solucionar este inconveniente, saludos.
Código:
----------------------------------------------------------------------------------------------------------------------------------
List p = 16f84
include "P16F84.INC"
org 0x00
goto Inicio
org 0x05
Inicio
CONTADOR_01 equ 0x0C
RETRASO_01 equ 0x0D
clrf PORTB
bsf STATUS,5
clrf TRISB
movlw b'00001111'
movwf TRISA
bcf STATUS,5
Ciclo movlw b'00000000'
movwf PORTB
btfsc PORTA,1
goto Secuencia_02
btfsc PORTA,2
goto Secuencia_03
btfsc PORTA,3
goto Secuencia_04
goto Ciclo
Secuencia_01
movlw b'00000001'
movwf PORTB
goto Ciclo
Secuencia_02
movlw b'00000010'
movwf PORTB
goto Ciclo
Secuencia_03
movlw b'00000100'
movwf PORTB
goto Ciclo
Secuencia_04
movlw b'00100000'
movwf PORTB
movlw #255
movwf RETRASO_01
Tiempo_01
call Rutina_01
call Rutina_01
call Rutina_01
call Rutina_01
call Rutina_01
decfsz RETRASO_01
goto Tiempo_01
movlw b'01000000'
movwf PORTB
movlw #255
movwf RETRASO_01
Tiempo_02
call Rutina_01
call Rutina_01
call Rutina_01
call Rutina_01
call Rutina_01
decfsz RETRASO_01
goto Tiempo_02
movlw b'00001000'
movwf PORTB
movlw #255
movwf RETRASO_01
Tiempo_03
call Rutina_01
call Rutina_01
call Rutina_01
call Rutina_01
call Rutina_01
decfsz RETRASO_01
goto Tiempo_03
movlw b'00010000'
movwf PORTB
movlw #255
movwf RETRASO_01
Tiempo_04
call Rutina_01
call Rutina_01
call Rutina_01
call Rutina_01
call Rutina_01
decfsz RETRASO_01
goto Tiempo_04
goto Ciclo
goto Ciclo
Rutina_01 movlw #255
movwf CONTADOR_01
Retrasar decfsz CONTADOR_01,1
goto Retrasar
return
end
---------------------------------------------------------------------------------------------------------------------------------
Este código se supone que va a servir para controlar un invernadero automatizado, en el establezco de RA0 a RA3 como puertos de entrada y todos los puertos de RB como salida. Las secuencias del 1 al 3 deben de reflejar las entradas de RA0 a RA2 en RB0 a RB2 respectivamente y la Secuencia_04 es para encender un motor a pasos. El problema que tengo es que una vez que RA0 se encuentra lo refleja en RB0 pero cuando lo bajo el LED de RB0 no cambia siempre se encuentra en alto.
Agradecería mucho su ayuda para solucionar este inconveniente, saludos.
Última edición por un moderador: