Hola Chic@s,
voy a lanzaros una pregunta que es probable que a alguno os haya pasado.
Despues de mucho pelear para poder armar un programador para el 16f877, resulta que con un programa tan sencillo como parpadear el puerto B, mi pic entrega salidas aleatorias, eso si, anula los puertos que tengo conectados (en mi caso con diodos) y enciende el resto, pero no parpadea.
¿¿¿Podeis darme alguna pista??
un millon de gracias.
os dejo el programa para confirmar que no he metido la pata.
;Programa para el parpadeo de un puerto copleto
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
list p=16f877
include <p16f877.inc>
ADDR_L equ 0x20
DATA_L equ 0x21
contador
org 0x00
nop
nop
bsf STATUS,RP0 ; ir al banco 1
bcf STATUS,RP1
clrf TRISA ;Configuracion de puertosTODOS COMO SALIDAS .
clrf TRISB
clrf TRISC
clrf TRISD
clrf TRISE
movlw b'00000110' ; TODAS LAS SALIDAS DIGITALES
movwf ADCON1
_inicio
movlw b'11111111' ; configuracion de 1 a la salida
movwf PORTB ; mueve el contenido de W al puerto B
call _retardo_
clrf PORTB
call _retardo_
goto _inicio
;**** Demora ****
_retardo_
movlw 0x28 ;
movwf contador ; Iniciamos contador1.-
Repeticion
decfsz contador,1 ; Decrementa Contador1.-
goto Repeticion ; Si no es cero repetimos ciclo.-
return ; Regresa de la subrutina.-
end
voy a lanzaros una pregunta que es probable que a alguno os haya pasado.
Despues de mucho pelear para poder armar un programador para el 16f877, resulta que con un programa tan sencillo como parpadear el puerto B, mi pic entrega salidas aleatorias, eso si, anula los puertos que tengo conectados (en mi caso con diodos) y enciende el resto, pero no parpadea.
¿¿¿Podeis darme alguna pista??
un millon de gracias.
os dejo el programa para confirmar que no he metido la pata.
;Programa para el parpadeo de un puerto copleto
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
list p=16f877
include <p16f877.inc>
ADDR_L equ 0x20
DATA_L equ 0x21
contador
org 0x00
nop
nop
bsf STATUS,RP0 ; ir al banco 1
bcf STATUS,RP1
clrf TRISA ;Configuracion de puertosTODOS COMO SALIDAS .
clrf TRISB
clrf TRISC
clrf TRISD
clrf TRISE
movlw b'00000110' ; TODAS LAS SALIDAS DIGITALES
movwf ADCON1
_inicio
movlw b'11111111' ; configuracion de 1 a la salida
movwf PORTB ; mueve el contenido de W al puerto B
call _retardo_
clrf PORTB
call _retardo_
goto _inicio
;**** Demora ****
_retardo_
movlw 0x28 ;
movwf contador ; Iniciamos contador1.-
Repeticion
decfsz contador,1 ; Decrementa Contador1.-
goto Repeticion ; Si no es cero repetimos ciclo.-
return ; Regresa de la subrutina.-
end