Tengo dudas de como hacer una subrutina de tiempo.
Mis compañeros de clase me pasaron una, pero estoy seguro de que no esta bien porque el código no se ejecuta como debe de ser.
Les adjunto el código para que me ayuden a ver cual es el problema.
De antemano se los agradezco mucho.
...
Mis compañeros de clase me pasaron una, pero estoy seguro de que no esta bien porque el código no se ejecuta como debe de ser.
Les adjunto el código para que me ayuden a ver cual es el problema.
De antemano se los agradezco mucho.
Código:
LIST P=16F84
#INCLUDE P16F84.INC
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CONTA1 EQU 0CH
CONTA2 EQU 0DH
CONTA3 EQU 0EH
ORG 00H
BSF STATUS,RP0
MOVLW 0FH
MOVWF PORTA
MOVLW 00H
MOVWF PORTB
BCF STATUS,RP0
CERO MOVLW 81H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 42H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
COMP1 BTFSS PORTA,2
GOTO SIGUE
GOTO DOS
SIGUE MOVLW 24H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 18H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 24H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
BTFSS PORTA,1
GOTO SIGUE2
GOTO UNO
SIGUE2 MOVLW 42H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
BTFSS PORTA,3
GOTO CERO
GOTO TRES
UNO MOVLW 1H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 2H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
BTFSS PORTA,2
GOTO SIGUE3
GOTO DOS
SIGUE3 MOVLW 4H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 8H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 10H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 20H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 40H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 80H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
BTFSS PORTA,3
GOTO SIGUE4
GOTO TRES
SIGUE4 MOVLW 40H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 40H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 20H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 10H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 8H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 4H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 2H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
MOVLW 1H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
BTFSS PORTA,0
GOTO UNO
GOTO CERO
DOS MOVLW 55H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
BTFSS PORTA,1
GOTO SIGUE5
GOTO UNO
SIGUE5 MOVLW 0AAH
MOVWF PORTB
MOVLW .10
CALL TIEMPO
BTFSS PORTA,3
GOTO IMG1
GOTO TRES
IMG1 BTFSS PORTA,0
GOTO DOS
GOTO CERO
TRES MOVLW 0FFH
MOVWF PORTB
MOVLW .10
CALL TIEMPO
BTFSS PORTA,0
GOTO SIGUE6
GOTO CERO
SIGUE6 MOVLW 00H
MOVWF PORTB
MOVLW .10
CALL TIEMPO
BTFSS PORTA,1
GOTO MAX2
GOTO UNO
MAX2 BTFSS PORTA,2
GOTO TRES
GOTO DOS
TIEMPO MOVWF CONTA3
LOOP3 MOVLW .130
MOVWF CONTA2
LOOP2 MOVLW 0FFH
MOVWF CONTA1
LOOP1 DECFSZ CONTA2,F
GOTO LOOP1
DECFSZ CONTA2,F
GOTO LOOP2
DECFSZ CONTA3
GOTO LOOP3
RETURN
END