Si esta bien, se como hacer retardos.. pero no como crear un retardo variable... Bueno amigos.... Ojala que me puedan ayudar.. Saludos desde Argentina.
. Aca les envio mi codigo para que vean como quiero hacer.
;-----------------------------------------
;Creado por José Imaz
;
; Formo la palabra JOSE IMAZ en el DISPLAY manejado por un PIC16F84A
ESTADO equ 0x03 ;Defino la variable "Status" para poder cambiarme entre los bancos de Memoria
SALIDA1 equ 0x06 ;Con esta variable hago referencia al puerto B del micro
PDel0 equ 0x0c ;Con esta variable me ocupo de ocupar un lugar en la ram para realizar el retardo que deseo (0x0c)
PDel1 equ 0x0d ;Con esta variable me ocupo de ocupar un lugar en la ram para realizar el retardo que deseo
PDel2 equ 0x1e ;Con esta variable me ocupo de ocupar un lugar en la ram para realizar el retardo que deseo
;-----------------------------------------------------------------------------------
org 0 ;ME POSICIONO AL PRINCIPIO DE LA MEMORIA
goto INICIO ;VOY AL INICIO DEL PROGRAMA
org 5 ;INDICIO DESDE DONDE EMPIEZO A USAR LA MEMORIA
;-----------------------------------------------------------------------------------
INICIO bsf ESTADO,5 ;COLOCO UN "1" A ESTADO, SELECCIONADO ASI EL BANCO-1 DE MEMORIA
movlw B"00000000" ; PONGO EN 0 LAS SALIDAS
movwf SALIDA1
bcf ESTADO,5 ;COLOCO UN "0" A ESTADO, SELECCIONADO BANCO-0 DE MEMORIA
;-----------------------------------------------------------------------------------
ENTRO
movlw B"00000000"
movwf SALIDA1
;-----------------------------------------------------------------------------------
;
EFECT1 movlw b"11111111"
movwf SALIDA1 ;COPIO EL DATO DE LA VARIABLE DE TRABAJO A LA SALIDA
;CONSIGUIENDO DE ESTA FORMA QUE SE ACTIVE LA PRIMER SALIDA PB0 (PIN-6)
;EN ESTA RUTINA FORMA LA LETRA "J" PATAS; 8 9 10 11
;LETRA J
movlw B"00111100"
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"00000000"
movwf SALIDA1
CALL SEG6
movlw B"00111100"
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"00000000"
movwf SALIDA1
CALL SEG6
movlw B"00111100"
movwf SALIDA1
CALL SEG6
CALL SEG6
;hago los mismo pero con la letra o
movlw B"01111110"
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"00000000"
movwf SALIDA1
CALL SEG6
movlw B"01111110"
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"00000000"
movwf SALIDA1
CALL SEG6
movlw B"01111110"
movwf SALIDA1
CALL SEG6
CALL SEG6
;LETRA S
movlw B"11011010"
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"00000000"
movwf SALIDA1
CALL SEG6
movlw B"11011010"
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"00000000"
movwf SALIDA1
CALL SEG6
movlw B"11011010"
movwf SALIDA1
CALL SEG6
CALL SEG6
;LETRA E
movlw B"11110010"
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"00000000"
movwf SALIDA1
CALL SEG6
movlw B"11110010"
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"00000000"
movwf SALIDA1
CALL SEG6
movlw B"11110010"
movwf SALIDA1
CALL SEG6
CALL SEG6
;PRESENTACION DE TODAS LAS LETRAS
movlw B"00111100" ;LETRA J
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"01111110" ;LETRA O
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"11011010" ;LETRA S
movwf SALIDA1
CALL SEG6
CALL SEG6
movlw B"11110010" ;LETRA E
movwf SALIDA1
CALL SEG6
CALL SEG6
;PRESENTACION DE TODAS LAS LETRAS pero con un segundo
movlw B"00111100" ;LETRA J
movwf SALIDA1
CALL SEG6
movlw B"01111110" ;LETRA O
movwf SALIDA1
CALL SEG6
movlw B"11011010" ;LETRA S
movwf SALIDA1
CALL SEG6
movlw B"11110010" ;LETRA E
movwf SALIDA1
CALL SEG6
;NUMEROS!!!
movlw B"01111110" ;NUMERO 0
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"00001100" ;NUMERO 1
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"10110110" ;NUMERO 2
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"10011110" ;NUMERO 3
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"11001100" ;NUMERO 4
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"11011010" ;NUMERO 5
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"11111010" ;NUMERO 6
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"00001110" ;NUMERO 7
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"11111110" ;NUMERO 8
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"11001110" ;NUMERO 9
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
;AHORA LA SECUENCIA 0303456
movlw B"01111110" ;NUMERO 0
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"10011110" ;NUMERO 3
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"01111110" ;NUMERO 0
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"10011110" ;NUMERO 3
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"11001100" ;NUMERO 4
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"11011010" ;NUMERO 5
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"11111010" ;NUMERO 6
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
;ahora 9 8 7 6 5 4 3 2 1
movlw B"11001110" ;NUMERO 9
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"00001110" ;NUMERO 7
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"11011010" ;NUMERO 5
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"10011110" ;NUMERO 3
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
movlw B"00001100" ;NUMERO 1
movwf SALIDA1
CALL SEG6
CALL SEG6
NOP
;POR ULTIMO 123456789 SIN NOP Y SIN A 0.5 SEG
movlw B"10110110" ;NUMERO 2
movwf SALIDA1
CALL SEG6
NOP
movlw B"10011110" ;NUMERO 3
movwf SALIDA1
CALL SEG6
NOP
movlw B"11001100" ;NUMERO 4
movwf SALIDA1
CALL SEG6
NOP
movlw B"11011010" ;NUMERO 5
movwf SALIDA1
CALL SEG6
NOP
movlw B"11111010" ;NUMERO 6
movwf SALIDA1
CALL SEG6
NOP
movlw B"00001110" ;NUMERO 7
movwf SALIDA1
CALL SEG6
NOP
movlw B"11111110" ;NUMERO 8
movwf SALIDA1
CALL SEG6
NOP
movlw B"11001110" ;NUMERO 9
movwf SALIDA1
CALL SEG6
NOP
;Y POR ULTIMOOOO CHAUUUU
movlw B"01110010" ;LETRA C
movwf SALIDA1
CALL SEG6
NOP
movlw B"11101100" ;LETRA H
movwf SALIDA1
CALL SEG6
NOP
movlw B"11101110" ;LETRA A
movwf SALIDA1
CALL SEG6
NOP
movlw B"01111100" ;LETRA U
movwf SALIDA1
CALL SEG6
NOP
;-------------------------------------------------------------------------------
;--- EMPIEZO LA SECUENCIA NUEVAMENTE
GOTO ENTRO
;----------------Le doy lugar a un nuevo retardo que permite el apagado por 0,5 seg. en un momento determinado---------------------------------------------
SEG6 movlw .239 ; 1 set numero de repeticion (B)
movwf PDel0 ; 1 |
PLoop1 movlw .232 ; 1 set numero de repeticion (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 ciclos delay
PDelL2 goto PDelL3 ; 2 ciclos delay
PDelL3 clrwdt ; 1 ciclo delay
decfsz PDel1, 1 ; 1 + (1) es el tiempo 0 ? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) es el tiempo 0 ? (B)
goto PLoop1 ; 2 no, loop
PDelL4 goto PDelL5 ; 2 ciclos delay
PDelL5 goto PDelL6 ; 2 ciclos delay
PDelL6 goto PDelL7 ; 2 ciclos delay
PDelL7 clrwdt ; 1 ciclo delay
return ; 2+2 Fin.
END ; DOY POR TERMINADO EL PROGRAMA.