Hola de nuevo.
Pues en cuanto a lo del cristal, la verdad es que no hay nada nuevo. He probado con otro pic y tampoco funciona, pero como os dije, al haber comprado un oscilador y funcionar bien con éste, de momento no le doy mucha importancia puesto que me corre más prisa poder terminar un pequeño proyecto que tengo entre manos.
Precisamente para ese pequeño proyecto quería pedirles otra vez su ayuda.
Les comenté que quería hacer un letrero tipo POV. Pues después de unos cuantos fallos he conseguido avanzar hasta un punto en el que no consigo salir.
La idea es que cada vez que yo gire la tira de led aparezca el mismo mensaje unas tres veces, y al contar esas tres veces, aparezca otro mensaje.
Pues bien, como es muy cansado hacer pruebas cada vez con el circuito haciéndolo girar porque he estado depurando muchas muchas veces, decicí hacer pruebas en el entrenador de pic's que les comenté que tenía.
Lo que hago es que de la tira de 8 led, primero hago que corran los 4 de la derecha y cuando hayan corrido 3 veces, entonces que corran los de la izquierda otras 3 veces, y luego vuelta a empezar o a otro tipo de secuendia.
En principio la cosa no es muy complicada porque no lo he hecho con rrf ni rlf ni nada de eso. De hecho, la secuencia de la derecha funciona perfecta. El problema es con la secuencia de la izquiera que nunca sale de ese bucle y he estado muchas horas intentando averiguar qué pasa pero no consigo salir de ahí.
Quería ponerles el código por si me pudieran echar una mano.
No sé por qué "CONTA2" nunca llega a cero y así volver al principio del todo a poner los dos registros a cero nuevamente.
Gracias y saludos.
; prueva para pov 4 primeros led y despues los otros 4 para intentar hacer ciclo de conteo.
;*****Establecimiento constantes ****
STATUS equ 03h
TRISB equ 86h
PORTB equ 06h
PDel0 equ 0Ch
PDel1 equ 0Fh
PDel2 equ 0Dh
CONTA1 equ 0Eh
CONTA2 equ 0Fh
;
;****Configuración del Puerto****
bsf STATUS,5 ; Cambiamos al banco 1Switch to Bank 1
movlw 00h ; Ponemos los pines del puerto B ...
movwf TRISB ; ...como salidas.
bcf STATUS,5 ; Volvemos al Banco 0.
Inicio1
clrf CONTA1
clrf CONTA2
movlw d'4'
movwf CONTA1
movlw d'4'
movwf CONTA2
Decrementa1
decfsz CONTA1,1
goto Inicio2
goto Decrementa2
Inicio2
movlw b'00000001'
movwf PORTB
call PDelay
movlw b'00000010'
movwf PORTB
call PDelay
movlw b'00000100'
movwf PORTB
call PDelay
movlw b'00001000'
movwf PORTB
call PDelay
movlw b'00000000'
movwf PORTB
call PDelay
goto Decrementa1
Decrementa2
decfsz CONTA2,1
goto Inicio3
goto Inicio1
Inicio3
movlw b'10000000'
movwf PORTB
call PDelay
movlw b'01000000'
movwf PORTB
call PDelay
movlw b'00100000'
movwf PORTB
call PDelay
movlw b'00010000'
movwf PORTB
call PDelay
goto Decrementa2
PDelay movlw .14 ; 1 set number of repetitions (C)
movwf PDel0 ; 1 |
PLoop0 movlw .72 ; 1 set number of repetitions (B)
movwf PDel1 ; 1 |
PLoop1 movlw .247 ; 1 set number of repetitions (A)
movwf PDel2 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
decfsz PDel2, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel1, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (C)
goto PLoop0 ; 2 no, loop
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 clrwdt ; 1 cycle delay
return ; 2+2 Done
end