Hola, tengo un programa en MPLAB creado para el pic 16f84A, el caso es que pretendo encender una barra de led secuencialmente con el ISIS.
EDITO-->Bueno, al final he echo otro código que vi por ahi y me funciona bien, si no fuera por que no se me encienden el primer diodo y el último XDDD
Ahí os dejo el código echo ¿ideas?
EDITO-->Bueno, al final he echo otro código que vi por ahi y me funciona bien, si no fuera por que no se me encienden el primer diodo y el último XDDD
Ahí os dejo el código echo ¿ideas?
LIST P=16F84A
INCLUDE<P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0x0C ;Comienzo de los registros de propósito general.
GuardaDato
Contador1
ENDC
ORG 0
bsf STATUS,5
movlW 0x00 ;PORTA y PORTB como salidas.
movwf PORTA
movwf PORTB
bcf STATUS,5
et1
movlw d'6' ;Nº de posiciones que hay en la tabla
movwf Contador1
inicio
movf Contador1,W ;Cargamos el acumulador con el valor
;que tenga Contador1.
call tabla ;Y saltamos a 'tabla'.
movwf PORTB ;Cargamos la PORTB con el valor
;devuelto por la tabla.
call Retardo_500ms ;Hacemos un retardo de 500ms.
decfsz Contador1 ;Decrementamos Contador1 y:
goto inicio ;Si no es '0' vuelve a 'inicio'
goto et1 ;Si es '0' va a 'et1' y vuelve a
;a empezar el proceso.
tabla ;Sumamos al contador de programa
addwf PCL,F ;el valor de Contador1.
retlw b'10000000' ;Contador de programa+0
retlw b'01000000' ;Contador de programa+1
retlw b'00100000' ;Contador de programa+2
retlw b'00010000' ;Contador de programa+3
retlw b'00001000' ;Contador de programa+4
retlw b'00000100' ;Contador de programa+5
retlw b'00000010'
retlw b'00000001'
INCLUDE <RETARDOS.INC>
END
Última edición: