Hola, estaba programando algo no importa que... y ya bien avanzado en el desarrollo descubro un problema con el puerto A. Asi que volví a lo basico y me di cuenta del siguiente problema:
Hice un programa super simple, que debiera encender un led, luego el
siguiente (sin apagar el primero), luego el que sigue (se supone que
ya hay tres encendidos) y asi.. hasta tener todos encendidos (exepto
el contreras del pin 4)
luego de la misma forma los va apagando.
osea algo asi
xxx00000
xxx00001
xxx00011
xxx00111
xxx01111
xxx11111
xxx11110
xxx11100
xxx11000
xxx10000
xxx00000
pero en lugar de eso, hace esto
xxx00000
xxx00010
xxx00100
xxx01000
xxx10000
xxx00000
xxx00000
xxx00000
xxx00000
xxx00000
xxx00000
El tris del puerto a, tambien lo probe cambiando de banco. pero es
igual el resultado
tengo dos uC y los dos responden de la misma manera. Ya me comí el datasheet no veo la solucion
Porfa cualquier aporte me servirá. GRACIAS
PS; El codigo fuente
list p=16f628A
pin0 equ 0x00
pin1 equ 0x01
pin2 equ 0x02
pin3 equ 0x03
pin4 equ 0x04
puertoA equ 0x05
trisA equ 85h
; RETARDOS
PDel0 equ 20h
PDel1 equ 21h
org 0h
;banco 1 rp1:rp0 = 0:1
movlw b"00000000"
tris puertoA
;===============================================================================================
;BLOQUE PRINCIPAL
;===============================================================================================
start
bsf puertoA,pin0
call PDelay
bsf puertoA,pin1
call PDelay
bsf puertoA,pin2
call PDelay
bsf puertoA,pin3
call PDelay
bsf puertoA,pin4
call PDelay
bcf puertoA,pin0
call PDelay
bcf puertoA,pin1
call PDelay
bcf puertoA,pin2
call PDelay
bcf puertoA,pin3
call PDelay
bcf puertoA,pin4
call PDelay
goto start
PDelay movlw .239 ; 1 set number of repetitions (B)
movwf PDel0 ; 1 |
PLoop1 movlw .232 ; 1 set number of repetitions (A)
movwf PDel1 ; 1 |
PLoop2 clrwdt ; 1 clear watchdog
PDelL1 goto PDelL2 ; 2 cycles delay
PDelL2 goto PDelL3 ; 2 cycles delay
PDelL3 clrwdt ; 1 cycle delay
decfsz PDel1, 1 ; 1 + (1) is the time over? (A)
goto PLoop2 ; 2 no, loop
decfsz PDel0, 1 ; 1 + (1) is the time over? (B)
goto PLoop1 ; 2 no, loop
PDelL4 goto PDelL5 ; 2 cycles delay
PDelL5 goto PDelL6 ; 2 cycles delay
PDelL6 goto PDelL7 ; 2 cycles delay
PDelL7 clrwdt ; 1 cycle delay
return ; 2+2 Done
end